教务管理信息系统的数据库设计实例.docx
《教务管理信息系统的数据库设计实例.docx》由会员分享,可在线阅读,更多相关《教务管理信息系统的数据库设计实例.docx(21页珍藏版)》请在冰豆网上搜索。
教务管理信息系统的数据库设计实例
***大学
本科生设计性实验报告
课程名称:
数据库系统
实验项目名称:
教务管理信息系统
数据库设计
学生:
姓名学号
班级***班第组
***至***学年第*学期
****年*月**日
1.引言
制作教务管理信息系统的目的是为学校学生提供一个方便创建教师、学生信息的工具,实现能够方便、快捷的查询信息。
。
本系统功能概述:
(1)管理员通过后台数据库管理系统插入、修改、删除课表,并把相应信息保存到数据库中。
(2)用户浏览所有挂牌课课程,教师,学生的信息。
(3)用户查询课程,系统输出该课程所有信息。
(4)双击某门课程,即选中该门课,把这门课放到课表里
(5)统计已选课程的学分。
(6)根据用户查询的课程,系统排列出所有课表并输出。
(7)用户增加、修改、删除查询的课程,系统从新排列所有课表并输出。
(8)若管理员/用户输入信息有误,系统报错。
1.1编写目的
管理信息系统是进行信息的采集,存储,修改,维护,备份和使用的系统,它是随着管理科学和技术科学的发展而形成的.教务管理信息系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以教务管理信息系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的信息以及选课等。
1.2背景
项目名称:
教务管理信息系统(Educationaladministrationinformationsystem简称EAIS)。
项目提出者:
EAIS项目组织人员。
项目开发者:
EAIS项目开发小组。
项目鉴定者:
***老师和各位同学。
项目开始时间:
****。
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字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
DepartmentNo
Char(3)
NOTNULL
主键
学院编号
DepartmentName
Varchar2(30)
NULL
unique
学院名称
Manager
Varchar2(20)
NULL
院长
Telephone
Varchar2(20)
NULL
办公室电话
2.2班级表Class
用于记载班级基本信息
2.2.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
ClassNo
Char(5)
NOTNULL
主键、届数+流水号
班级编号
ClassName
Varchar2(30)
NULL
unique
班级名称
TeacherNo
Char(8)
NULL
外键
班主任编号
MonitorNo
Char(8)
NULL
外键
班长编号
DepartNo
Char(3)
NOTNULL
外键
学院编号
2.3学生表Student
用于存储学生基本信息
2.3.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
StudentNo
Char(8)
NOTNULL
主键、届数+流水号
学号
StudentName
Varchar2(20)
NOTNULL
学生姓名
Sex
Varchar2
(2)
NULL
“男”
只取“男”、“女”
性别
DepartmentNo
Char(3)
NOTNULL
外键
学院编号
ClassNo
Char(5)
NOTNULL
外键
班级编号
BirthdayDate
date
NULL
出生日期
FamilyAddress
Varchar2(30)
NULL
unique
家庭地址
QQ
Varchar2(20)
NULL
unique
QQ号码
Telephone
Varchar2(20)
NULL
unique
移动电话
StudentImage
blob
NULL
相片
StudentMemo
Varchar2(300)
NULL
/*备注*/
createindexStudent_IXonStudent(StudentNo)pctfree30tablespaceMyspaceIndex;
2.4教师表Teacher
用于存储教师基本信息
2.4.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
TeacherNo
Char(8)
NOTNULL
主键
教师编号
TeacherName
Varchar2(20)
NOTNULL
教师姓名
Sex
Varchar2
(2)
NULL
“男”
只取“男”、“女”
性别
Position
Varchar2(20)
NULL
职称
Telephone
Varchar2(20)
NULL
移动电话
DepartmentNo
Char(3)
NOTNULL
学院编号
TeacherMemo
varchar2(1000)
NULL
/*备注*/
createindexTeacher_IXonTeacher(TeacherNO)pctfree30tablespaceMyspaceIndex;
2.5学生选课表Student_Coursing
用于存储学生所选的课基本信息
2.5.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
StudentNo
Varchar2(9)
NOTNULL
主键
学号
CourseNo
Varchar2(6)
NOTNULL
课程代码
CourseName
Varchar2(20)
NOTNULL
课程名称
TeacherNo
Varchar2(9)
NOTNULL
教师编号
2.6课程表Course
用于存储管理员创建的课程基本信息
2.6.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
CourseNo
Char(5)
NOTNULL
主键
课程代码
CourseName
Varchar2(20)
NULL
课程名称
Grades
Char
(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)
NOTNULL
主键
权限代码
UserName
Varchar2(80)
NOTNULL
用户名称
2.8超级管理员登陆表Super_Login
用于存储管理员的编号和密码
2.8.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
SuperNo
Char(8)
NOTNULL
主键
管理员编号
Password
Char(10)
NOTNULL
密码
PrivilegeCode
Char
(1)
NOTNULL
权限代码
2.9学生登陆表Student_Login
用于存储学生的编号和密码
2.9.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
StudentNo
Char(8)
NOTNULL
主键
学号
Password
Char(10)
NOTNULL
密码
PrivilegeCode
Char
(1)
NOTNULL
权限代码
3.0教师登陆表Teacher_Login
用于存储教师的编号和密码
3.0.1字典结构
属性名称
属性类型
是否允许空
默认值
约束
含义
TeacherNo
Char(8)
NOTNULL
主键
教师编号
Password
Char(10)
NOTNULL
密码
PrivilegeCode
Char
(1)
NOTNULL
权限代码
3.数据库脚本设计
3.1学院表Depart
CREATETABLEDepart(
DepartNoChar(3)NOTNULL,/*学院编号*/
DepartNameVarchar2(30)NULL,/*学院名称*/
ManagerVarchar2(20)NULL,/*院长*/
TelephoneVarchar2(20)NULL,/*办公室电话*/
constraintDepart_PKprimarykey(DepartNo));
学院编号的组成为:
字符。
该表允许操作员和系统管理员可以修改,其他人员仅不可以。
3.2班级表Class
CREATETABLEClass(
ClassNoVarchar2(8)NOTNULL,/*班级编号*/
ClassNameVarchar2(30)NULL,/*班级名称*/
TeacherNoVarchar2(9)NULL,/*班主任编号*/
MonitorNoChar(9)NULL,/*班长编号*/
DepartNoChar(3)NOTNULL,/*学院编号*/
constraintClass_PKprimarykey(ClassNo),
constraintClass_FK1foreignkey(DepartNo)referencesDepart(DepartNo),
constraintClass_FK2foreignkey(TeacherNo)referencesTeacher(TeacherNo)
);
课程编号必须用外键(学院编号,班主任编号)关联。
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.3学生表Student
CREATETABLEStudent(
StudentNoVarchar2(9)NOTNULL,/*学号*/
StudentNameVarchar2(20)NOTNULL,/*学生姓名*/
SexVarchar2
(2)
check(sexin('男','女'))NULL,/*性别*/
DepartNoChar(3)NOTNULL,/*学院编号*/
ClassNoVarchar2(8)NOTNULL,/*班级编号*/
BirthdayDatedateNULL,/*出生日期*/
FamilyAddressVarchar2(30)NULL,/*家庭地址*/
QQVarchar2(20)NULL,/*QQ号码*/
TelephoneVarchar2(20)NULL,/*移动电话*/
StudentImageblobNULL,/*相片*/
StudentMemovarchar2(1000)NULL,/*备注*/
constraintStudent_PKprimarykey(StudentNo),
constraintStudent_FK1foreignkey(ClassNo)referencesClass(ClassNo),
constraintStudent_FK2foreignkey(DepartNo)referencesDepart(DepartNo)
);
学号必须用外键(班级编号,学院编号)关联。
createindexStudent_IXonStudent(StudentNo)pctfree30tablespaceMyspaceIndex;
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.4教师表Teacher
CREATETABLETeacher(
TeacherNoVarchar2(9)NOTNULL,/*教师编号*/
TeacherNameVarchar2(20)NOTNULL,/*教师姓名*/
SexVarchar2(3)
check(sexin('男','女'))NULL,/*性别*/
PositionVarchar2(20)NULL,/*职称*/
TelephoneVarchar2(20)NULL,/*移动电话*/
DepartNoChar(3)NOTNULL,/*学院编号*/
TeacherMemovarchar2(1000)null,
constraintTeacher_PKprimarykey(TeacherNo),
constraintTeacher_FK1foreignkey(DepartNo)referencesDepart(DepartNo)
);
教师编号必须用外键(学院编号)关联。
createindexTeacher_IXonTeacher(TeacherNO)pctfree30tablespaceMyspaceIndex;
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.5课程表Course
CREATETABLECourse(
Numnumber(3)NOTNULL,
CourseNoVarchar2(6)NOTNULL,/*课程代码*/
CourseNameVarchar2(20)NOTNULL,/*课程名称*/
GradesVarchar2
(2)NULL,/*学分*/
ClassLeavesVarchar2(4)NULL,/*班别*/
SchoolHoursVarchar2(6)NULL,/*上课时间*/
TeacherNoVarchar2(9)NOTNULL,/*教师编号*/
CapacityVarchar2(3)NULL,/*容量*/
constraintCourse_PKprimarykey(Num),
constraintCourse_FK1foreignkey(TeacherNo)referencesTeacher(TeacherNo)
);
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.6学生选课表Student_Coursing
CREATETABLEStudent_Coursing(
StudentNoVarchar2(9)NOTNULL,/*学号*/
CourseNoVarchar2(6)NOTNULL,/*课程代码*/
CourseNameVarchar2(20)NOTNULL,/*课程名称*/
TeacherNoVarchar2(9)NOTNULL,/*教师编号*/
constraintStudent_Coursing_PKprimarykey(StudentNo),
constraintStudent_Coursing_FK1foreignkey(StudentNo)referencesStudent(StudentNo),
constraintStudent_Coursing_FK3foreignkey(TeacherNo)referencesTeacher(TeacherNo)
);
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.7用户权限表PrivilegeUsers
CREATETABLEPrivilegeUsers(
PrivilegeCodeChar
(2)NOTNULL,/*权限代码*/
UserNameVarchar2(80)NOTNULL,/*用户名称*/
constraintPrivilege_PKprimarykey(PrivilegeCode)
);
该表允许操作员和系统管理员可以修改,其他人员仅可以查询。
3.8教师登陆表Teacher_Login
CREATETABLETeacher_Login(
TeacherNoVarchar2(9)NOTNULL,/*教师编号*/
PasswordVarchar2(10)NOTNULL,/*密码*/
PrivilegeCodeChar
(2)NOTNULL,/*权限代码*/
constraintTeacher_Login_PKprimarykey(TeacherNo),
constraintTeacher_Login_FK1foreignkey(TeacherNo)referencesTeacher(TeacherNo)
);
3.9超级管理员登陆表Super_Login
CREATETABLESuper_Login(
SuperNoVarchar2(9)NOTNULL,/*管理员编号*/
PasswordVarchar2(10)NOTNULL,/*密码*/
PrivilegeCodeChar
(2)NOTNULL,/*权限代码*/
constraintSuper_Login_PKprimarykey(SuperNo)
);
4.0学生登陆表Student_Login
CREATETABLEStudent_Login(
StudentNoVarchar2(9)NOTNULL,/*学号*/
PasswordVarchar2(10)NOTNULL,/*密码*/
PrivilegeCodeChar
(1)NOTNULL,
/*权限代码*/
constraintStudent_Login_PKprimarykey(StudentNo),
constraintStudent_Login_FK1foreignkey(StudentNo)referencesStudent(StudentNo)
);
4.1触发器设计
4.1.1功能:
当插入教师编号时,编号必须满足为数字
CREATEorREPLACETRIGGERTeacherIns
beforeinsert
ONTeacher
FOReachrow
declare
myErrorEXCEPTION;/*出错处理*/
varLeftchar(4);/*编号前4位*/
varMidchar(4);/*编号第5位*/
varRightchar(3);/*编号后3位*/
inumber;
begin
ifLENGTH(:
new.TeacherNo)!
=8then
RAISEmyError;
endif;
varLeft:
=SUBSTR(:
new.TeacherNo,1,4);
varMid:
=SUBSTR(:
new.TeacherNo,5,1);
varRight:
=SUBSTR(:
new.TeacherNo,6,3);
ifvarMid!
='-'then
RAISEmyError;
endif;
foriin1..4
loop
if(SUBSTR(varLeft,i,1)<'0'orSUBSTR(varLeft,i,1)>'9')then
RAISEmyError;
exit;
endif;
endloop;
foriin1..3
loop
if(SUBSTR(varRight,i,1)<'0'orSUBSTR(varRight,i,1)>'9')then
RAISEmyError;
exit;
endif;
endloop;
EXCEPTION
WHENmyError
THEN
:
new.TeacherNo:
=NULL;
end;
4.1.2功能:
当修改教师编号时,编号必须满足为数字
CREATEorREPLACETRIGGERTeacherUpdate
beforeupdateofTeacherNo
ONTeacher
FOReachrow
declare
myErrorEXCEPTION;/*出错处理*/
varLeftchar(4);/*编号前4位*/
varMidchar(4);/*编号第5位*/
varRightchar(3);/*编号后3位*/
inumber;
begin
ifLENGTH(:
new.TeacherNo)!
=8then
RAISEmyError;
endif;
varLeft:
=SUBSTR(:
new.TeacherNo,1,4);
varMid:
=SUBSTR(:
new.TeacherNo,5,1);
varRight:
=SUBSTR(:
new.TeacherNo,6,3);
ifvarMid!
='-'then
RAISEmyError;
endif;
foriin1..4
loop
if(SUBSTR(varLeft,i,1)<'0'