教务管理信息系统的数据库设计实例.doc_第1页
教务管理信息系统的数据库设计实例.doc_第2页
教务管理信息系统的数据库设计实例.doc_第3页
教务管理信息系统的数据库设计实例.doc_第4页
教务管理信息系统的数据库设计实例.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*大学本科生设计性实验报告课程名称:数据库系统实验项目名称:教务管理信息系统数 据 库 设 计学生:姓名 学号 班级 * 班 第 组 *至*学年 第*学期* 年 *月 *日1. 引言 制作教务管理信息系统的目的是为学校学生提供一个方便创建教师、学生信息的工具,实现能够方便、快捷的查询信息。本系统功能概述:(1)管理员通过后台数据库管理系统插入、修改、删除课表,并把相应信息保存到数据库中。(2)用户浏览所有挂牌课课程,教师,学生的信息。(3)用户查询课程,系统输出该课程所有信息。(4)双击某门课程,即选中该门课,把这门课放到课表里(5)统计已选课程的学分。(6)根据用户查询的课程,系统排列出所有课表并输出。(7)用户增加、修改、删除查询的课程,系统从新排列所有课表并输出。(8)若管理员/用户输入信息有误,系统报错。4.1 1.1 编写目的 管理信息系统是进行信息的采集,存储,修改,维护,备份和使用的系统,它是随着管理科学和技术科学的发展而形成的.教务管理信息系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以教务管理信息系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的信息以及选课等。4.2 1.2 背景项目名称:教务管理信息系统(Educational administration information system简称EAIS)。 项目提出者:EAIS项目组织人员。项目开发者:EAIS项目开发小组。项目鉴定者:*老师和各位同学。项目开始时间:*。4.3 1.3定义列出本文件中用到的专门术语的定义和缩写词的源词组。1.所有的表名的命名规则:用该表的英文含义, 首字母必须大写,如学生表:Student. 2.所有的主键命名规则:用“表名_PK“表示.3.所有外键的命名规则:用”本表名_FK”表示.4.所有规则的命名规则:用具有实际含义的英文单词组成.5.所有索引的命名规则:用“表名_IX“表示.6.所有字段的命名规则: 用具有实际含义的英文单词组成.7所有的触发器名用”表名+Update/Insert/Delete”组成.8. 所有的变量、属性、约束和规则必须给出详细的注解.9. 所有的存储过程用pro+具有实际含义的英文单词组成.10. 所有的函数名用fun+具有实际含义的英文单词组成.2. 数据字典2.1学院表Depart用于说明学院基本信息中的记载2.1.1 字典结构属性名称属性类型是否允许空默认值约束含义DepartmentNoChar(3)NOT NULL主键学院编号DepartmentNameVarchar2(30)NULLunique学院名称ManagerVarchar2(20)NULL院长TelephoneVarchar2(20)NULL办公室电话2.2班级表Class用于记载班级基本信息2.2.1 字典结构 属性名称属性类型是否允许空默认值约束含义ClassNoChar(5)NOT NULL主键、届数流水号班级编号ClassNameVarchar2(30)NULLunique班级名称TeacherNoChar(8)NULL外键班主任编号MonitorNoChar(8)NULL外键班长编号DepartNoChar(3)NOT NULL外键学院编号2.3学生表Student用于存储学生基本信息2.3.1 字典结构属性名称属性类型是否允许空默认值约束含义StudentNoChar(8)NOT NULL主键、届数流水号学号StudentNameVarchar2(20)NOT NULL学生姓名SexVarchar2(2)NULL“男”只取“男”、“女”性别DepartmentNoChar(3)NOT NULL外键学院编号ClassNoChar(5)NOT NULL外键班级编号BirthdayDatedateNULL出生日期FamilyAddressVarchar2(30)NULLunique家庭地址QQVarchar2(20)NULLuniqueQQ号码TelephoneVarchar2(20)NULLunique移动电话StudentImageblobNULL相片StudentMemoVarchar2(300)NULL/*备注*/2.3.2索引create index Student_IX on Student(StudentNo) pctfree 30 tablespace MyspaceIndex;2.4教师表 Teacher 用于存储教师基本信息 2.4.1 字典结构属性名称属性类型是否允许空默认值约束含义TeacherNoChar(8)NOT NULL主键教师编号TeacherNameVarchar2(20)NOT NULL教师姓名SexVarchar2(2)NULL“男”只取“男”、“女”性别PositionVarchar2(20)NULL职称TelephoneVarchar2(20)NULL移动电话DepartmentNoChar(3)NOT NULL学院编号TeacherMemovarchar2(1000)NULL/*备注*/2.4.2索引create index Teacher_IX on Teacher(TeacherNO) pctfree 30 tablespace MyspaceIndex;2.5学生选课表Student_Coursing 用于存储学生所选的课基本信息2.5.1 字典结构 属性名称属性类型是否允许空默认值约束含义StudentNo Varchar2(9)NOT NULL主键学号CourseNoVarchar2(6) NOT NULL课程代码CourseNameVarchar2(20)NOT NULL课程名称TeacherNoVarchar2(9)NOT NULL教师编号2.6课程表Course用于存储管理员创建的课程基本信息2.6.1 字典结构属性名称属性类型是否允许空默认值约束含义CourseNoChar(5)NOT NULL主键课程代码CourseNameVarchar2(20)NULL课程名称GradesChar(1)NULL学分ClassLeavesChar(3)NULL班别SchoolHoursChar(5)NULL上课时间TeacherNameVarchar2(20)NULL教师姓名PositionVarchar2(20)NULL职称CapacityChar(3)NULL容量2.7用户权限表PrivilegeUsers 用于定义用户角色基本信息2.7.1 字典结构属性名称属性类型是否允许空默认值约束含义PrivilegeCodeChar(1)NOT NULL主键权限代码UserNameVarchar2(80)NOT NULL用户名称2.8超级管理员登陆表Super_Login用于存储管理员的编号和密码2.8.1 字典结构属性名称属性类型是否允许空默认值约束含义SuperNoChar(8)NOT NULL主键管理员编号PasswordChar(10)NOT NULL密码PrivilegeCodeChar(1)NOT NULL权限代码2.9学生登陆表Student_Login 用于存储学生的编号和密码2.9.1 字典结构属性名称属性类型是否允许空默认值约束含义StudentNoChar(8)NOT NULL主键学号PasswordChar(10)NOT NULL密码PrivilegeCodeChar(1)NOT NULL权限代码3.0教师登陆表Teacher_Login 用于存储教师的编号和密码3.0.1 字典结构属性名称属性类型是否允许空默认值约束含义TeacherNoChar(8)NOT NULL主键教师编号PasswordChar(10)NOT NULL密码PrivilegeCodeChar(1)NOT NULL权限代码3. 数据库脚本设计3.1学院表Depart3.1.1结构设计 CREATE TABLE Depart( DepartNo Char(3) NOT NULL, /*学院编号*/ DepartName Varchar2(30) NULL, /*学院名称*/ Manager Varchar2(20) NULL, /*院长*/ Telephone Varchar2(20) NULL, /*办公室电话*/ constraint Depart_PK primary key(DepartNo) );3.1.2数据分布3.1.3规则与约束学院编号的组成为:字符。3.1.4索引3.1.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅不可以。3.1.6说明3.2班级表Class3.2.1结构设计 CREATE TABLE Class( ClassNo Varchar2(8) NOT NULL, /*班级编号*/ ClassName Varchar2(30) NULL, /*班级名称*/ TeacherNo Varchar2(9) NULL, /*班主任编号*/ MonitorNo Char(9) NULL, /*班长编号*/ DepartNo Char(3) NOT NULL, /*学院编号*/ constraint Class_PK primary key(ClassNo), constraint Class_FK1 foreign key(DepartNo) references Depart(DepartNo), constraint Class_FK2 foreign key(TeacherNo) references Teacher(TeacherNo) );3.2.2数据分布3.2.3规则与约束课程编号必须用外键(学院编号, 班主任编号)关联。3.2.4索引3.2.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.2.6说明3.3学生表Student 3.2.1结构设计 CREATE TABLE Student( StudentNo Varchar2(9) NOT NULL, /*学号*/ StudentName Varchar2(20) NOT NULL, /*学生姓名*/ Sex Varchar2(2) check(sex in(男,女) NULL , /*性别*/ DepartNo Char(3) NOT NULL, /*学院编号*/ ClassNo Varchar2(8) NOT NULL, /*班级编号*/ BirthdayDate date NULL, /*出生日期*/ FamilyAddress Varchar2(30) NULL, /*家庭地址*/ QQ Varchar2(20) NULL, /*QQ号码*/ Telephone Varchar2(20) NULL, /*移动电话*/ StudentImage blob NULL, /*相片*/ StudentMemo varchar2(1000) NULL, /*备注*/ constraint Student_PK primary key(StudentNo), constraint Student_FK1 foreign key(ClassNo) references Class(ClassNo), constraint Student_FK2 foreign key(DepartNo) references Depart(DepartNo) );3.3.2数据分布3.3.3规则与约束学号必须用外键(班级编号, 学院编号)关联。3.3.4索引 create index Student_IX on Student(StudentNo) pctfree 30 tablespace MyspaceIndex;3.3.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.3.6说明3.4教师表 Teacher 3.4.1结构设计 CREATE TABLE Teacher( TeacherNo Varchar2(9) NOT NULL, /*教师编号*/ TeacherName Varchar2(20) NOT NULL, /*教师姓名*/ Sex Varchar2(3) check(sex in(男,女) NULL, /*性别*/ Position Varchar2(20) NULL, /*职称*/ Telephone Varchar2(20) NULL, /*移动电话*/ DepartNo Char(3) NOT NULL, /*学院编号*/ TeacherMemo varchar2(1000) null, constraint Teacher_PK primary key(TeacherNo), constraint Teacher_FK1 foreign key(DepartNo) references Depart(DepartNo) );3.4.2数据分布3.4.3规则与约束教师编号必须用外键(学院编号)关联。3.4.4索引 create index Teacher_IX on Teacher(TeacherNO) pctfree 30 tablespace MyspaceIndex;3.4.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.4.6说明3.5课程表 Course 3.5.1结构设计 CREATE TABLE Course( Num number(3) NOT NULL, CourseNo Varchar2(6) NOT NULL, /*课程代码*/ CourseName Varchar2(20) NOT NULL, /*课程名称*/ Grades Varchar2(2) NULL, /*学分*/ ClassLeaves Varchar2(4) NULL, /*班别*/ SchoolHours Varchar2(6) NULL, /*上课时间*/ TeacherNo Varchar2(9) NOT NULL, /*教师编号*/ Capacity Varchar2(3) NULL, /*容量*/ constraint Course_PK primary key(Num), constraint Course_FK1 foreign key(TeacherNo) references Teacher(TeacherNo);3.5.2数据分布3.5.3规则与约束3.5.4索引3.5.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.5.6说明3.6学生选课表Student_Coursing 3.6.1结构设计CREATE TABLE Student_Coursing( StudentNo Varchar2(9) NOT NULL, /*学号*/ CourseNo Varchar2(6) NOT NULL, /*课程代码*/ CourseName Varchar2(20) NOT NULL, /*课程名称*/ TeacherNo Varchar2(9) NOT NULL, /*教师编号*/ constraint Student_Coursing_PK primary key(StudentNo), constraint Student_Coursing_FK1 foreign key(StudentNo) references Student(StudentNo), constraint Student_Coursing_FK3 foreign key(TeacherNo) references Teacher(TeacherNo) );3.6.2数据分布3.6.3规则与约束3.6.4索引3.6.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.6.6说明3.7用户权限表PrivilegeUsers 3.7.1结构设计CREATE TABLE PrivilegeUsers( PrivilegeCode Char(2) NOT NULL, /*权限代码*/ UserName Varchar2(80) NOT NULL, /*用户名称*/ constraint Privilege_PK primary key(PrivilegeCode) );3.7.2数据分布3.7.3规则与约束3.7.4索引3.7.5安全设计 该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.7.6说明3.8教师登陆表Teacher_Login 3.8.1结构设计CREATE TABLE Teacher_Login( TeacherNo Varchar2(9) NOT NULL, /*教师编号*/ Password Varchar2(10) NOT NULL, /*密码*/ PrivilegeCode Char(2) NOT NULL, /*权限代码*/ constraint Teacher_Login_PK primary key(TeacherNo), constraint Teacher_Login_FK1 foreign key(TeacherNo) references Teacher(TeacherNo);3.9超级管理员登陆表Super_Login 3.9.1结构设计CREATE TABLE Super_Login( SuperNo Varchar2(9) NOT NULL, /*管理员编号*/ Password Varchar2(10) NOT NULL, /*密码*/ PrivilegeCode Char(2) NOT NULL, /*权限代码*/ constraint Super_Login_PK primary key(SuperNo);4.0学生登陆表Student_Login 4.0.1结构设计CREATE TABLE Student_Login( StudentNo Varchar2(9) NOT NULL, /*学号*/ Password Varchar2(10) NOT NULL, /*密码*/ PrivilegeCode Char(1) NOT NULL, /*权限代码*/ constraint Student_Login_PK primary key(StudentNo), constraint Student_Login_FK1 foreign key(StudentNo) references Student(StudentNo);4.1 触发器设计4.1.1 功能:当插入教师编号时,编号必须满足为数字CREATE or REPLACE TRIGGER TeacherInsbefore insertON TeacherFOR each rowdeclare myError EXCEPTION; /*出错处理*/ varLeft char(4); /*编号前4位*/ varMid char(4); /*编号第5位*/ varRight char(3); /*编号后3位*/ i number;begin if LENGTH(:new.TeacherNo) !=8 then RAISE myError; end if; varLeft := SUBSTR(:new.TeacherNo,1,4); varMid := SUBSTR(:new.TeacherNo,5,1); varRight := SUBSTR(:new.TeacherNo,6,3); if varMid != - then RAISE myError; end if; for i in 1.4 loop if (SUBSTR(varLeft,i,1)9) then RAISE myError; exit; end if; end loop; for i in 1.3 loop if (SUBSTR(varRight,i,1)9) then RAISE myError; exit; end if; end loop; EXCEPTION WHEN myError THEN :new.TeacherNo := NULL;end; 4.1.2 功能:当修改教师编号时,编号必须满足为数字CREATE or REPLACE TRIGGER TeacherUpdatebefore update of TeacherNoON TeacherFOR each rowdeclare myError EXCEPTION; /*出错处理*/ varLeft char(4); /*编号前4位*/ varMid char(4); /*编号第5位*/ varRight char(3); /*编号后3位*/ i number;begin if LENGTH(:new.TeacherNo) !=8 then RAISE myError; end if; varLeft := SUBSTR(:new.TeacherNo,1,4); varMid := SUBSTR(:new.TeacherNo,5,1); varRight := SUBSTR(:new.TeacherNo,6,3); if varMid != - then RAISE myError; end if; for i in 1.4 loop if (SUBSTR(varLeft,i,1)9) then RAISE myError; exit; end if; end loop; for i in 1.3 loop if (SUBSTR(varRight,i,1)9) then RAISE myError; exit; end if; end loop; EXCEPTION WHEN myError THEN :new.TeacherNo := :old.TeacherNo; :new.TeacherName := :old.TeacherName; :new.sex := :old.sex; :new.Position := :old.Position; :new.Telephone := :old.Telephone; :new.DepartNo := :old.DepartNo; :new.TeacherMemo := :old.TeacherMemo;end;4.1.3 产生教师编号函数, 功能:根据输入的年份,自动产生教师编号CREATE or REPLACE FUNCTION funEmployeeNo(sYear varchar2)return varchar2is x number; /*得到员工编号后三位的流水号*/ varEmployeeNo1 varchar2(8); /*某年份的最大员工编号*/ varEmployeeNo2 varchar2(8); /*新的员工编号*/begin varEmployeeNo1 :=; select NVL(max(EmployeeNo),0) into varEmployeeNo1 from Employee where EmployeeNo like sYear | %; if varEmployeeNo1 = 0 then /*无该年份的员工,编号从001开始*/ varEmployeeNo2 := sYear | -001; else x := to_number(SUBSTR(varEmployeeNo1,6,3)+1; if x 10 then varEmployeeNo2 := sYear | -00 | ltrim(to_char(x); elsif x100 then varEmployeeNo2 := sYear | -0 | ltrim(to_char(x); else varEmployeeNo2 := sYear | - | ltrim(to_char(x); end if; end if; return(varEmployeeNo2);end funEmployeeNo;4.1.4 产生教师编号过程, 功能:根据输入的年份,自动产生教师编号CREATE or REPLACE PROCEDURE proEmployeeNo(sYear varchar2,returnEmployeeNo OUT varchar2)is x number;/*得到教师编号后三位的流水号*/ varEmployeeNo1 varchar2(8);/*某年份的最大教师编号*/ varEmployeeNo2 varchar2(8); /*新的教师编号*/begin varEmployeeNo1 :=; selec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论