学生宿舍管理系统oracle数据库设计 - 图文 下载本文

学生宿舍管理系统数据库设计

1. 系统需求分析阶段

1.1.2 需求分析阶段的任务

(1)处理对象:

系统要处理的对象包括宿舍楼基本信息、学生基本信息、宿舍基本信息、楼道工作人员基本信息、宿舍保卫处基本信息、宿舍事故基本信息、物品出入基本信息等七个方面,各个对象包括信息如下所示(详细的数据见于数据字典):

1.宿舍楼基本信息(Dormitory):包括 宿舍楼编号、宿舍楼所在校区、宿舍楼再校区中区域、每一幢宿舍楼楼管处的电话、宿舍楼楼管员信息等方面,这样可以方便管理者对宿舍楼的管理,提高查询效率;

2.学生基本信息(Student):包括 学生编号、学生所在学院信息、学生姓名、学生性别、学生来自省份、学生出生日期、学生入学时间、学生所学专业、所在班级等方面的信息,可以方便学信息的查询和更新;

3.宿舍基本信息(Room,Fitment,FitmentDestruction,FitmentCompensate):宿舍基本信息包括四个数据结构(宿舍信息(Room),宿舍物品信息(Fitment),宿舍物品损坏信息(FitmentDestruction),宿舍损坏物品赔偿信息),每个数据结构中的数据项见数据字典;

4.楼道工作人员基本信息(Worker):包括 工作人员编号、工作人员姓名、工作类型、工资、性别、联系方式、工作时间等数据项,可以方便管理人员对宿舍楼道工人的任用、信息查询及更改;

5.宿舍保卫处基本信息(SafeGuard):包括保卫处名称、人员数目、负责人信息、联系电话等四方面的信息;

6.宿舍事故基本信息(Accident,AccidentResearch,AccidentCompensate):事故信息包括三个数据结构(事故信息、事故处理信息、事故赔偿信息),具体的数据项见数据字典; 物品出入基本信息(ArticalInOut):包括出入物品的学生信息、出入的物品信息、出入物品时的负责人信息、出入物品时间,尽量减少宿舍事故的发生,保障学生宿舍财产的安全。 (2)处理功能要求

系统主要完成一下几个功能: 1.宿舍楼基本信息查询与修改; 2.学生基本信息查询与更新;

3.每一幢宿舍楼中宿舍信息的查询与信息更新; 4.宿舍保卫处基本信息的查询和修改;

5.宿舍事故基本信息及事故处理信息的查询和修改; 6.宿舍楼物品出入审批及记录;

-2-

(3)安全性和完整性要求

安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过用户授权机制,欲用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。

完整性要求用于描述宿舍楼基本信息、学生基本信息、宿舍基本信息、楼道工作人员基本信息、宿舍保卫处基本信息、宿舍事故基本信息、物品出入基本信息中数据项能否为null,以及一些用户自定义完整性(符合实际要求),详细完整性要求见于系统的逻辑设计阶段。

1.1.3 需求分析阶段成果

(1)体会与收获

系统需求分析主要采取实地询问-记录和楼管处查询宿舍学生信息的方式,同时借鉴学长在做数据库开发这方面的经验。通过实地调查和询问,了解目前学生宿舍管理的现状,以及目前学生宿舍管理中一些问题,并对实际查询业务实地参与,了解了学生、楼管员、宿舍管理者、宿舍保卫人员对系统的信息处理要求,以及他(她)们对现存人工管理方式不能满足信息处理要求的苦恼。同时在调查中牵涉的许多的人际交流,恰当的询问方式,由于平时几乎没有做过这方面的调查,开始时有点胆怯和不知从何入手,但过了两三幢宿舍楼之后,开始的胆怯就感觉不到了。 (2)学生宿舍管理系统业务流程图

新生入住宿舍业务流程图:

-3-

查询业务流程图(查询宿舍学生信息、楼道工作人员信息、宿舍楼信息等):

毕业生离宿业务流程图:

-4-

楼道工作人员任用业务流程图:

宿舍楼物品出入业务流程图:

宿舍事故处理业务流程图:

-5-

(3)数据流程图

顶层数据流程图:

第2层数据流程图:从学生角度出发

第2层数据流程图:从管理者角度出发

图2.3 从管理者角度出发的2层数据流程图

-6-

第3层数据流程图:从新生角度出发

第3层数据流程图:从毕业生角度出发

第3层数据流程图:从宿舍楼物品出入出发

-7-

第3层数据流程图:从宿舍事故角度出入出发

第3层数据流程图:从楼道工作人员的任用角度出发

第3层数据流程图:从管理者和外来访客的角度出发

-8-

(4)数据字典

(a)数据项:系统涉及的数据项有71项

表1.1 数据项列表

数据项编号 DI-1 DI-2 DI-3 DI-4 DI-5 DI-6 DI-7 DI-8 DI-9 DI-10 DI-11 DI-12 DI-13 DI-14 DI-15 DI-16 DI-17 DI-18 DI-19 DI-20 DI-21

数据项名 StuNo DepName StuName StuSex StuHome StuBorth StuETime StuPerfect StuClass WorNo WorName WorType WorWage WorSex WorPhNo WorTime RNo RHeader ROne RTwo RThree

数据项含义 学生编号 学生所在学院 学生姓名 学生性别 学生来自省份 学生出生时间 学生入学时间 学生所在专业 学生所在班级编号 工作人员编号 工作人员姓名 工作类型 工作人员工资 工作人员性别 工作人员联系方式 工作人员工作时间 宿舍编号 舍长信息 宿舍学生信息 宿舍学生信息 宿舍学生信息

与其它数据项的关系

等于StuName 同上 同上 同上

存储结构 char(9) char(20) char(10) char(2) char(10) Date Date char(20) Int char(5) char(10) char(8) Int char(2) char(12) char(30) char(6) char(10) char(10) char(10) char(10)

别名 学号 学院 姓名 性别 祖籍 出生日期 入学时间 专业 编号 编号 姓名 工作类型 月工资 性别 电话 工作时间 舍号 舍长 舍员1 舍员2 舍员3 -9-

数据项编号 DI-22 DI-23 DI-24 DI-25 DI-26 DI-27 DI-28 DI-29 DI-30 DI-31 DI-32 DI-33 DI-34 DI-35 DI-36 DI-37 DI-38 DI-39 DI-40 DI-41 DI-42 DI-43 DI-44 DI-45 DI-46 DI-47 DI-48 DI-49 DI-50 DI-51 DI-52 DI-53 DI-54 DI-55 DI-56 DI-57 DI-58 DI-59

