在学生选课管理系统中,可以抽象得到实体主要有5个:学生、教师、课程、院系、班级。
- 学生实体属性有:学号、姓名、出生年月、性别、电话、系编号。
- 教师实体属性有:教师编号、教师姓名、性别、职称、出生年月、电话、电子邮件。
- 课程实体属性有:课程编号、课程名称、课程学时、课程学分。
- 院系实体属性有:系编号、系名称、负责人。
- 班级实体属性有:班级编号、班级名称。
请根据上次作业分析的实体与实体之间的联系,设计本系统中所有的局部E-R图。
学生实体和课程实体存在选修的联系,一个学生可以选修多门课程,而每门课也可以被多个学生选修,所以它们之间是多对多的联系(n:m)。
教师实体和课程实体存在讲授的联系,一名教师可以讲授多门课程,而每门课也可以被多个教师讲授,所以它们之间是多对多的联系(n:m)。
学生实体和班级实体存在归属的联系,一个学生只能属于一个班级,而每个班级可以包含多个学生,所以班级和学生之间是一对多的联系(1:n)。
班级实体和系之间存在归属的联系,一个班级只能属于一个系,而每个系可以包含多个班级,所以班级和系之间是一对多的联系(1:n)。
教师实体和系实体之间存在归属的联系,一个教师只能属于一个系,而每个系可以拥有多名教师,所以教师和系之间是一对多的联系(1:n),但是教师中会有一位充当该系的主任(正),可见教师和系之间也存在一种一对一的领导关系(1:1)。
2.将上题设计的局部E-R图进行合并与优化,生成全局E-R图。
3. 将上题生成的全局E-R图转换为关系模型,得出数据库中的表。
数据库中表清单
数据库表名 | 关系模式名称 | 备注 |
Teacher | 教师 | 教师信息表 |
Student | 学生 | 学生学籍信息表 |
Course | 课程 | 课程基本信息表 |
Class | 班级 | 班级基本对照表 |
StuCourse | 学生选课 | 选课-授课合成信息表 |
Department | 系 | 院系基本信息表 |
Schedule | 教学计划 | 教学计划安排表 |
学生信息表Student字段信息列表
字段名称 | 含义属性 | 类型 | 长度 | 备注 |
Snum | 学号 | char | 10 | 主键,也可以作为登录标识 |
Sname | 学生姓名 | nvarchar | 6 | Not null |
Ssex | 性别 | nchar | 2 | 男、女(M/F) |
Sbirth | 出生年月 | datetime | ||
Clnum | 班级号 | varchar | 6 | 所在班级编号,外键àClasses.Clnum |
| 电子邮件 | nvarchar | 40 | 支持中文邮箱 |
Passwd | 密码 | varchar | 20 | 密码,可以是数字英文和符号等 |
Status | 状态 | nvarchar | 8 | 表示在校或毕业或转学等 |
教师基本信息表Teacher字段信息列表
字段名称 | 含义属性 | 类型 | 长度 | 备注 |
Tnum | 教师编号 | char | 10 | 主键,也可以作为登录标识 |
Tname | 教师姓名 | nvarchar | 6 | Not null |
Tsex | 性别 | nchar | 2 | 男、女(M/F) |
Title | 职称 | nvarchar | 8 | 教授、副教授… |
Tphone | 联系电话 | char | 15 | |
| 电子邮件 | nvarchar | 40 | 支持中文邮箱 |
Tbirth | 出生年月 | datetime | ||
Passwd | 密码 | varchar | 20 | 密码,可以是数字英文和符号等 |
Dnum | 系编号 | varchar | 6 | 外键àDepart.Dnum |
系基本信息表Depart字段信息列表
字段名称 | 含义 | 类型 | 长度 | 备注 |
Dnum | 系编号 | varchar | 6 | 主键 |
Dname | 系名称 | nvarchar | 10 | Not null |
Director | 系主任 | varchar | 10 | 外键àTeacher.Tnum |
班级信息表Classes字段信息列表
字段名称 | 含义 | 类型 | 长度 | 备注 |
Clnum | 班级编号 | varchar | 6 | 主键 |
Cname | 班级名称 | nvarchar | 10 | Not null |
Desscription | 班级说明 | nvarchar | 100 | 如专业,本专科 |
Dnum | 系编号 | varchar | 6 | 外键à Depart.Dnum |
课程基本信息Course字段信息列表
字段名称 | 含义 | 类型 | 长度 | 备注 |
Cnum | 课程编号 | varchar | 10 | 主键 |
Cname | 课程名称 | varchar | 20 | Not null |
Credit | 学分 | numeric | 3,1 | |
Period | 课时 | int | 3 |
学生选课信息表StuCourse字段信息列表
字段名称 | 含义 | 类型 | 长度 | 备注 |
Snum | 学号 | varchar | 10 | 外建àStudent.Snum |
Cnum | 课程编号 | varchar | 10 | 外建àCourse.Cnum |
Tnum | 教师编号 | varchar | 10 | 外建àTeacher.Tnum |
Ynum | 开课年度 | int | 4 | 例如:2008 |
Term | 开课学期 | int | 1 | 1|2 |
Grade | 成绩 | numeric | 4,1 | {0…100}注意考查课的数字化 |
CAuditor | 选课审核者 | nvarchar | 6 | 直接取其姓名 |
Gauditor | 成绩审核者 | nvarchar | 6 | 直接取其姓名 |
教学计划信息表Schedule字段信息列表
字段名称 | 含义 | 类型 | 长度 | 备注 |
Cnum | 课程编号 | varchar | 10 | 外建àCourse.Cnum |
Clnum | 班级编号 | varchar | 6 | 外建àClasses.Clnum |
Ynum | 开课年度 | int | 4 | 例如:2008 |
Term | 开课学期 | int | 1 | 如1|2针对一个学年只有两个学期情形 |