实验四小型数据库规划设计一、实验目的熟悉数据库的设计的基本方法和步骤,明白数据库设计各阶段的任务,加深对数据库系统概念和特点的理解。
二、实验内容和要求根据你熟悉的实际情况,选一个小型的数据库应用项目,进行系统分析和数据库设计。
三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL server 2000/2005;四、实验方法、步骤及结构测试1、写出简要的需求分析报告;本系统是针对高等院校的学生学籍管理,因此学籍管理系统的用户包括系统管理员、教师和学生。
主要涉及系部信息、班级信息、任课教师信息、学生信息、课程信息以及选课记录和成绩等多种数据信息。
实现的具体功能如下:基本信息管理——系统管理员负责对各种基本信息的录入、修改、删除等操作。
学生成绩管理——系统管理员负责对学生成绩的录入、修改、删除等操作,学生可以查询各科成绩。
信息查询统计——学生可以查询基本信息和各科的考试成绩,老师可以查询基本信息和授课信息,系统管理员负责把老师提交的学生成绩进行管理,计算总成绩和平均成绩,统计不及格学生信息和获得奖学金学生的信息,最后再输出所有的信息。
系统用户管理——系统管理员负责用不同的权限来限制不同用户对系统的使用。
以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。
2、进行简要的系统功能设计;.1 系信息管理。
院系信息管理包括院系信息数据的录入、修改与删除等功能。
.2 级信息管理。
班级信息管理包括班级信息的录入、修改与删除等功能。
.3 师信息管理。
教师信息管理包括任课教师信息的录入、修改与删除等功能。
.4 生信息管理。
学生信息管理包括学生信息的录入、修改与删除等功能。
5 程信息管理。
课程信息管理包括课程信息的录入、修改与删除等功能。
.6 籍变更信息管理。
学籍变更信息管理包括学籍变更信息的录入、修改与删除等功能。
.7 生奖惩信息管理。
学生奖惩信息管理包括学生奖惩信息的录入、修改与删除等功能。
.8 据查询。
数据查询包括教学班学生信息的查询和学生成绩查询等功能。
3、建立系统的E-R 图4、列出设计的数据库表1、STUDENT 表:2、COURSE 表: 字段名称类型宽度允许空值说明字段名称 类 型宽 度允许空值说 明snochar 8 not 学生学号(主键) sname char 8 not 学生姓名 sex char 2 学生性别 native char 20 籍贯 birthday smalldate 4 学生出生日期 dno char 6 所在院系(外键) spno char 8 专业代码(外键) classno char 4 班级号 entime smalldate 4 入校时间 home varchar 40 家庭住址 telvarchar40联系电话cno char 10 not 课程编号(主键)spno char 8 专业代码(外键)cname char 20 not 课程名称ctno char 1 课程类型(外键)experiment tinyint 1 实验时数lecture tinyint 1 授课学时semester tinyint 1 开课学期credit tinyint 1 课程学分3、STUDENT_COURSE(学生选课成绩表)字段名称类型宽度允许空值说明sno char 8 not 学生学号(主键)tcid smallint 2 not 上课编号(主键)score tinyint 1 学生成绩4、TEACHER(教师信息表):字段名称类型宽度允许空值说明tno char 8 not 教室编号(主键)tname char 8 not 教师姓名sex char 2 教师性别birthday smalldate 4 教师出生日期dno char 6 所在院系(外键)pno tinyint 1 职务或职称编号zipode char 4 邮政编码home varchar 40 家庭住址tel varchar 40 联系电话5、DEPARTMENT(院系信息表):字段名称类型宽度允许空值说明dno char 6 not 院系编号(主键)dname char 20 not 院系名称header cahr 8 院系负责人addr varchar 40 院系办公地址del varchar 40 联系电话6、SEPCIALITY(专业信息表):字段名称类型宽度允许空值说明spno char 8 not 专业代码(主键)dno char 6 not 院系编号spname char 20 专业名称7、CLASS(班级信息表):字段名称类型宽度允许空值说明classno char 8 not 班级号(主键)spno char 6 not 专业代码(主键)header char 20 班负责人8、TEACHERCOURSE(教室上课表);字段名称类型宽度允许空值说明tcid smalldate 2 not 上课编号(主键)tno char 8 教师编号(外键)spno char 8 专业代码(外键)classno char 4 班级号cno char 10 not 课程编号(外键)semester char 6 学期schoolyear char 10 学年classtime varchar 40 上课时间classroom varchar 40 上课地点weektime tinyint 1 课时数9、CHANGE(学籍变更信息表)字段名称类型宽度允许空值说明changeid smallint 2 not 记录号(主键)sno char 8 not 学生学号(外键)change char 1 not 变更代码(外键)rectime datetime 8 not 记录时间description varchar 10 描述10、REW ARD(奖励记录信息表)字段名称类型宽度允许空值说明rewardid smallint 2 not 记录号(主键)sno char 8 not 学生学号(外键)levels char 1 not 级别代码(外键) rectime datetime 8 not 记录时间description varchar 100 描述11、PUNISHMENT(处罚记录信息表)字段名称类型宽度允许空值说明punishmentid smallint 2 not 记录号(主键)sno char 8 not 学生学号(外键)levels char 1 not 级别代码(外键)rectime datetime 8 not 记录时间description varchar 100 描述enable char 1 not 是否生效12、CHANGECODE(学籍变更信息表)字段名称类型宽度允许空值说明code char 1 not 变更代码(主键)description varchar 100 描述13、REW ARDLEVELS(奖励记录信息表)字段名称类型宽度允许空值说明code char 1 not 变更代码(主键)description varchar 100 描述14、PUNISHMENTLEVELS(处罚记录信息表)字段名称类型宽度允许空值说明code char 1 not 变更代码(主键)description varchar 100 描述15、COURSETYPE(课程类型表)字段名称类型宽度允许空值说明ctno tinyint 1 not 类型编号(主键) ctname char 16 not 类型名称16、PROFESSION(职称表)字段名称 类型 宽度 允许空值 说明pno tinyint 1 not 职称编号(主键) professionchar10not职称名称5、生成数据库关系图6、创建索引并查看索引(截图显示相关代码及实验结果)创建索引的SQL 语句及执行结果显示 示例:Create index …. USE SCC GOCREATE INDEX TNAME_INDEX ON TEACHER (TNAME );SQL 语句及运行结果截图 示例:运行结果可通过执行系统的存储过程查看:use SCC goSp_helpindex TEACHER7、创建至少2个视图并查询视图(截图显示相关代码及实验结果)视图1:创建视图的SQL 语句及执行结果显示 示例:Create view查询视图的SQL 语句及执行结果截图 示例:SELECT *FROM ST_VIEW视图2:创建视图的SQL 语句及执行结果显示 示例:Create view查询视图的SQL 语句及执行结果截图 示例:SELECT *FROM ST_VIEW8、创建存储过程,执行存储过程并观察结果。
(截图显示相关代码及实验结果)9、代码附录(列出所有的SQL 语句,并标注每段代码的功能,宋体五号字,分栏打印)五、 实验中出现的问题及解决方案 实验时因为没有注意对实体中的属性进行主键和外键的约束,以至于刚开始创建的表很多无效。
还有就是应该判断好属性是否可以是空值,插入数据的时候才不至于报错。
六、思考题1、数据库设计时应考虑哪些事项? 答:1、数据库的用途及该用途将如何影响设计,应创建符合用途的数据库计划。
2、数据库规范化规则,防止数据库设计中出现错误。
3、对数据完整性的保护。
4、数据库和用户权限的安全要求。
5、应用程序的性能需求。
6、维护。
7、估计数据库大小。