数据项名 RFour RFive RSix RGrade RDepart RPerfect RClass DorNo DorCampus DorLocation DorPhNo DorAdminist SGName SGWorNum SGHeader SGPhone FitName FitPrice FitNum FDFitment FDStudent FDRoom FDFitNum FCompFit FCompStu FCompMon FCompPrin FCompDate FCompNum AcNo AcType AcArtical AcArNum AcStu AcDate AcPrin AcStuPh AcVerify

数据项含义 宿舍学生信息 宿舍学生信息 宿舍学生信息 宿舍学生所属年级 宿舍学生所在学院 宿舍学生所学专业 学生所在班级编号 宿舍楼编号 宿舍楼所属校区 宿舍楼在校区位置 宿舍楼管处电话 宿舍楼楼管员信息 保卫处名称 保卫处人员总数 保卫处负责人信息 保卫处电话 宿舍物品名称 宿舍物品价格 每一种宿舍的数量 损坏物品信息 损坏的学生信息 损坏物品宿舍信息 损坏物品的数量 赔偿物品信息 需赔偿学生信息 赔偿价格 赔偿负责人信息 赔偿日期 赔偿物品数量 事故编号 事故类型 事故损失物品 事故损失物品数量 事故受害学生 事故发生日期 事故负责人信息 受害人联系方式 事故是否属实

与其它数据项的关系 同上 同上 同上

等于StuETime 等于DepName 等于StuPerfect 等于StuClass

等于WorNo

等于FitName 等于StuNo 等于RNo

等于FitName 等于StuNo

等于WorNo

等于StuNo

等于SGHeader

存储结构 char(10) char(10) char(10) char(4) char(20) char(20) char(2) smallint char(4) char(4) char(12) char(10) char(15) Int char(10) char(12) char(16) Float Int char(16) char(9) char(6) Int char(16) char(9) Float char(10) Date Int int char(10) char(30) Int char(9) Date char(15) char(12) Bool

别名 舍员4 舍员5 舍员6 年级 学院 专业 班级 宿舍楼号 校区 宿舍区位 电话 楼管员 名字 人员数目 负责人 电话 宿舍物品 价格 数量 物品名 学生 舍号 数量 物品名 学生 赔偿价格 负责人 日期 数量 编号 类型 物品名 数量 学生 日期 负责人 学生电话 核查 -10-

数据项编号 DI-60 DI-61 DI-62 DI-63 DI-64 DI-65 DI-66 DI-67 DI-68 DI-69 DI-70 DI-71 DI-72

数据项名 ARNo ARName ARPrin ARResult ACStu ACArtical ACDate ACPrin AIOStu AIOArtical AIOPrin AIODate AIONo

数据项含义 事故调查编号 事故调查名称 事故调查负责人 事故调查结果 事故赔偿学生信息 事故赔偿物品信息 事故赔偿日期 事故赔偿负责单位 要求物品出入学生 出入物品信息 出入物品审查人 出入物品日期 物品出入序号

与其它数据项的关系

等于SGHeader

等于StuNo

等于SGHeader 等于StuNo

等于WorNo

存储结构 char(4) char(15) char(10) Bool char(10) char(30) Date char(15) char(10) char(20) char(10) Date Int

别名 编号 调查 负责人 结果 学生 物品名 日期 负责单位 学生 物品名 负责人 日期 序号 (b)数据结构:

表1.2 数据结构列表

数据结 构编号 数据结构名

数据结构 含义

组成

DS-1 Student 宿舍学生信息

StuNo,DepName,StuName,StuSex,StuHome, StuBorth,StuETime,StuPerfect,StuClass WorTime,WorName,WorType, WorWage,WorSex,WorPhNo,WorNo RNo,RHeader,ROne, RClass,

DS-2 Worker 宿舍楼工作人员信息

DS-3 Room 宿舍信息 RThree,RFour,RFive,RSix,RGrade, RDepart,RPerfect,RTwo, DorNo,DorCampus,DorPhNo DorLocation,DorAdminist

SGName,SGWorNum,SGHeader,SGPhone FitName,FitPrice,FitNum

DS-4 Dormitory 宿舍楼信息

DS-5 DS-6

SafeGuard Fitment

宿舍保卫处信息 宿舍物品配备信息

DS-7 FitmentDestruction 宿舍物品损坏信息 FDFitment,FDStudent,FDRoom,FDFitNum

-11-

数据结 构编号 数据结构名

数据结构 含义

组成

DS-8 FitmentCompensate

宿舍损坏物品赔偿信息

FCompFit,FCompStu,FCompPrin, FCompDate,FCompNum

AcNo,AcType, AcStu,AcDate,

DS-9

Accident

宿舍事故注册信息

AcArtical,AcVerify,AcPrin, AcArNum,AcStuPh

DS-10

AccidentResearch

宿舍事故调查信息 事故损失物品赔偿信息

宿舍楼物品出入信息

AIOStu,AIOArtical,AIOPrin,AIODate,AIONo ARNo,ARName,ARPrin,ARResult ACStu,ACArtical,ACDate,ACPrin

DS-11 AccidentCompensate

DS-12 ArticalInOut

(5)处理逻辑描述(判定表或判定树)

表1.3 处理逻辑列表

判定条件 决策 宿舍基本信息模块、宿舍楼基本信息模块、学生基本信息模块、宿舍楼配备物品基本信息模块、宿舍事故基本信息模块、宿舍判断用户查询涉及的功能模块 楼物品出入基本信息模块、宿舍楼保卫处基本信息模块、楼道工人基本信息模块:先确定查询所涉及的功能模块;然后,确定要查询的内容,确定查询数据流向;最后显示查询结果。 宿舍基本信息模块、宿舍楼基本信息模块、学生基本信息模块、判断用户修改要涉及的模块,同时把相应的修改数据传到相应的模块之中 宿舍楼配备物品基本信息模块、宿舍事故基本信息模块、宿舍楼物品出入基本信息模块、宿舍楼保卫处基本信息模块、楼道工人基本信息模块:先确定更新所涉及的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。 2. 概念设计阶段

2.1 引言

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。

-12-

2.2 概念模型设计

(1)根据不同的对象,从第3层数据流程图(中层数据流程图)入手,分别画出分E-R图:

(a)从数据流程图图2.4 与图 2.5 抽象出的分E-R图:

