学员基本信息系统的数据库设计
一, 需求说明
如果要实现一个员工培训班的学员基本信息系统,在此系统中涉及学员、图书、教师、课程、部门的管理。此系统要求能够记录学员借阅情况、选课情况、所属部门情况、教师授课情况以及学员、图书、教师、课程、部门的基本情况,系统具体要求如下:
一个部门由多个学员组成
一个学员只属于一个部门
一个学员可以借阅多本图书
一本图书可以被多名学员借阅
一名学员可以由多名教师教授
一名教师可以教授多名学员
一门课程可以由多名教师讲授
一名教师可以讲授多门课程
一名学员可以选修多门课程
一门课程可以被多名学员选修
数据库中要记录学员借阅图书情况、选课情况、所属部门情况、教师授课情况以及学员、图书、教师、课程、部门的基本情况。除了对这些数据进行正常文护之外,还需产生如下报表:
学员借阅图书表,内容包括学号,姓名,图书号,图书名
学员选课情况表,内容包括学号,姓名,课程号,课程名
教师授课表,内容包括教师名,教师号,课程名,课程号
学员部门情况表,内容包括学号,姓名,部门名,部门号
二, 数据库结构设计
1, 概念结构设计
对上述需求作进一步分析,产生概念结构设计的E-R模型。这里采用自底向上的设计方法。自底向上设计需要先定义每个局部应用的概念结构,再按一定规则把它们集成起来,从而得到全局概念模型。对于此学员基本信息系统,可以细分为多个局部结构,由学员这个实体发出,设计出学员借阅图书结构,学员选课结构结构,学员所属部门结构,教师教授学员结构,这些局部概念结构,再把这些局部结构集成为一个大的全局概念模型。
学员:用于描述一名学员的基本信息,由学号来标识
图书:用于描述一本图书的基本信息,由图书号来标识
教师:用于描述一名教师的基本信息,由教师号来标识
课程:用于描述一个课程的基本信息,由课程号来标识
部门:用于描述一个部门的基本信息,由部门号来标识
由于一个部门由多个学员组成,一个学员只属于一个部门,因此,部门和学员之间是一对多的联系;由于一个学员可以借阅多本图书,一本图书可以被多名学员借阅,因此,图书和学员之间是多对多的联系;由于一名学员可以由多名教师教授,一名教师可以教授多名学员,因此,教师和学员之间是多对多的联系;由于一门课程可由多名教师教授,一名教师可以讲授多门课程,因此,教师和课程之间是多对多的联系;由于一名学员可以选修多门课程,一门课程可被多名学员选修,因此,学员和课程之间是多对多的联系。
其基本E-R模型如图所示:
部门
组成
图书 借阅 学员 教授 教师
选课 授课
课程
经分析,此系统中各实体所含基本属性如下:
学员:学号,姓名,年龄,性别
课程:课程号,课程名,学分
部门:部门号,部门名,联系电话
教师:教师号,教师名,职称
图书:图书号,图书名,作者
2, 逻辑结构设计
有了基本的E-R模型可进行逻辑结构设计,也就是设计基本的关系模式。设计基本关系模式主要从E-R模型出发,将其直接转换为关系模式。根据转换规则,这个E-R模型转换的关系模式为:
学员:(学号,姓名,年龄,性别),主码为学号
课程:(课程号,课程名,学分),主码为课程号
部门:(部门号,部门名,联系电话),主码为部门号
教师:(教师号,教师名,职称),主码为教师号
图书:(图书号,图书名,作者),主码为图书号
借阅:(学号,图书号,借书日期),主码为(学号,图书号)
教授:(教师号,学号),主码为(教师号,学号)
选课:(学号,课程号,成绩),主码为(学号,课程号)
授课:(课程号,教师号,授课类别),主码为(课程号,教师号)
组成:(部门号,学号),主码为(部门号,学号)
现在分析关系模式,目前每个关系模式中的每个非主码属性都完全由主码唯一确定,因此,上述所有这些关系模式都是第三范式的关系模式。
现在确定好每个关系模式的主码后,要确定关系模式的外码。
应在“借阅”关系中添加“学号”和“图书号”两个外码,它们分别引用“学员”关系中的“学号”和“图书”关系中的“图书号”。应在“教授”关系中添加“教师号”和“学号”两个外码,它们分别引用“教师”关系中的“教师号”和“学员”关系中的“学号”。应在“选课”关系中添加“学号”和“课程号”两个外码,它们分别引用“学员”关系中的“学号”和“课程”关系中的“课程号”。应在“授课”关系中添加“课程号”和“教师号”两个外码,它们分别引用“课程”中的“课程号”和“教师”中的“教师号”。应在“组成”关系中添加“部门号”和“学号”两个外码,它们分别引用“部门”中的“部门号”和“学员”中的“学号”。
最后确定表中的各属性的详细信息,包括数据类型和长度等。
1, 学员表
学号:普通编码定长字符串型,10字节,主码
姓名:普通编码定长字符串型,10字节,非空
年龄:数值型,3字节,非空
性别:普通编码定长字符串型,2字节,非空
2, 教师表
教师号:普通编码定长字符串型,10字节,主码
教师名:普通编码定长字符串型,10字节,非空
职称:普通编码定长字符串型,6字节,取值范围为{教授,副教授,讲师,助教}
3, 课程表
课程号:普通编码定长字符串型,10字节,主码
课程名:普通编码定长字符串型,20字节,非空
学分:数值型,4字节,非空
4, 图书表
图书号:普通编码定长字符串型,10字节,主码
图书名:普通编码定长字符串型,20字节,非空
作者:普通编码定长字符串型,10字节,非空
5, 部门表
部门号:普通编码定长字符串型,10字节,主码
部门名:普通编码定长字符串型,20字节,非空
联系电话:数值型,12字节,非空
6, 借阅表
学号:普通编码定长字符串型,10字节,主码,也是引用学员表的外码
图书号:普通编码定长字符串型,10字节,主码,也是引用图书表的外码
借书日期:数值型,14字节,非空
7, 教授表
教师号:普通编码定长字符串型,10字节,主码,也是引教师生表的外码
学号:普通编码定长字符串型,10字节,主码,也是引用学员表的外码
8, 选课表
学号:普通编码定长字符串型,10字节,主码,也是引用学员表的外码
课程号:普通编码定长字符串型,10字节,主码,也是引用课程表的外码
成绩:数值型,3字节,非空
9, 授课表
课程号:普通编码定长字符串型,10字节,主码,也是引用课程表的外码
教师号:普通编码定长字符串型,10字节,主码,也是引用教师表的外码
授课类别:普通编码定长字符串型,6字节,非空
10,组成表
部门号:普通编码定长字符串型,10字节,主码,也是引用部门表的外码
学号:普通编码定长字符串型,10字节,主码,也是引用学员表的外码435