目录
DROP INDEX index_xm ON student; 19
- 需求分析
学校的日常事务管理涉及很多方面,其中课程管理是一个很重要的方面,比较体系化,流程化,适合使用计算机系统管理,该数据库需求分析如下:
学院有若干班级、教师、学生,一个学院设有若干班级,每个班级有若干名学生;每个学生选修若干门课程,一名教师可教授多门课程。每门课程可有若干名学生选修;每门课可以被安排在不同的教室上课,每门课程有固定的学时修完以后有相应学分,考试通过后可获得学分。
二、数据库设计
2.1 确定联系集及E-R图
根据前面对系统进行的分析,确定有关的各个实体及其相互联系如下:
学生(学号,姓名,性别,所在班级,电话,生日,住址)
教师(教师编号,姓名,职称)
课程(课程号,课程名,学时,学分,授课教师)
班级(班级编号,班级名称)
教室(教室编号,所在位置)
①、标示实体集:班级,课程,学生,教师,教室。
②、标示联系集:
学生和班级:一个班由多个学生组成,一个学生只能归属于某个班;
学生和课程:一个学生可以选修多门课程,一门课程提供给多个学生选修;
课程和教师:一门课由一个教师教授,一个教师可教授多门课。
教室和班级及课程:一间教室同一时间只能有一个班级上一门课,一间教室可供多个班级上多门课。
③、标示属性集:
学生(学号,姓名,性别,所在班级,电话,生日,住址)
教师(教师编号,姓名,职称)
课程(课程号,课程名,学时,学分,授课教师)
班级(班级编号,班级名称)
教室(教室编号,所在位置)
选课表(学号,课程号,成绩)
排课表(课程号,班级编号,教室编号,上课时间,课号)
2.2 画出E-R图
学生ER图如下:
教师ER图如下:
课程信息图如下:
班级ER图如下:
教室ER图如下:
2.3课程管理系统总E-R图
三、逻辑数据库设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括学生、教师、课程、班级、教室、选课、排课七个关系, 其关系模式中对每个实体定义的属性如下:
学生(学号,姓名,性别,所在班级,电话,生日,住址)
教师(教师编号,姓名,职称)
课程(课程号,课程名,学时,学分,授课教师)
班级(班级编号,班级名称)
教室(教室编号,所在位置)
选课表(学号,课程号,成绩)
排课表(课程号,班级编号,教室编号,上课时间,课号)
3.1 班级表(Student)
列名 | 中文含义 | 数据类型 | 约束 |
d_no | 班级编号 | Char(8) | 主码 |
d_Name | 班级名称 | char(12) | not null |
3.2 学生信息表(Student)
列名 | 中文含义 | 数据类型 | 约束 |
S_no | 学号 | Char(12) | 主码 |
S_Name | 用户名 | char(10) | not null |
sex | 密码 | char(2) | Not null |
d_no | 班级编号 | Char(8) | 外键 |
phone | 电话 | Char(12) | Not null |
birthday | 生日 | date | |
address | 住址 | Varchar(30) | Not null |
3.3 教室表(Room)
列名 | 中文含义 | 数据类型 | 约束 |
r_no | 教室编号 | Char(8) | 主码 |
r_location | 位置 | char(12) | not null |
3.4 课程表(Course)
列名 | 中文含义 | 数据类型 | 约束 |
c_no | 课程号 | Char(12) | 主码 |
c_name | 课程名 | char(10) | not null |
hours | 学时 | Int | Not null |
credit | 学分 | Int | Not null |
t_no | 授课教师 | Char(12) | 外键 |
3.5 教师表(Teacher)
列名 | 说明 | 数据类型 | 约束 |
t_no | 教师编号 | Char(12) | 主码 |
t_name | 姓名 | char(10) | not null |
t_title | 职称 | Varchar(10) |
3.6 选课表(Choose)
列名 | 说明 | 数据类型 | 约束 |
c_no | 课程号 | Char(12) | 外键(联合主键) |
s_no | 学号 | Char(12) | 外键(联合主键) |
score | 成绩 | int | 默认值0 |
3.4 排课表(Arrange)
列名 | 说明 | 数据类型 | 约束 |
c_no | 课程号 | Int | 外键,联合主键 |
d_no | 班级号 | int | 外键,联合主键 |
r_no | 教室编号 | Int | 外键,联合主键 |
dt_date | 上课时间 | Date | 联合主键 |
kh | 课号 | int |
四、建表
insert choose values ('1002','s0001',88);
insert choose values ('1002','s0002',66);
insert choose values ('1002','s0003',74);
insert choose values ('1002','s0004',91);
insert choose values ('1003','s0002',59);
insert choose values ('1003','s0003',72);
insert choose values ('1003','s0004',85);
insert choose values ('1004','s0003',60);
5.5 数据库的安全性
所谓计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件,软件及数据,防止其偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。为防止因用户非法使用数据库造成数据泄露、更改或破坏,必须采取一些安全性控制措施以保证数据库中数据的安全、可靠和正确有效。安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。主要采用用户标识及鉴定,使用用户名或用户标识号来标明用户身份。
用户想要对对数据库内容进行相关操作,必须申请一个用户名或用户标识号,每次登陆都必须输入该用户名以及相应正确的口令,然后系统对其进行验证,只有通过验证的用户方可对数据库进行操作。
5.6 数据库的完整性
5.6.1 实体完整性定义:在每个表上都创建了合理的主键约束
5.6.2 参照完整性定义:在选课表和排课表上创建了合理的外键约束