图3.1 分E-R图1

图3.2 分E-R图2

图3.3 分E-R图3

(b)从数据流程图图2.6与图2.8 抽象出的分E-R图:

图3.4 分E-R图4

(c)从数据流程图图2.7 抽象出的分E-R图:

图3.5 分E-R图5

(2)各分E-R图中每个实体的属性如下所示:

学生:Student(StuNo,DepName,StuName,StuSex,StuHome,StuBorth,StuETime,

StuPerfect,StuClass);

宿舍:Room(RNo,RHeader,ROne,RClass,RThree,RFour,RFive,RSix,

RGrade,RDepart,RPerfect,RTwo);

宿舍楼:Dormitory(DorNo,DorCampus,DorLocation,DorPhNo,DorAdminist); 宿舍物品:Fitment(FitName,FitPrice,FitNum);

楼道工作人员:Worker(WorNo,WorName,WorType,WorWage,WorSex,

-13-

WorPhNo,WorTime);

保卫处:SafeGuard(SGName,SGWorNum,SGHeader,SGPhone); 各分E-R图中联系的属性如下所示:

物品出入:ArticalInOut(AIONo,AIOStu,AIOArtical,AIOPrin,AIODate); 宿舍物品处理:包含物品损坏和物品赔偿两个数据结构(将在逻辑设计阶段给出); 事故:包含宿舍事故注册、宿舍事故调查、事故损失物品赔偿三个数据结构(具体的

结构将

在系统逻辑设计阶段给出)。

(注:为了节省篇幅,实体与属性的关系没有用图形表示,实体的标识码用下划线划出。)

(3)合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R

图,

再消除不必要冗余,得到的基本E-R图如下所示:

2.3 新系统流程

新系统流程图:

-14-

3.逻辑设计阶段

3.1逻辑设计的任务和目标

以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务

3.2数据组织

3.2.1将E-R图转换为关系模型

由于宿舍楼与楼道工人的联系方式是1:n(一对多),可以将其之间的联系与n端实体楼道工人合并,宿舍楼与宿舍之间的联系、宿舍与学生之间的联系方式也是1:n,同样也将其之间的联系与n端实体宿舍、学生合并,而宿舍物品与学生、学生与楼道工作人员之间的联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,保卫

-15-

处与学生之间的联系是1:n(一对多),但是它们之间的联系事故则包含数据结构,为了便于模型优化,将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下:

楼道工人:Worker(WorNo,WorName,WorType,WorWage,WorSex,

WorPhNo,WorTime,DorNo,DorCampus,DorLocation);

宿舍楼:Dormitory(DorNo,DorCampus,DorLocation,DorPhNo,DorAdminist); 宿舍:Room(RNo,RHeader,ROne,RClass,RThree,RFour,RFive,RSix,

RGrade,RDepart,RPerfect,RTwo,DorNo,DorCampus,DorLocation);

宿舍物品:Fitment(FitName,FitPrice,FitNum,DorNo,DorCampus,DorLocation); 学生:Student(StuNo,DepName,StuName,StuSex,StuHome,StuBorth,StuETime,

StuPerfect,StuClass,RNo, DorNo,DorCampus,DorLocation);

保卫处:SafeGuard(SGName,SGWorNum,SGHeader,SGPhone);

物品出入:ArticalInOut(AIONo,StuNo,AIOArtical,AIOPrin,AIODate, DorNo,

DorCampus,DorLocation);

宿舍物品处理包含两个数据结构(宿舍物品损坏信息,宿舍物品损坏赔偿信息),基于表的各个属性都是原子项的考虑,现将宿舍物品处理分解为:宿舍物品损坏、宿舍损坏物品赔偿,具体如下:

宿舍物品损坏:FitmentDestruction(FitName,StuNo,RNo,FDFitNum, DorNo,

DorCampus,DorLocation);(消除命名冲突)

宿舍物品损坏赔偿:FitmentCompensate(FitName,StuNo,FCPrin,FCompDate,

FCompNum);(消除命名冲突)

宿舍事故包含三个数据结构(宿舍事故注册信息、宿舍事故调查信息、宿舍事故损失物品赔偿信息),同样基于表的原子性的考虑也将事故分解为:事故注册、事故调查、 事故赔偿,具体如下:

事故注册:Accident(AcNo,AcType, StuNo,AcDate,AcArtical,AcVerify,SGName,

AcArNum,AcStuPh);

事故调查:AccidentResearch(AcNo,ARName,SGName,ARResult);

事故赔偿:AccidentCompensate(AcNo,ACStu,AcArtical,ACDate,SGName);

(注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性,主属性与外键属性一起构成主码)

3.2.2模型优化

关系模式Worker,Dormitory,Fitment,SafeGuard,ArticalInOut,FitmentDestruction,FitmentCompensate,Accident,AccidentResearch,AccidentCompensate不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是宿舍关系模式(Room)中存在着一些不应该有的数据冗余,现将模型优化为:

Room(RNo,RHeader,RGrade,RDepart,RPerfect,DorNo,DorCampus,DorLocation);虽然Room中还存在一些数据冗余,但可以提高查询效率。

-16-

3.2.3数据库模式定义

表2.1 数据库模式定义表

编号

T-1 T-2 T-3 T-4 T-5 T-6 T-7 T-8 T-9 T-10 T-11 T-12

逻辑结构(基本表)定义

Worker(详见附录1-1) Dormitory(详见附录1-2) Room(详见附录1-3) Fitment(详见附录1-4) Student(详见附录1-5) SafeGuard(详见附录1-6) ArticalInOut(详见附录1-7) FitmentDestruction(详见附录1-8) FitmentCompensate(详见附录1-9) Accident(详见附录1-10)

AccidentResearch(详见附录1-11) AccidentCompensate(详见附录1-12)

完整性和安全性

(详见附录1-1) (详见附录1-2) (详见附录1-3) (详见附录1-4) (详见附录1-5) (详见附录1-6) (详见附录1-7) (详见附录1-8) (详见附录1-9) (详见附录1-10) (详见附录1-11) (详见附录1-12)

3.2.4用户子模式设计

表2.2 用户子模式设计(View)列表

编号

V-1 V-2 V-3 V-4 V-5 V-6 V-7 V-8 V-9 V-10 V-11 V-12

用户子模式(View) WorView DormView RoomView FitView StuView SGView ArIOView FDView FCView AccView ARView ACView

作用(共性:提供数据保密和安全保护机制)

