学生宿舍管理系统数据库设计文档.docx
《学生宿舍管理系统数据库设计文档.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统数据库设计文档.docx(13页珍藏版)》请在冰豆网上搜索。
学生宿舍管理系统数据库设计文档
学生宿舍管理系统的设计与实现
数据库设计说明书
版本:
1.0
文档信息及版本历史
文档信息
项目名称
学生宿舍管理系统的设计与实现
文档名称
学生宿舍管理系统数据库设计说明书
存储位置
版本
作者/修改者
日期
描述
目录
1引言2
1.1编写目的2
1.2数据库命名约定3
1.3参考资料3
2数据库环境说明3
3数据库的命名规则4
4概要设计4
5逻辑设计6
6物理设计7
6.1确定关系模型的存取方法7
6.2确定数据库的存储结构7
7存储过程、函数及触发器的设计7
8安全性设计8
8.1用户帐号密码的加密方法8
8.2角色与权限8
9数据库实施8
1引言
1.1编写目的
本文档是学生宿舍管理系统概要设计文档的组成部分,编写数据库设计文档的目的是:
明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《MySQL数据库设计和开发规范》。
本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。
术语表
定义系统或产品中涉及的重要术语,为读者在阅读文档时提供必要的参考信息。
序号
术语或缩略语
说明性定义
1
J2EE
Java2Platform,EnterpriseEdition(Java2平台企业版)的缩写
2
HTTP
HypertextTransferProtocol超文本传输协议
3
BPM
BackPeriodManage(后期管理)的缩写
4
LM
LoginManage(登录管理)的缩写
1.2数据库命名约定
前缀
说明
PK
表示主键
UK
表示唯一键
FK
表示外键
UI
表示唯一索引
NUI
表示非唯一索引
1.3参考资料
资料名称
作者
文件编号、版本
资料存放地点
《MYSQL程序设计》
吴玲林
《JSP程序设计》
金静梅
《JavaWeb开发实战经典》
李兴华
2数据库环境说明
数据库实例
数据库管理系统
数据库部署环境
数据库设计工具
数据库存放位置
说明
实例名,文件名
MySql,版本:
4.0
软硬件、网络环境
pb,visio,rose
"D:
\MySQL"
实例用途说明
3数据库的命名规则
本数据库设计完全按照《MySQL数据库设计规范》命名。
4概要设计
数据库设计人员根据根据需求分析文档,抽象出系统实体及实体之间的联系,画出实体属性图及实体联系图(E_R图)
实体属性图:
图4-1系统管理员实体及其属性图
图4-2楼宇管理员实体及其属性图
图4-3学生实体及其属性图
图4-4楼宇实体及其属性图
楼宇E-R图
宿舍E-R图:
总体E-R图
5逻辑设计
学生、宿管、管理员关系表:
属性名
储存代码
类型
长度
备注
是否为主键
学号
Sno
char
20
住宿学生的学号
primarykey
姓名
Sname
Char
20
住宿学生的姓名
性别
Ssex
Char
4
年龄
Sage
int
10
学生年龄
专业
Sdept
Char
40
所在专业
宿舍楼
Dbuilding
Char
10
所在宿舍楼
宿舍
属性名
储存代码
类型
长度
备注
是否为主键
宿舍楼
Dbuilding
Char
10
所在宿舍楼
宿舍号
Dno
Char
10
所在宿舍
primarykey
电话
Dphone
Char
20
宿舍号码
用户
属性名
储存代码
类型
长度
备注
是否为主键
用户ID
Usname
Char
20
primarykey
用户密码
Upassword
cha
20
用户类型
Utype
Tnyint
1
普通或系统管理员
视图:
学生信息视图(学号,姓名,性别,专业,宿舍楼,宿舍号,宿舍电话)
宿管信息视图(证件号,姓名,性别,电话,)
管理员信息视图(证件号,姓名,性别,电话,发布信息)
6物理设计
6.1确定关系模型的存取方法
确定数据库物理结构主要指确定数据的存放位置和存储结构,包括:
确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。
(1)确定数据的存放位置
为了提高系统性能,我们根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
即把宿舍表、楼宇表、楼宇管理员表作为数据稳定和存取频率较低部分;而把学生表作为数据易变和经常存取部分,分开存放。
(2)确定系统配置
在进行物理设计时,根据应用环境,将数据库的大小的参数值设置为:
事务日志的分配空间为2.00MB,文件按10百分比自动增长,并将文件增长限制为20.00MB;数据文件的分配空间为2.00MB,文件按10百分比自动增长,并将文件增长限制为20.00MB。
确定数据库的存储结构
1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
2、DBMS产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这些参数值,并且在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。
7存储过程、函数及触发器的设计
存储过程:
根据具体的业务逻辑确定输入参数个数,类型,确定对哪几个表进行何种作。
在定义存储过程时,要使用其完成单一、相对集中的任务,不要定义已由其它定义提供功能的过程。
存储过程:
1.在mysql客户端使用用户变量
mysql>SELECT'HelloWorld'into@x;
mysql>SELECT@x;
mysql>SET@y='GoodbyeCruelWorld';
mysql>select@y;
mysql>SET@z=1+2+3;
mysql>select@z;
2.在存储过程中使用用户变量
mysql>CREATEPROCEDUREGreetWorld()SELECTCONCAT(@greeting,'World');
mysql>SET@greeting='Hello';
mysql>CALLGreetWorld();
3.在存储过程间传递全局范围的用户变量
mysql>CREATEPROCEDUREp1() SET@last_procedure='p1';
mysql>CREATEPROCEDUREp2()SELECTCONCAT('Lastprocedurewas',@last_procedure);
mysql>CALLp1();
mysql>CALLp2();
触发器:
对于复杂业务规则使用触发器,简单的完整性规则通过约束实现。
8安全性设计
根据系统需要设计相关用户和角色,并赋予相关操作权限。
8.1用户帐号密码的加密方法
用户帐号采用MD5进行数据加密后再录入数据库,以防止任何地方密码的安全性要求。
8.2角色与权限
角色
可以访问的表与列
操作权限
系统管理员
可访问所有表
完全控制权限
楼宇管理员
可访问楼宇表
部分权限
学生信息表
部分权限
缺勤表
部分权限
学生
缺勤表
部分权限
9数据库实施
此阶段主要任务包括创建数据库,加载初始数据.
创建数据
USE[master]
GO
IFEXISTS(SELECT1FROMsysdatabasesWHERENAME=N'HkTemp')
BEGIN
DROPDATABASEHkTemp--如果数据库存在先删掉数据库
END
GO
CREATEDATABASEHkTemp
ON
PRIMARY--创建主数据库文件
(
NAME='HkTemp',
FILENAME='E:
\Databases\HkTemp.dbf',
SIZE=5MB,
MaxSize=20MB,
FileGrowth=1MB
)
LOGON--创建日志文件
(
NAME='HkTempLog',
FileName='E:
\Databases\HkTemp.ldf',
Size=2MB,
MaxSize=20MB,
FileGrowth=1MB
)
GO
创建表脚本
CREATEDATABASESM_USER_NAME_TOBEREPLACE_sysGOuseSM_USER_NAME_TOBEREPLACE_sysifexists(select*fromsysobjectswhereid=object_id(N'[dbo].[Group_permission]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[Group_permission]GOCREATETABLE[dbo].[Group_permission]([seed_key_id][int]IDENTITY(1,1)NOTNULL,[group_id][varchar](50)NOTNULL,[pmt_key_id][varchar](50)NOTNULL,[origin_key_id][varchar](50)NULL)ON[PRIMARY]GO
创建视图脚本
CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEWview_name[(column_list)]ASselect_statement[WITH[CASCADED|LOCAL]CHECKOPTION]
存储过程:
1.在mysql客户端使用用户变量
mysql>SELECT'HelloWorld'into@x;
mysql>SELECT@x;
mysql>SET@y='GoodbyeCruelWorld';
mysql>select@y;
mysql>SET@z=1+2+3;
mysql>select@z;
2.在存储过程中使用用户变量
mysql>CREATEPROCEDUREGreetWorld()SELECTCONCAT(@greeting,'World');
mysql>SET@greeting='Hello';
mysql>CALLGreetWorld();
3.在存储过程间传递全局范围的用户变量
mysql>CREATEPROCEDUREp1() SET@last_procedure='p1';
mysql>CREATEPROCEDUREp2()SELECTCONCAT('Lastprocedurewas',@last_procedure);
mysql>CALLp1();
mysql>CALLp2();
触发器:
在表添加一个记录的时候触发使另一个表也添加一条记录
mysql>delimiter//
->createtriggersitedata_ins2
->beforeinsertonuser
->foreachrow
->Begin
->Ifnotexists(select1fromuser_datawhered_id=new.id)then
->insertintouser_data(d_id,d_name)values(new.id,new.name);
->ENDIF;
->end;//
->delimiter;