《2022年2022年教务管理信息系统的数据库设计实例 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年教务管理信息系统的数据库设计实例 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、*大学本科生设计性实验报告课程名称:数据库系统实验项目名称:教务管理信息系统数 据 库 设 计学生:姓名学号班级*班第组*至*学年 第*学期*年*月*日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -1.引言制作教务管理信息系统的目的是为学校学生提供一个方便创建教师、学生信息的工具,实现能够方便、快捷的查询信息。本系统功能概述:(1)管理员通过后台数据库管理系统插入、修改、删除课表,并把相应信息保存到数据库中。(2)用户浏览所有挂牌课课程,教师,学生的信息。(3)用户查询课程,系统输出该课程所有信息。(4)双击某门课程,即选中该门课,把这门课放到课表里(5)统计已选课
2、程的学分。(6)根据用户查询的课程,系统排列出所有课表并输出。(7)用户增加、修改、删除查询的课程,系统从新排列所有课表并输出。(8)若管理员/用户输入信息有误,系统报错。1.1 编写目的管理信息系统是进行信息的采集,存储,修改,维护,备份和使用的系统,它是随着管理科学和技术科学的发展而形成的.教务管理信息系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以教务管理信息系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的信息以及选课等。1.2 背景项目名称:教务管理信息系统(Educational administration
3、information system简称 EAIS)。项目提出者:EAIS 项目组织人员。项目开发者:EAIS 项目开发小组。项目鉴定者:*老师和各位同学。项目开始时间:*。1.3 定义列出本文件中用到的专门术语的定义和缩写词的源词组。1.所有的表名的命名规则:用该表的英文含义,首字母必须大写,如学生表:Student.2.所有的主键命名规则:用“表名_PK“表示.3.所有外键的命名规则:用”本表名 _FK”表示.4.所有规则的命名规则:用具有实际含义的英文单词组成.5.所有索引的命名规则:用“表名_IX“表示.6.所有字段的命名规则:用具有实际含义的英文单词组成.7 所有的触发器名用”表名+
4、Update/Insert/Delete”组成.8.所有的变量、属性、约束和规则必须给出详细的注解.9.所有的存储过程用pro+具有实际含义的英文单词组成.名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -10.所有的函数名用fun+具有实际含义的英文单词组成.2.数据字典2.1 学院表 Depart 用于说明学院基本信息中的记载2.1.1 字典结构属性名称属性类型是否允许空默认值约束含义DepartmentNo Char(3)NOT NULL主键学院编号DepartmentName Varchar2(30)NULLunique 学院名称Manager Varchar2
5、(20)NULL院长Telephone Varchar2(20)NULL办公室电话2.2 班级表 Class 用于记载班级基本信息2.2.1 字典结构属性名称属性类型是否允许空默认值约束含义ClassNo Char(5)NOT NULL主键、届数流水号班级编号ClassName Varchar2(30)NULLunique 班级名称TeacherNo Char(8)NULL外键班主任编号MonitorNo Char(8)NULL外键班长编号DepartNo Char(3)NOT NULL外键学院编号2.3 学生表 Student 用于存储学生基本信息2.3.1 字典结构属性名称属性类型是否允许
6、空默认值约束含义StudentNo Char(8)NOT NULL主键、届数流水号学号StudentName Varchar2(20)NOT NULL学生姓名Sex Varchar2(2)NULL“男”只取“男”、“女”性别DepartmentNo Char(3)NOT NULL外键学院编号ClassNo Char(5)NOT NULL外键班级编号BirthdayDate date NULL出生日期FamilyAddress Varchar2(30)NULLunique 家庭地址QQ Varchar2(20)NULLunique QQ 号码Telephone Varchar2(20)NULLu
7、nique 移动电话StudentImage blob NULL相片StudentMemo Varchar2(300)NULL/*备注*/2.3.2 索引create index Student_IX on Student(StudentNo)pctfree 30 tablespace MyspaceIndex;2.4 教师表 Teacher 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -用于存储教师基本信息2.4.1 字典结构属性名称属性类型是否允许空默认值约束含义TeacherNo Char(8)NOT NULL主键教师编号TeacherName Varchar
8、2(20)NOT NULL教师姓名Sex Varchar2(2)NULL“男”只取“男”、“女”性别Position Varchar2(20)NULL职称Telephone Varchar2(20)NULL移动电话DepartmentNo Char(3)NOT NULL学院编号TeacherMemo varchar2(1000)NULL/*备注*/2.4.2 索引create index Teacher_IX on Teacher(TeacherNO)pctfree 30 tablespace MyspaceIndex;2.5 学生选课表 Student_Coursing 用于存储学生所选的课
9、基本信息2.5.1 字典结构属性名称属性类型是否允许空默认值约束含义StudentNo Varchar2(9)NOT NULL主键学号CourseNo Varchar2(6)NOT NULL课程代码CourseNameVarchar2(20)NOT NULL课程名称TeacherNo Varchar2(9)NOT NULL教师编号2.6 课程表 Course 用于存储管理员创建的课程基本信息2.6.1 字典结构属性名称属性类型是否允许空默认值约束含义CourseNo Char(5)NOT NULL主键课程代码CourseName Varchar2(20)NULL课程名称Grades Char(
10、1)NULL学分ClassLeaves Char(3)NULL班别SchoolHours Char(5)NULL上课时间TeacherName Varchar2(20)NULL教师姓名Position Varchar2(20)NULL职称Capacity Char(3)NULL容量2.7 用户权限表 PrivilegeUsers 用于定义用户角色基本信息2.7.1 字典结构属性名称属性类型是否允许空默认值约束含义PrivilegeCode Char(1)NOT NULL主键权限代码UserName Varchar2(80)NOT NULL用户名称2.8 超级管理员登陆表Super_Login
11、用于存储管理员的编号和密码名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 12 页 -2.8.1 字典结构属性名称属性类型是否允许空默认值约束含义SuperNo Char(8)NOT NULL主键管理员编号Password Char(10)NOT NULL密码PrivilegeCode Char(1)NOT NULL权限代码2.9 学生登陆表 Student_Login 用于存储学生的编号和密码2.9.1 字典结构属性名称属性类型是否允许空默认值约束含义StudentNo Char(8)NOT NULL主键学号Password Char(10)NOT NULL密码Privileg
12、eCode Char(1)NOT NULL权限代码3.0 教师登陆表 Teacher_Login 用于存储教师的编号和密码3.0.1 字典结构属性名称属性类型是否允许空默认值约束含义TeacherNo Char(8)NOT NULL主键教师编号Password Char(10)NOT NULL密码PrivilegeCode Char(1)NOT NULL权限代码3.数据库脚本设计3.1 学院表 Depart 3.1.1 结构设计CREATE TABLE Depart(DepartNo Char(3)NOT NULL,/*学院编号*/DepartName Varchar2(30)NULL,/*学
13、院名称*/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)
14、NULL,/*班级名称*/TeacherNo Varchar2(9)NULL,/*班主任编号*/名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -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(TeacherN
15、o)references Teacher(TeacherNo);3.2.2 数据分布3.2.3 规则与约束课程编号必须用外键(学院编号,班主任编号)关联。3.2.4 索引3.2.5 安全设计该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.2.6 说明3.3学生表 Student3.2.1 结构设计CREATE TABLE Student(StudentNo Varchar2(9)NOT NULL,/*学号*/StudentName Varchar2(20)NOT NULL,/*学生姓名*/Sex Varchar2(2)check(sex in(男,女)NULL,/*性别*/Depa
16、rtNo 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(S
17、tudentNo),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 安全设计该表允许操作员和系
18、统管理员可以修改,其他人员仅可以查询。3.3.6 说明3.4 教师表 Teacher3.4.1 结构设计CREATE TABLE Teacher(TeacherNo Varchar2(9)NOT NULL,/*教师编号*/TeacherName Varchar2(20)NOT NULL,/*教师姓名*/Sex Varchar2(3)check(sex in(男,女)NULL,/*性别*/名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 12 页 -Position Varchar2(20)NULL,/*职称*/Telephone Varchar2(20)NULL,/*移动电话*/D
19、epartNo 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 Myspac
20、eIndex;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,/*上课时间*/Teac
21、herNo 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
22、 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(Stud
23、entNo),constraint Student_Coursing_FK3 foreign key(TeacherNo)references Teacher(TeacherNo);3.6.2 数据分布名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 12 页 -3.6.3 规则与约束3.6.4 索引3.6.5 安全设计该表允许操作员和系统管理员可以修改,其他人员仅可以查询。3.6.6 说明3.7 用户权限表 PrivilegeUsers3.7.1结构设计CREATE TABLE PrivilegeUsers(PrivilegeCode Char(2)NOT NULL,/*权限代码
24、*/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,/*密码*/
25、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,/*密码*
26、/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(Stud
27、entNo),constraint Student_Login_FK1 foreign key(StudentNo)references Student(StudentNo);4.1 触发器设计4.1.1 功能:当插入教师编号时,编号必须满足为数字名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 12 页 -CREATE or REPLACE TRIGGER TeacherIns before insert ON Teacher FOR each row declare myError EXCEPTION;/*出错处理*/varLeft char(4);/*编号前 4 位*/var
28、Mid 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(varLe
29、ft,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 TeacherUpdate before update of TeacherNo ON Teacher FOR each ro
30、w declare 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);名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 12 页 -varRi
31、ght:=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.Te
32、acherName:=: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 varchar2 is x number;/*得到员工编
33、号后三位的流水号*/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
34、(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
35、proEmployeeNo(sYear varchar2,returnEmployeeNo OUT varchar2)名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 12 页 -is x number;/*得到教师编号后三位的流水号*/varEmployeeNo1 varchar2(8);/*某年份的最大教师编号*/varEmployeeNo2 varchar2(8);/*新的教师编号*/begin varEmployeeNo1:=;select NVL(max(EmployeeNo),0)into varEmployeeNo1 from Employee where Empl
36、oyeeNo 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 x0 THEN raise_application_error(-20566,上课时间冲突!);END IF;END tri_CoursingTime;名师资料总结-精品资料欢迎下载-名师精心整理-
37、第 11 页,共 12 页 -4.1.8创建触发器解决学生选课时间冲突CREATE OR REPLACE TRIGGER tri_StudentCoursing_Coursetime before INSERT OR UPDA TE ON Student_Coursing FOR each row DECLARE v_n int;BEGIN SELECT COUNT(*)INTO v_n FROM Student_Course WHERE studentID=:new.studentID and SchoolHours=:new.SchoolHours;IF v_n0 THEN raise_a
38、pplication_error(-20588,时间冲突!);END IF;END;5.创建表空间5.1 创建表空间MyspaceIndex,用以存放索引的基本信息create tablespace MyspaceIndex datafile f:xxglMyspaceIndexsize 10M default storage(initial 50k next 50k minextents 2 maxextents 50 pctincrease 0);6.创建表索引6.1 创建学生表索引create index Student_IX on Student(StudentNo)pctfree 30 tablespace MyspaceIndex;6.2 创建教师表索引create index Teacher_IX on Teacher(TeacherNO)pctfree 30 tablespace MyspaceIndex;6.3 创建课程索引create index Course_IX on Course(Num)pctfree 30 tablespace MyspaceIndex;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 12 页 -