便于查询和修改楼道工人的基本信息 方便宿舍楼的基本信息的查询、更新 以便于宿舍的基本信息的查询和更新 用于宿舍楼配备物品的基本信息的查询 便于查询和更改学生的基本信息 方便学生查询宿舍保卫处的基本信息 以便于物品出入的管理和信息的查询、更改 便于宿舍物品损坏的的登记及处理和信息的查询 查询损坏物品赔偿的基本信息,便于宿舍物品的管理 方便学生事故的注册及保卫人员对事故注册的查询 便于学生查询宿舍事故调查的基本信息 方便宿舍事故赔偿的信息查询和更新

3.3数据处理

系统功能模块图:

-17-

4.物理设计阶段

4.1物理设计阶段的目标与任务

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,

在这个阶段中要完成两大任务:

(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构; (2)对物理结构进行评价,评价的重点是时间和空间效率。

4.2数据存储方面

为数据库中各基本表建立的索引如下:

1. 由于基本表Room,Student的主码RNo,StuNo经常在查询条件和连接操作的连

接条件中出现,且它们的值唯一,考虑在两个属性上建立唯一性索引;

2. Dormitory的主码DorNo,DorCampus,DorLocation经常在查询条件中出现,且

它们的组合值唯一,考虑在它们之上建立组合索引;

3. 基本表Student的一属性StuName,经常在查询条件中出现,且经常出现在相等

的比较条件中,考虑在其之上建立聚簇索引;

4. 基本表Fitment、SafeGuard的属性值几乎不会有什么变化,更新率很低,可考虑

适当建立索引;

5. 基本表Worker,ArticalInOut,FitmentDestruction,FitmentCompensate,

Accident,AccidentResearch,AccidentCompensate的属性值经常发生变化,权衡系统为维护索引付出的代价,可考虑不建立索引,也可以适当建立索引。

4.3系统功能模块

-18-

4.3.1 楼道工人基本的信息查询和更新模块

将实现对楼道工人基本信息的查询和更新(修改、插入、删除)操作,方便于楼道工

人的任用和更换,具体的功能模块图如下:

图4.2 楼道工人基本信息的查询、更新功能模块图

(注:

表示系统给用户的信息,以下与此相同)

4.3.2 宿舍楼基本信息的查询和更新模块

将完成对宿舍楼基本信息的查询、更新(修改、插入、删除)操作,便于宿舍的集中

管理,具体的功能模块图如下所示:

-19-

图4.3 宿舍楼基本信息的查询、更新功能模块图

4.3.3 宿舍基本信息的查询和更新模块

将达到对宿舍基本信息的查询、更新(修改、插入、删除)操作的目的,具体的功能

模块图如下所示:

图4.4 宿舍基本信息的查询、更新功能模块图

-20-

4.3.4 学生基本信息的查询和更新模块

将完成对学生基本信息的查询和插入、删除、修改等更新操作,具体的功能模块如下

所示:

图4.5 宿舍学生基本信息的查询、更新功能模块图

4.3.5 宿舍物品的查询和更新模块

将实现对宿舍物品基本信息的查询、插入、删除、修改等操作,以方便于宿舍物品的

配备,具体的功能模块图如下:

-21-

图4.6 宿舍物品基本信息的查询、更新功能模块图

4.3.6 宿舍事故的查询和更新模块

将实现对宿舍事故的插入和更新操作,方便宿舍事故的快速处理,及时了解事故处理

的结果,具体的功能模块图如下:

图4.7 宿舍事故基本信息的查询、更新功能模块图

4.3.7 宿舍物品处理的查询和更新模块

将完成对宿舍物品处理基本信息的查询、插入、删除、修改等操作,方便于宿舍物品

的处理,具体的功能模块图如下所示:

图4.8 宿舍物品处理基本信息的查询、更新功能模块图

-22-

4.3.8 宿舍保卫处基本信息的查询和更新模块

将实现对宿舍保卫处基本信息的查询和更新(包括更改、插入、删除)操作,方便于

宿舍意外事故的处理,具体的功能模块图如下:

图4.9 宿舍楼保卫处基本信息的查询、更新功能模块图

5.数据库实施阶段

5.1建立数据库、数据表、视图、索引 5.1.1 建立数据库

create database Student_Dormitory_Management;

5.1.2 建立数据表

(1)楼道工人基本信息表的建立:

create table Worker(

WorNo char(5)

not null unique,

WorName char(10) not null, WorType char(8) not null, WorWage int not null, WorSex char(2) not null,

-23-

WorPhNo char(12) null, WorTime char(30) DorNo smallint

null, not null,

DorCampus char(4) not null, DorLocation char(4) not null, primary key(WorNo),

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation), check(WorWage >= 0),

check(WorSex = ‘男’ or WorSex = ‘女’));

(2)宿舍楼基本信息表的建立:

create table Dormitory(

DorNo smallint

not null,

DorCampus char(4) not null, DorLocation char(4) not null, DorPhNo char(12)

null,

DorAdminist char(10) null,

primary key(DorNo,DorCampus,DorLocation), check(DorNo>0 and DorNo<100));

(3)宿舍基本信息表的建立:

create table Room(

RNo char(6)

not null unique, null, not null, not null,

RHeader char(10) RGrade char(4) RDepart char(20) DorNo smallint

RPerfect char(20) not null,

not null,

DorCampus char(4) not null, DorLocation char(4) not null, primary key(RNo),

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation));

(4)宿舍楼配备物品基本信息表的建立:

create table Fitment(

FitName char(16) FitPrice float FitNum int

DorNo smallint

not null unique, not null, not null, not null, not null, not null,

-24-

DorCampus char(4) DorLocation char(4)

primary key(FitName),

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation));

(5)宿舍学生基本信息表的建立:

create table Student(

StuNo char(9)

not null unique, not null, not null, not null, not null, not null, not null, not null, not null, not null, not null, not null, not null,

DepName char(20) StuName char(10) StuSex char(2)

StuHome char(10) StuBorth Datetime StuETime Datetime StuPerfect char(20) StuClass int RNo char(6)

DorNo smallint

DorCampus char(4) DorLocation char(4) primary key(StuNo),

foreign key(RNo) references Room(RNo),

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation),

check(StuClass>0 and StuClass<=10));

(6)宿舍保卫处基本信息表的建立:

create table SafeGuard(

SGName char(15) SGWorNum int

SGHeader char(10) SGPhone char(12) primary key(SGName), check(SGWorNum > 0));

