sql学生成绩信息管理系统数据库设计报告.docx
《sql学生成绩信息管理系统数据库设计报告.docx》由会员分享,可在线阅读,更多相关《sql学生成绩信息管理系统数据库设计报告.docx(9页珍藏版)》请在冰豆网上搜索。
sql学生成绩信息管理系统数据库设计报告
哈尔滨理工大学
软件学院
课程设计报告
课程
:
数据库课程设计
题目
:
学生成绩信息管理的数据库设计
班级
:
软件10-8班
专业
:
软件工程
姓名
:
岳世崇
学号
:
指导教师
:
王春英
日期
:
2011年12月30日
一、数据库的背景及功能需求
在要求你为哈尔滨理工大学设计一个学生成绩管理系统的数据库,背景如下:
哈尔滨理工大学有多学科的大学,学生在自己本身必修课程之后选修课程,从而获得学分,学生成绩管理系统,通过按照,授课教师,学生信息,课程信息,成绩信息,建立起联系,
例如:
管理员可以修改学生的信息,删除,修改,学生信息,包括学生联系方式,住址等等,给学生的各科成绩打分。
同时可以修改教师的个人信息,住址等信息。
2、数据库的概念结构设计
每个学生都要有一个学号,并记录姓名,身份证号,年龄,性别,电话号码,主修,年级,班级,籍贯,学生密码等,每个教师都要有一个教师编号,并记录姓名,授课名称,性别,电话等信息。
每一门课都要有一个课程编号,课程名及所对应的教师编号等,成绩包括学生的学号及课程号和成绩的多少,管理员通过数据库对相应的学生信息(如名,身份证号,年龄,性别等),教师信息,课程信息,学生成绩进行编辑,学生成绩的录入。
学校的课程有计算机组成原理,离散数学,英语,机械电子,车辆工程,环境工程,软件编程,电气概念等科目,对应各自的课程编号。
学生的班级信息包括其专业年级,班级。
在网上查询系统中,每个用户都分配了用户名(全局唯一)和密码,其中,用户名就是学号,密码为学生自身的密码,可以修改。
三、数据库的逻辑结构设计
四、数据库的物理结构设计
第一范式在关系中属性都原子的
Bc范式:
在第一范式的基础上满足以下两个条件之一
一a推出b是平凡的函数依赖
二a是关系的一个超码
第三范式:
函数依赖集F是关系的一个函数依赖集F的闭包中所有的函数依赖型如a推出b至少有以下之一成立
一a推出b是平凡的函数依赖
二a是关系的一个超码
三b-a中的每个属性都包含在关系的一个候选码中
学生个人信息;学号,姓名,身份证号,年龄,性别,电话号码,主修,年级,班级,籍贯,学生密码属于,bc范式
属性名
类型
主键
约束
学号
长整型
是
姓名
字符型
身份证号
长整型
年龄
字符型
性别
字符型
男or女
电话
长整形
主修
长整形
年级
长整形
([Student_Grade]<=(4))and([Student_Grade]>=
(1))
班级
长整形
籍贯
字符型
学生密码
字符型
教师个人信息:
教师编号、课程编号,姓名,住址,籍贯,电话号码,职务,性别,属于bc范式
属性名
类型
主键
约束
教师编号
长整型
是
课程编号
长整型
姓名
字符型
住址
字符型
籍贯
字符型
电话号码
长整型
职务
字符型
性别
字符型
男or女
图书:
图书编号,名称、作者、条形码、出版地、出版社、出版时间、属于bc范式
属性名
类型
主键
约束
图书编号
长整型
是
名称
字符型
作者
字符型
条形码
长整型
出版地
字符型
出版时间
时间类型
出版社
字符型
单价
浮点型
字数
长整型
课程信息:
课程编号、课程名、教师编号、课程等级,属于
bc范式
属性名
类型
主键
约束
课程编号
长整型
是
课程名
字符型
教师编号
长整型
课程等级
长整型
学生成绩:
学号、课程编号,成绩分数。
属于bc范式
属性名
类型
主键
约束
学号
长整型
是
课程编号
长整型
成绩分数
浮点型
Between0and100
选课:
学号,课程号。
属于bc范式
属性名
类型
主键
约束
学号
长整型
课程号
长整型
教授:
课程号,教师编号。
属于bc范式
属性名
类型
主键
约束
课程号
长整型
教师编号
长整型
授权;用户编号。
属性名
类型
主键
约束
教师编号
长整型
是
授权2:
用户编号。
属于bc范式
属性名
类型
主键
约束
学生编号
长整型
学生个人信息表(学号、姓名、身份证号、密码、年龄、性别、联系电话、专业、年级、班级、照片、籍贯)
学生成绩表(学号、课程号、成绩)
课程表(课程号、课程名称、教师号、课程级别)
教师个人信息表(教师号、姓名、密码、课程号、家庭住址、籍贯、电话、职称、性别、照片)
确定联系的属性:
教授:
课程号,教师编号。
选课:
学号,课程号。
授权;学号,教师编号。
提醒修改触发器
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERTrigger[truStudent]
On[dbo].[Stu_Info]
forUpdate
As
ifUpdate(Stu_ID)
begin
UpdateStudent_Grade
SetStu_ID=i.Stu_ID
FromStudent_Gradebr,Deletedd,Insertedi
Wherebr.Stu_ID=d.Stu_ID
end
提示删除的触发器
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERtrigger[trdStudent1]
On[dbo].[Stu_Info]
forDelete
As
DeleteStudent_Grade
FromStudent_Gradebr,Deletedd
Wherebr.Stu_ID=d.Stu_ID
学生姓名索引建立
USE[stu_grade_manage]
GO
ALTERTABLE[dbo].[Stu_Info]ADDCONSTRAINT[PK_Stu_Info]PRIMARYKEYCLUSTERED
(
[Stu_ID]ASC
)WITH(SORT_IN_TEMPDB=OFF,IGNORE_DUP_KEY=OFF,ONLINE=OFF)ON[PRIMARY]
成绩索引建立
USE[stu_grade_manage]
GO
CREATECLUSTEREDINDEX[index]ON[dbo].[Student_Grade]
(
[Stu_ID]ASC
)WITH(SORT_IN_TEMPDB=OFF,DROP_EXISTING=OFF,IGNORE_DUP_KEY=OFF,ONLINE=OFF)ON[PRIMARY]
教师授权语句(可以修改学生成绩)
Grantupdate,select,insertonStudent_Grade
ToTeacher_info;
学生授权语句(只能查询成绩)
Grantselect,onStudent_Grade
ToStu_Info;
五、自我总结
遇到的问题:
一、触发器建立时,临时表的应用部熟练,遇到错误。
二在确定数据库逻辑结构的过程中,实体集与实体集之间的关系不好确定
三、索引语句代码编写问题。
四、授权语句执行不成功
解决办法:
上网查找有关资料进行修改,解决问题,寻求老师同学帮助解决问题。
通过本学期的课程设计,对数据库有了更深层的认识,了解到真正所学习的只是要勇于应用于实践当中,这样才能真正掌握一门技术,而不只是理论的层次,同时在设计过程中得到很多乐趣,基于对计算机的个人爱好,尽管有很多不足,但希望在今后的学习生活中不短完善自己的学习层面,完善自己的技术能力!