not null unique, not null, not null, null,

(7)宿舍楼物品出入基本信息表的建立:

create table ArticalInOut(

StuNo char(9) AIOPrin char(9) AIONo int

not null, null, not null, not null, not null unique, not null, not null,

-25-

AIOArtical char(16) AIODate datetime DorNo smallint DorCampus char(4)

DorLocation char(4) not null,

primary key(AIONo,AIODate),

foreign key(StuNo) references Student(StuNo), foreign key(AIOPrin) references Worker(WorNo),

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation),

check(AIONo > 0));

(8)宿舍配备物品损坏基本信息表的建立:

create table FitmentDestruction(

FitName char(16) StuNo char(9) RNo char(6)

FDFitNum int

not null unique, not null, not null, not null, not null, not null, not null,

DorNo smallint DorCampus char(4) DorLocation char(4)

foreign key(DorNo, DorCampus, DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation),

foreign key(FitName) references Fitment(FitName), foreign key(StuNo) references Student(StuNo), foreign key(RNo) references Room(RNo), check(FDFitNum >= 0));

(9)宿舍损坏配备物品赔偿基本信息表的建立:

create table FitmentCompensate(

FitName char(16) StuNo char(9) FCPrin char(15) FCompNum int

not null, not null, not null, not null,

FCompDate Datetime not null,

foreign key(FitName) references Fitment(FitName), foreign key(StuNo) references Student(StuNo), foreign key(FCPrin) references SafeGuard(SGName), check(FCompNum >= 0));

(10)宿舍事故注册基本信息表的建立:

create table Accident(

AcNo int

not null unique, not null, not null, not null, not null,

-26-

AcType char(10) StuNo char(9)

AcDate datetime AcArtical char(30)

AcVerify bool AcArNum int

null, not null, not null, not null,

SGName char(15) AcStuPh char(12)

primary key(AcNo,AcDate),

foreign key(StuNo) references Student(StuNo),

foreign key(SGName) references SafeGuard(SGName), check(AcArNum > 0),);

(11)宿舍事故调查基本信息表的建立:

create table AccidentResearch(

AcNo int

not null, not null, not null, not null,

ARName char(15) SGName char(15) ARResult bool

primary key(SGName),

foreign key(AcNo) references Accident(AcNo),

foreign key(SGName) references SafeGuard(SGName),);

(12)宿舍事故赔偿基本信息表的建立:

create table AccidentCopensate(

AcNo int

not null, not null, not null, not null, not null,

ACStu char(9)

AcArtical char(30) AcDate Datetime SGName char(15)

foreign key(AcNo) references Accident(AcNo), foreign key(ACStu) references Student(StuNo),

foreign key(SGName) references SafeGuard(SGName));

5.1.3 建立视图

(1)用于查询和更新楼道工人基本信息的视图定义如下:

create view WorView(编号,姓名,工作类型,工资,性别,联系方式,

as select * from Worker with check option;

工作时间,宿舍楼编号,校区,区位)

(2)方便于宿舍楼基本信息查询、更新的视图定义如下:

create view DormView (宿舍楼编号,校区,区位,楼管处电话,楼管)

as

-27-

select * from dormitory with check option;

(3)显示宿舍基本信息的视图定义如下:

create view RoomView (宿舍编号,舍长,年级,学院,专业,宿舍楼编号,

as select * from Room with check option;

校区,区位)

(4)可用于宿舍楼配备物品基本信息查询、更新的视图定义如下:

create view FitView (物品名,价格,数量,宿舍楼编号, 校区,区位)

as select * from Fitment with check option;

(5)用于查询和更新学生基本信息的视图定义如下:

create view StuView (学号,学院,姓名,性别,祖籍,出生日期,入学时间,

as select * from Student with check option;

专业,班级,宿舍编号, 宿舍楼编号,校区,区位)

(6)显示宿舍保卫处基本信息的视图定义如下:

create view SGView (名称,人员数目,负责人,电话)

as select *

from SafeGuard with check option;

(7)以便于物品出入管理和出入物品信息查询、更新的视图定义如下:

create view ArIOView (学号,出入物品,负责人,日期,序号,宿舍楼编号,

as select *

from ArticalInOut with check option;

校区,区位)

(8)便于宿舍配备物品损坏登记及损坏宿舍物品查询的视图定义如下:

create view FDView (物品名,学号,宿舍号,损坏数量,宿舍楼编号,校区,

as

-28-

区位)

select *

from FitmentDestruction with check option;

(9)用于查询损坏物品赔偿基本信息 ,便于宿舍物品管理的视图定义如下:

create view FCView (物品名,学号,负责人,日期,赔偿数量)

as select *

from FitmentCompensate with check option;

(10)方便学生事故的注册及保卫人员对事故注册查询的视图定义如下:

create view AccView (编号,事故类型,学号,日期,损失物品,属实,

as select * from Accident with check option;

负责单位,损失数量,学生联系方式)

(11)便于宿舍以外事故调查的视图定义如下:

create view ARView (编号,调查名称,负责单位,调查结果)

as select *

from AccidentResearch with check option;

(12)方便宿舍事故赔偿信息查询和更改的视图定义如下:

create view ACView (编号,学号,赔偿物品,日期,负责单位)

as select *

from AccidentCompensate with check option;

5.1.4 建立索引

create unique index StudentNo on Student(StuNo); create unique index RoomNo on Room(RNo); create unique index DormitoryNo_Campus_Location

on Dormitory(DorNo desc,DorCampus,DorLocation);

create cluster index StudentName on Student(StuName); create unique index FitmentName on Fitment(FitName); create unique index SafeGuardName on SafeGuard(SGName);

5.2数据入库

-29-

系统包括宿舍学生基本信息管理、楼道工人基本信息管理、宿舍楼基本信息管理、

宿舍基本信息管理、宿舍事故基本信息管理、宿舍楼物品出入基本信息管理、宿舍楼保卫处基本信息管理、宿舍配备物品及处理管理等八大功能模块,共有12张基本表,牵涉到大量数据的录入,又由于时间限制,采用事先在Excel中录入数据,然后使用SQL Server 2000数据导入/导出向导功能,直接将数据导入到相应的基本表中。当然,附录中也给出了各个基本表插入元组的存储功能,详细内容请参阅附录2。

5.3创建各个功能的存储过程

编号

P-1 P-2 P-3 P-4 P-5 P-6 P-7 P-8 P-9 P-10 P-11 P-12 P-13 P-14 P-15 P-16

系统共创建了16个存储过程,具体列表如下:

表3.1 创建的存储过程列表:

存储过程名称

p1_Worker_Insert p2_Dormitory_Insert p3_Room_Insert p4_Fitment_Inser p5_Student_Insert p6_SafeGuard_Insert p7_Artical_In_Out_Insert p8_FitmentDestruction_Insert p9_FitmentCompensate p10_Accident_Insert

p11_AccidentResearch_Insert p12_AccidentCompensate_Insert p13_Query_Worker p14_Query_Worker p15_Delete_Worker p16_Update_Worker

定义

详见附录2-1 详见附录2-2 详见附录2-3 详见附录2-4 详见附录2-5 详见附录2-6 详见附录2-7 详见附录2-8 详见附录2-9 详见附录2-10 详见附录2-11 详见附录2-12 详见附录2-13 详见附录2-14 详见附录2-15 详见附录2-16

作用

在Worker中插入一元组 在Dormitory中插入一元组 在Room中插入一元组 在Fitment中插入一元组 在Student中插入一元组 在SafeGuard中插入一元组 在ArticalInOut中插入一元组 在FitmentDestruction中插入一元组 在FitmentCompensate中插入一元组 在Accident中插入一元组

在AccidentResearch中插入一元组 在AccidentCompensate中插入一元组 在Worker中匹配(WorNo)查询 在Worker中匹配(WorName)查询 在Worker中删除元组 在Worker中更新操作

(其他表的查询、修改、删除与Worker表的大致相同,这里不再具体列出)

6.系统调试和测试

学生宿舍管理系统的测试主要采用黑盒测试和白盒测试的方法,具体的说黑盒测

试主要采用以下两种测试方法:

1. 已知系统的功能设计规格,进行测试证明每个实现了的功能是否符合要求; 2. 已知系统的内部工作过程,通过测试证明每种内部操作是否符合设计规格要求,

所有内部成分是否通过检验。

该学生管理系统主要采用黑盒测试的第一种测试方法,具体的测试如下:

(1)查看各个基本表中的数据(借助与视图查询)

-30-

(a)查看Worker表中的数据:

(b)查看Dormitory表中的数据:

(c)其他表的数据的查看操作显示见于附录3-1 (2)检测各个存储过程的功能:

(a)验证存储过程p1_Worker_Insert及p15_Delete_Worker的功能:

-31-

(b)验证存储过程p1_Worker_Insert及p16_Delete_Worker的功能:

-32-

(c)验证其它存储过程的功能见于附录3-2

附录1 数据库逻辑结构定义

1.楼道工人(Worker)基本信息表,用于记录楼道工人的基本信息:

表2.3 楼道工人基本信息表

属性名

WorNo WorName WorType WorWage WorSex WorPhNo WorTime DorNo DorCampus DorLocation

数据类型

char(5) char(10) char(8) Int char(2) char(12) char(30) smallint char(4) char(4)

取值范围

00000~99999 大于500(元/月) 男、女 00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 否 否 否 否 否 否 是 是 是

完整性

Not null Not null Not null Not null Not null Null Null Not null Not null Not null

2.宿舍楼(Dormitory)基本信息表,用于记录宿舍楼的基本信息:

表2.4 宿舍楼基本信息表

属性名

DorNo DorCampus DorLocation DorPhNo DorAdminist

数据类型

smallint char(4) char(4) char(12) char(10)

取值范围

00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 是 是 否 否

完整性

Not null Not null Not null Null Null

3.宿舍(Room)基本信息表,用于记录宿舍的基本信息:

表2.5 宿舍基本信息表

属性名

RNo RHeader RGrade RDepart RPerfect DorNo DorCampus

数据类型

char(6) char(10) char(4) char(20) char(20) smallint char(4)

取值范围

01-001~99-999 00~99

四面八方其中之一

是否是主属性或外键 是 否 否 否 否 是 是

完整性

Not null Null Not null Not null Not null Not null Not null

-33-

DorLocation

char(4)

四面八方其中之一

Not null

4.宿舍楼配备物品(Fitment)基本信息表,用于记录宿舍楼配备物品的基本信息:

表2.6 宿舍配备物品基本信息

属性名

FitName FitPrice FitNum DorNo DorCampus DorLocation

数据类型 取值范围

char(16) float Int smallint char(4) char(4)

大于0 大于0 00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 否 否 是 是 是

完整性

Not null Not null Not null Not null Not null Not null

5.宿舍学生(Student)基本信息表,用于记录宿舍学生的基本信息:

图2.7 宿舍学生基本信息

属性名

StuNo DepName StuName StuSex StuHome StuBorth StuETime StuPerfect StuClass RNo DorNo DorCampus DorLocation

数据类型

char(9) char(20) char(10) char(2) char(10) datetime datetime char(20) int char(6) smallint char(4) char(4)

取值范围

00000000~999999999 男、女

大于0小于10 01-001~99-999 00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 否 否 否 否 否 否 否 否 是 是 是 是

完整性

Not null Not null Not null Not null Not null Not null Not null Not null Not null Not null Not null Not null Not null

6.宿舍保卫处(SafeGuard)基本信息表,用于记录保卫处的基本信息:

图2.8 宿舍保卫处基本信息

属性名

SGName SGWorNum SGHeader SGPhone

数据类型 取值范围

char(15) int char(10) char(12)

大于0

是否是主属性或外键 是 否 否 否

完整性

Not null Not null Not null Null

7.宿舍楼物品出入(ArticalInOut)基本信息表,用于记录物品出入的基本信息:

图2.9 宿舍楼物品出入基本信息

-34-

属性名

StuNo AIOArtical AIOPrin AIODate AIONo DorNo DorCampus DorLocation

数据类型

char(9) char(16) char(9) datetime Int smallint char(4) char(4)

取值范围

00000000~999999999 大于0 00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 否 否 是 是 是 是 是

完整性

Not null Null Not null Not null Not null Not null Not null Not null

8.宿舍配备物品损坏(FitmentDestruction)基本信息表,用于记录物品损坏的基本信息:

图2.10宿舍配备物品损坏基本信息

属性名

FitName StuNo RNo FDFitNum DorNo DorCampus DorLocation

数据类型 取值范围

char(16) char(9) char(6) Int smallint char(4) char(4)

00000000~999999999 01-001~99-999 大于等于0 00~99

四面八方其中之一 四面八方其中之一

是否是主属性或外键 是 是 是 否 是 是 是

完整性

Not null Not null Not null Not null Not null Not null Not null

9.宿舍配备物品损坏赔偿(FitmentCompensate)基本信息表,记录损坏物品赔偿的基本信息:

图2.11 宿舍配备物品损坏赔偿基本信息

属性名

FitName StuNo FCPrin FCompDate FCompNum

数据类型

char(16) char(9) char(10) datetime int

取值范围

00000000~999999999

大于等于0

是否是主属性或外键 是 是 是 否 否

完整性

Not null Not null Not null Not null Not null

10.宿舍事故注册(Accident)基本信息表,用于记录宿舍事故注册的基本信息:

2.12 宿舍事故注册基本信息

属性名 AcNo AcType StuNo AcDate AcArtical

数据类型 int char(10) char(30) datetime char(30)

取值范围 0000~9999

00000000~999999999

是否是主属性或外键 是 否 是 是 否 完整性 Not null Not null Not null Not null Not null

-35-

属性名 AcVerify SGName AcArNum AcStuPh

数据类型 bool char(15) int char(12) 取值范围

大于等于0

是否是主属性或外键 否 是 否 否 完整性 Null Null Not null Null

11.宿舍事故调查(AccidentResearch)基本信息表,用于记录宿舍事故调查的基本信息:

图2.13 事故调查基本信息

属性名 AcNo ARName SGName ARResult

数据类型 int char(15) char(15) bool

取值范围 0000~9999

是否是主属性或外键 是 是 是 否 完整性 Not null Not null Not null Not null

12.宿舍事故赔偿(AccidentCompensate)基本信息表,用于记录宿舍事故赔偿的基本信息:

图2.14 宿舍事故赔偿基本信息

属性名 AcNo ACStu ACDate

数据类型 int char(10) datetime

取值范围 0000~9999

00000000~999999999

是否是主属性或外键 是 是 否 否 是 完整性 Not null Not null Not null Not null Not null

AcArtical char(30) SGName char(15)

-36-

附录2 存储过程定义

1.p1_Worker_Insert的定义:

CREATE PROCEDURE p1_Worker_Insert

@worker_no char(5), @worker_name char(10),

@work_type char(8),

@work_wage int, @worker_sex char(2), @work_time char(30), @dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4) as

insert into Worker

values(@worker_no, @worker_name, @work_type, @work_wage, @worker_sex,

@work_time, @work_time, @dormitory_no,@dormitory_campus, @dormitory_location);

2.p2_Dormitory_Insert的定义:

create procedure p2_Dormitory_Insert

@dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4), @dormitory_phone char(12), @dormitory_administer char(10) as

insert into Dormitory

values(@dormitory_no, @dormitory_campus, @dormitory_location,

@dormitory_phone, @dormitory_administer);

3.p3_Room_Insert的定义:

create procedure p3_Room_Insert

@room_no char(6), @room_header char(10), @roomer_grade char(4), @roomer_department char(20), @roomer_perfection char(20), @dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4)

-37-

as

insert into Room

values(@room_no, @room_header, @roomer_grade, @roomer_department,

@roomer_perfection, @dormitory_no, @dormitory_campus,

@dormitory_location);

4.p4_Fitment_Inser的定义:

create procedure p4_Fitment_Insert

@fitment_name char(16), @fitment_price float, @fitment_number int, @dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4) as

insert to Fitment

values(@fitment_name, @fitment_price, @fitment_number, @dormitory_no,

@dormitory_campus, @dormitory_location);

5.p5_Student_Insert的定义:

create procedure p5_Student_Insert

@student_no char(9), @department_name char(20), @student_name char(10), @student_sex char(2), @student_home char(10), @student_borth datetime, @student_enter_time datetime, @student_perfection char(20), @student_class int, @room_no char(6), @dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4) as

insert into Student

values(@student_no, @department_name, @student_name, @student_sex

, @student_home, @student_borth, @student_enter_time, @student_perfection, @student_class, @room_no, @dormitory_no, @dormitory_campus, @dormitory_location);

6.p6_SafeGuard_Insert的定义:

create procedure p6_SafeGuard_Insert

-38-

@safeguard_name char(15), @safeguard_worker_num int, @safeguard_header char(10), @safeguard_phone char(12) as

insert into SGName

values(@safeguard_name, @safeguard_worker_num, @safeguard_header,

@safeguard_phone);

7.p7_Artical_In_Out_Insert的定义:

create procedure p7_Artical_In_Out_InSert

@student_no char(9), @aio_artical char(16), @aio_principal char(9), @aio_date datetime, @aio_no int,

@dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4) as

insert into AIOArtical

values(@student_no, @aio_artical, @aio_principal, @aio_date,

@dormitory_no, @dormitory_campus, @dormitory_location);

8.p8_FitmentDestruction_Insert: 的定义

create procedure p8_FitmentDestruction_Insert

@fitment_name char(16), @student_no char(9), @room_no char(6), @fdf_num int,

@dormitory_no smallint, @dormitory_campus char(4), @dormitory_location char(4) as

insert to FitmentDestruction

values(@fitment_name, @student_no, @room_no, @fdf_num, @dormitory_no,

@dormitory_campus, @dormitory_location);

9.p9_FitmentCompensate的定义:

create procedure p9_FitmentCompensate

@fitment_name char(16), @stu_no char(9), @fc_principal char(10),

-39-

@fc_date datetime, @fc_num int, as

insert FitmentDestruction

values(@fitment_name, @stu_no, @fc_principal, @fc_date, @fc_num);

10.p11_Accident_Insert的定义:

create procedure p10_Accident_Insert

@ac_no int, @ac_type char(10), @stu_no char(30), @ac_date datetime, @ac_artical char(30), @ac_verify bool, @sg_name char(15), @ac_ar_num int,

@ac_stu_phone char(12) as

insert into Accident

values(@ac_no, @ac_type, @stu_no, @ac_date, @ac_artical, @ac_verify,

@sg_name, @ac_ar_num, @ac_stu_phone);

11.p11_AccidentResearch_Insert的定义:

create procedure p11_AccidentResearch_Insert

@ac_no int,

@ar_name char(15), @sg_name char(15), @ar_result bool as

insert into AccidentResearch

values(@ac_no, @ar_name, @sg_name, @ar_result);

12.p12_AccidentCompensate_Insert的定义:

create procedure p12_AccidentCompensate_Insert

@ac_no int, @ac_stu char(10), @ac_artical char(30), @ac_date datetime, @sg_name char(15) as

insert into AccidentCompensate

values(@ac_no, @ac_stu, @ac_artical, @ac_date, @sg_name);

13.p13_Query_Worker的定义:

-40-

create procedure p13_Query_Worker

@worker_no char(5) as select * from WorView

where 编号 = ltrim(@worker_no);

14.p14_Query_Worker的定义:

create procedure p14_Query_Worker

@worker_name char(10) as select * from WorView

where 姓名 like ltrim(@worker_name)+’%’;

15.p15_Delete_Worker的定义:

create procedure p15_Delete_Worker

@worker_no char(5) as delete from WorView

where 编号 = rtrim(ltrim(@worker_no));

16.p16_Delete_Worker的定义:

create procedure p16_Delete_Worker

@worker_name char(10)

as delete from WorView

where 姓名 like rtrim(ltrim(@worker_name));

-41-

附录3 数据查看和存储过程功能的验证

1.基本表的数据查看(基于视图查询):

1) 查看Room表中的数据:

2) 查看Fitment表中的数据:

3) 查看Student表中的数据:

-42-

4) 查看SafeGuard表中的数据:

5) 查看ArticalInOut表中的数据:

6) 查看FitmentDestruction表中的数据:

-43-

7) 查看FitmentCompensate表的数据:

8) 查看Accident表中的数据:

9) 查看AccidentResearch表中的数据:

-44-

10) 查看AccidentCompensate表中的数据:

2.存储过程功能的验证:

1) 存储过程p2_Dormitory_Insert功能的验证:

-45-

2) 存储过程p3_Room_Insert功能的验证:

3) 存储过程p4_Fitment_Insert功能的验证:

(注:由于篇幅限制,这里仅给出了其中几个存储过程功能的验证)

-46-

附录4 所有的SQL运行语句

create database Student_Dormitory_Management;

create table Dormitory(

create table Worker(

WorNo char(5)

not null unique,

DorNo smallint

not null,

DorCampus char(4) not null, DorLocation char(4) not null, DorPhNo char(12) null, DorAdminist char(10) not null,

primary key(DorNo,DorCampus,DorLocation), check(DorNo>0 and DorNo<100));

WorName char(10) not null, WorType char(8) not null, WorWage int

not null,

WorSex char(2) not null, WorPhNo char(12) WorTime char(30) DorNo smallint

null, null,

not null,

DorCampus char(4) not null, DorLocation char(4) primary key(WorNo),

foreign key(DorNo,DorCampus,DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation),

not null,

check(WorWage >= 0),

check(WorSex = '男' or WorSex = '女'));

create table Room(

RNo char(6)

not null unique,

null, not null,

RHeader char(10) RGrade char(4)

RDepart char(20) not null, RPerfect char(20) DorNo smallint

not null,

not null,

DorCampus char(4) not null, DorLocation char(4)

not null,

-47-

create table Fitment(

create table Student(

create table SafeGuard(

SGName char(15) SGWorNum int SGHeader char(10)

not null unique,

StuNo char(9)

not null unique, not null, not null, not null,

FitName char(16) FitPrice float FitNum int DorNo smallint

not null unique, not null, not null,

not null, not null, not null,

primary key(RNo),

foreign key(DorNo,DorCampus,DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation));

DorCampus char(4)

DorLocation char(4) primary key(FitName),

foreign key(DorNo,DorCampus,DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation));

DepName char(20) StuName char(10) StuSex char(2)

StuHome char(10) not null,

not null,

StuBorth DATETIME

StuETime DATETIME not null, StuPerfect char(20) StuClass int RNo char(6) DorNo smallint

not null, not null,

not null,

not null, not null, not null,

DorCampus char(4)

DorLocation char(4) primary key(StuNo),

foreign key(RNo) references Room(RNo),

foreign key(DorNo,DorCampus,DorLocation) references

Dormitory(DorNo,DorCampus,DorLocation),

check(StuClass>0 and StuClass<=10));

not null,

not null,

-48-

create table ArticalInOut(

create table FitmentDestruction(

create table FitmentCompensate(

create table Accident(

AcNo int

not null unique,

FitName char(16) StuNo char(9)

not null,

not null,

FitName char(16) StuNo char(9) RNo char(6) FDFitNum int

not null unique,

not null,

StuNo char(9)

not null, null,

SGPhone char(12) primary key(SGName), check(SGWorNum > 0));

null,

AIOArtical char(16) AIOPrin char(5) AIODate datetime AIONo int

not null,

not null,

not null unique,

primary key(AIONo,AIODate),

foreign key(StuNo) references Student(StuNo), foreign key(AIOPrin) references Worker(WorNo), check(AIONo > 0));

not null,

not null,

foreign key(FitName) references Fitment(FitName), foreign key(StuNo) references Student(StuNo), foreign key(RNo) references Room(RNo), check(FDFitNum >= 0));

FCPrin char(15) not null,

FCompDate Datetime not null, FCompNum int

not null,

foreign key(FitName) references Fitment(FitName), foreign key(StuNo) references Student(StuNo), foreign key(FCPrin) references SafeGuard(SGName), check(FCompNum >= 0));

AcType char(10) StuNo char(9)

not null,

not null,

-49-

create table AccidentResearch(

create table AccidentCompensate(

create view WorView(编号,姓名,工作类型,工资,性别,联系方式,工作时间,宿舍楼编号,校区,区位)

create view DormView (宿舍楼编号,校区,区位,楼管处电话,楼管)

as select * from dormitory

-50-

as select * from Worker with check option

AcNo int

not null, not null, not null,

AcNo int

not null, not null, not null,

AcDate datetime AcArtical char(30) AcVerify char(5) SGName char(15) AcArNum int

not null,

not null,

not null,

not null, not null, not null,

AcStuPh char(12)

primary key(AcNo,AcDate),

foreign key(StuNo) references Student(StuNo),

foreign key(SGName) references SafeGuard(SGName), check(AcArNum > 0));

ARName char(15) SGName char(15) ARResult char(5) primary key(SGName),

not null,

foreign key(AcNo) references Accident(AcNo),

foreign key(SGName) references SafeGuard(SGName));

ACStu char(9)

AcArtical char(30) AcDate Datetime SGName char(15)

not null,

not null,

foreign key(AcNo) references Accident(AcNo), foreign key(ACStu) references Student(StuNo),

foreign key(SGName) references SafeGuard(SGName));