




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京科技大学 计算机与通信工程学院实 验 报 告实验名称: 课程成绩管理数据库设计实验 学生姓名: 专 业: 班 级: 学 号: 指导教师: 洪 源 实验成绩:_实验地点: 机电楼303 实验时间: 2017 年 11 月 24 日实验: 课程成绩管理数据库一、实验目的1. 理解数据库系统的三级模式结构与两级映像机制;2. 体会数据库的数据独立性特征;3. 掌握ER 模型的使用;4. 掌握将ER 模型转换为关系模型的方法;5. 了解数据库设计的完整过程;6. 掌握数据库的建立和重构方法;7. 掌握数据添加、数据删除和数据更新的方法;8. 掌握各种数据查询方法;9. 了解数据库的安全性控制机制。二、实验内容1. 课程成绩管理的业务要求1) 与课程有关的信息有: 课程编号、课程名称、学分;2) 与学生有关的信息有: 学号、姓名、班级;3) 与教师有关的信息有: 工作证编号、姓名、所在学院;4) 与班级有关的信息有: 班级名称;5) 一名学生属于一个班级, 一个班级有多名学生;6) 一个班级可以开设多门课程, 一门课程可能为多个班级开设;7) 一名学生可以选修为其所在班级开设的多门课程, 为一个班级开设的一门课程可以有多名学生选修;8) 一名教师可以主讲为多个班级开设的多门课程, 一门课程可以有多名教师为多个班级主讲, 为一个班级开设的一门课程只能由一名教师主讲;9) 一名学生选修的一门课程只能有一个成绩, 这个成绩只能由主讲该生所在班级该课程的教师评定;10) 对各种数据的格式要求如下表所示;11) 开设3 门课程, 具体信息如下表所示;12) 共有6 名学生, 具体信息如下表所示;13) 共有5名教师, 具体信息如下表所示;14) 共有2个班级, 具体信息如下表所示;15) 教务员负责建立和维护课程、班级、教师和学生的档案,为各班开设课程,为各个班的各门课程分配主讲教师, 按班级打印各门课程每个学生的成绩并计算平均成绩。各班课程开设及主讲教师分配情况如下表所示;16) 学生可以选课和查看成绩;17) 教师负责给出成绩、更正成绩和按班级打印各门课程每个学生的成绩并计算平均成绩;18) 学生选课情况如下表所示;19) 学生各门课程成绩如下表所示:2. 实验任务1) 根据业务要求建立数据库2) 根据业务要求建立该数据库的用户3) 根据业务要求以不同的用户身份使用该数据库三、实验步骤1. 使用ER 模型进行概念设计。2. 将得到的ER模型转换成关系模型。实体“student”的关系模式:Student(Sno,Sname,Class),此关系模式又包含联系“属于(Belong to)”所对应的“class”关系模式。实体“course”的关系模式:Course (Cno,Cname,Credit)。 实体“teacher”的关系模式:Teacher(Tno,Tname,Tdept)。 联系“teachcourse”的关系模式:TeachCourse(Class,Cno,Tno)。联系“erollment”的关系模式:Enrollment(Sno,Cno)。 3. 定义数据库模式(全局模式)。1) 创建TeachManagement 的脚本文件USE masterGOCREATE DATABASE TeachManagementON( NAME = TeachManagement_dat,FILENAME = D:lucky_chzSQL serverMSSQL11.SQLEXPRESSMSSQLDATATeachManagement_dat.mdf,SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 )LOG ON( NAME = TeachManagement_log,FILENAME = D:lucky_chzSQL serverMSSQL11.SQLEXPRESSMSSQLDATATeachManagement_log.ldf,SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB )GO刷新数据库之后就会显示新建好的数据库:2) 创建TeachManagement 中各个表的脚本文件USE TeachManagementif exists (select * from dbo.sysobjects where id = object_id(Ndbo.FK_Enrollment_Course) and OBJECTPROPERTY(id,NIsForeignKey) = 1)ALTER TABLE dbo.Enrollment DROP CONSTRAINTFK_Enrollment_CourseGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.FK_Enrollment_Student) and OBJECTPROPERTY(id,NIsForeignKey) = 1)ALTER TABLE dbo.Enrollment DROP CONSTRAINTFK_Enrollment_StudentGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.Course)and OBJECTPROPERTY(id, NIsUSErTable) = 1)drop table dbo.CourseGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Enrollment) and OBJECTPROPERTY(id,NIsUSErTable) = 1)drop table dbo.EnrollmentGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Student) and OBJECTPROPERTY(id, NIsUSErTable)= 1)drop table dbo.StudentGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.TeachCourse) and OBJECTPROPERTY(id,NIsUSErTable) = 1)drop table dbo.TeachCourseGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Teacher) and OBJECTPROPERTY(id, NIsUSErTable)= 1)drop table dbo.TeacherGOCREATE TABLE dbo.Course (Cno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL PRIMARY KEY ,Cname char (20) COLLATE Chinese_PRC_CI_AS NULL ,Credit int NULL) ON PRIMARYGOCREATE TABLE dbo.Enrollment (Sno char (8) COLLATE Chinese_PRC_CI_AS NOT NULL,Cno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,Grade int NULL,PRIMARY KEY (Sno, Cno) ON PRIMARYGOCREATE TABLE dbo.Student (Sno char (8) COLLATE Chinese_PRC_CI_AS NOT NULL PRIMARY KEY,Sname char (20) COLLATE Chinese_PRC_CI_AS NULL ,Class char (16) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARYGOCREATE TABLE dbo.TeachCourse (Class char (16) COLLATE Chinese_PRC_CI_AS NOT NULL,Cno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,Tno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL,PRIMARY KEY (Class, Cno) ON PRIMARYGOCREATE TABLE dbo.Teacher (Tno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL PRIMARY KEY ,Tname char (20) COLLATE Chinese_PRC_CI_AS NULL ,Tdept char (20) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARYGO运行之后可以查看建好的数据库表:4. 定义数据库外模式(子模式)。创建Grade 视图, 供学生和教师查询。成绩( 班级,姓号,课程名称,学分,成绩)Grade(Class,Sname,Cname,Credit,Grade)创建Grade 视图的脚本文件如下:CREATE VIEW dbo.GradeASSELECT dbo.Student.Class, dbo.Student.Sname, dbo.Course.Cname,dbo.Course.Credit,dbo.Enrollment.GradeFROM dbo.Enrollment INNER JOINdbo.Course ON dbo.Enrollment.Cno = dbo.Course.Cno INNER JOINdbo.Student ON dbo.Enrollment.Sno = dbo.Student.Sno创建之后可以在视图目录下查看到建好的Grade视图:5. 定义数据库用户:1) 教务员;点击安全-登录名-新建,建立一个新的名为Dean的用户在用户映射栏将其映射到对应的数据库TeachManagement新建用户名完成之后,需要为该用户分配权限,分配权限的脚本文件如下:USE TeachManagementGOGRANT ALL PRIVILEGES ON Student, Course, Teacher, TeachCourse TO DeanGO2) 学生;新建用户名完成之后,需要为该用户分配权限,分配权限的脚本文件如下:USE TeachManagementGOGRANT SELECT, INSERT(Sno,Cno), UPDATE(Sno,Cno) ON Enrollment TO StudentGO3) 教师。 新建用户名完成之后,需要为该用户分配权限,分配权限的脚本文件如下:USE TeachManagementGOGRANT SELECT, UPDATE(Grade) ON Enrollment TO TeacherGO最终可以在登录名中查看到新建好的登录名、在当前数据库的用户中也可以找到该用户 6. 以不同用户的身份使用数据库:1) 以教务员的身份输入课程、学生、教师的数据, 并为课程分配教师;首先以教务员的身份登录数据库登录之后添加数据:USE TeachManagementif exists (select * from dbo.sysobjects where id = object_id(Ndbo.Course)and OBJECTPROPERTY(id, NIsUSErTable) = 1)delete from dbo.Courseif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Student) and OBJECTPROPERTY(id, NIsUSErTable)= 1)delete from dbo.Studentif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Teacher) and OBJECTPROPERTY(id, NIsUSErTable)= 1)delete from dbo.Teacherif exists (select * from dbo.sysobjects where id =object_id(Ndbo.TeachCourse) and OBJECTPROPERTY(id,NIsUSErTable) = 1)delete from dbo.TeachCourseGOINSERT INTO Course (Cno,Cname,Credit) VALUES (050304,计算机科学导引,4)INSERT INTO Course (Cno,Cname,Credit) VALUES (120509,建筑力学,6)INSERT INTO Course (Cno,Cname,Credit) VALUES (910201,世界科技史,3)GOINSERT INTO Student(Sno,Sname,Class)VALUES(40533123,诸葛飞扬,信息0519)INSERT INTO Student(Sno,Sname,Class)VALUES(40533099,雷铭,信息0519)INSERT INTO Student(Sno,Sname,Class)VALUES(40533103,贺舞,信息0519)INSERT INTO Student(Sno,Sname,Class)VALUES(40525009,卫小虎,建筑0501)INSERT INTO Student(Sno,Sname,Class)VALUES(40525011,邵剑青,建筑0501)INSERT INTO Student(Sno,Sname,Class)VALUES(40525024,欧阳雨晨,建筑0501)GOINSERT INTO Teacher(Tno,Tname,Tdept)VALUES(032011,向华泽,信息科学与技术学院)INSERT INTO Teacher(Tno,Tname,Tdept)VALUES(032036,梅鹤,信息科学与技术学院)INSERT INTO Teacher(Tno,Tname,Tdept)VALUES(011221,张天啸,文法学院)INSERT INTO Teacher(Tno,Tname,Tdept)VALUES(011224,秦放,文法学院)INSERT INTO Teacher(Tno,Tname,Tdept)VALUES(021121,萧雁鸣,建筑科学与工程学院)GOINSERT INTO TeachCourse(Class,Cno,Tno)VALUES( 建筑0501,050304,032036)INSERT INTO TeachCourse(Class,Cno,Tno)VALUES( 建筑0501,120509,021121)INSERT INTO TeachCourse(Class,Cno,Tno)VALUES( 建筑0501,910201,011224)INSERT INTO TeachCourse(Class,Cno,Tno)VALUES( 信息0519,050304,032011)INSERT INTO TeachCourse(Class,Cno,Tno)VALUES( 信息0519,910201,011221)GO可以查看添加进数据的表学生表:教师表:选课表:课程表:2) 以学生的身份选课;登录学生用户:输入选课数据:USE TeachManagementif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Enrollment) and OBJECTPROPERTY(id,NIsUSErTable) = 1)delete from dbo.EnrollmentGOINSERT INTO Enrollment(Sno,Cno)VALUES(40533123,050304)INSERT INTO Enrollment(Sno,Cno)VALUES(40533123,910201)INSERT INTO Enrollment(Sno,Cno)VALUES(40533099,050304)INSERT INTO Enrollment(Sno,Cno)VALUES(40533099,910201)INSERT INTO Enrollment(Sno,Cno)VALUES(40533103,050304)INSERT INTO Enrollment(Sno,Cno)VALUES(40533103,910201)INSERT INTO Enrollment(Sno,Cno)VALUES(40525009,050304)INSERT INTO Enrollment(Sno,Cno)VALUES(40525009,120509)INSERT INTO Enrollment(Sno,Cno)VALUES(40525009,910201)INSERT INTO Enrollment(Sno,Cno)VALUES(40525011,120509)INSERT INTO Enrollment(Sno,Cno)VALUES(40525011,910201)INSERT INTO Enrollment(Sno,Cno)VALUES(40525024,050304)INSERT INTO Enrollment(Sno,Cno)VALUES(40525024,120509)GO选课结果:3) 以教师的身份给出成绩;登录教师用户:输入成绩数据: USE TeachManagementGOUPDATE Enrollment SET Grade=85 WHERE Sno=40533123 AND Cno=050304UPDATE Enrollment SET Grade=77 WHERE Sno=40533123 AND Cno=910201UPDATE Enrollment SET Grade=69 WHERE Sno=40533099 AND Cno=050304UPDATE Enrollment SET Grade=88 WHERE Sno=40533099 AND Cno=910201UPDATE Enrollment SET Grade=75 WHERE Sno=40533103 AND Cno=050304UPDATE Enrollment SET Grade=89 WHERE Sno=40533103 AND Cno=910201UPDATE Enrollment SET Grade=84 WHERE Sno=40525009 AND Cno=050304UPDATE Enrollment SET Grade=90 WHERE Sno=40525009 AND Cno=120509UPDATE Enrollment SET Grade=79 WHERE Sno=40525009 AND Cno=910201UPDATE Enrollment SET Grade=80 WHERE Sno=40525011 AND Cno=120509UPDATE Enrollment SET Grade=72 WHERE Sno=40525011 AND Cno=910201UPDATE Enrollment SET Grade=81 WHERE Sno=40525024 AND Cno=050304UPDATE Enrollment SET Grade=83 WHERE Sno=40525024 AND Cno=120509GO输入结果:4) 以学生的身份查看成绩;登录学生身份:查看成绩:5) 以教师的身份更改成绩;登录教师用户:更改成绩:USE TeachManagementUPDATE Enrollment SET Grade=90 WHERE Sno=40533123 AND Cno=050304GO更改后成绩表格:6) 以教务员的身份更改成绩;登录教务员账号:更改成绩:USE TeachManagementUPDATE Enrollment SET Grade=95 WHERE Sno=40533123 AND Cno=050304GO更改后成绩:7) 以教师的身份打印成绩单;登录教师用户:打印成绩:这里使用了游标,可以依次打印各个班级的成绩,并有一些相应的格式上的设置。当然也可以不使用游标,分别对各班进行打印。在“查询分析器”下,将查询结果的显示模式设置为“文本显示结果:运行脚本程序:USE TeachManagementGOSET NOCOUNT ONDECLARE Class char(16), Average floatPRINT - 各班成绩打印-PRINT DECLARE print_cursor CURSOR FORSELECT DISTINCT Class FROM StudentORDER BY ClassOPEN print_cursorFETCH NEXT FROM print_cursorINTO ClassWHILE FETCH_STATUS = 0BEGINPRINT -+Class+班成绩- Get averageSELECT Average=AVG(Grade) FROM Enrollment, Student WHERE(Enrollment .Sno = Student.Sno) AND (Class=Class)-Print grade and averageSELECT * FROM Grade WHERE Class=ClassPRINT Class+班平均成绩:+STR(Average)PRINT - Get the next ClassFETCH NEXT FROM print_cursorINTO ClassENDCLOSE print_cursorDEALLOCATE print_cursorGO成绩打印显示为:8) 以教务员的身份打印成绩单。登录教务员账号:成绩打印显示为:7. 重新分配用户权限,收回教师的更改成绩权限,分配给教务员更改成绩权限。在查询分析器中以管理员(sa)身份登录运行脚本程序:USE TeachManagementREVOKE UPDATE(Grade) ON Grade FROM TeacherGRANT UPDATE(Grade) ON Grade TO Dean8. 以不同用户的身份使用数据库:1) 以教师的身份更改成绩;以教师身份登录-更改学生成绩:USE TeachManagementUPDATE Enrollment SET Grade=90 WHERE Sno=40533123 AND Cno=050304GO由于老师老师修改成绩的权限被收回,所以教师无法修改,并会提示相应错误:没有UPDATE的权限2) 以教务员的身份更改成绩;以教务员身份登录-更改学生成绩:USE TeachManagementUPDATE Grade SET Grade=95 WHERE Sno=40533123 AND Cno=050304GO更改之后的成绩表为:3) 以教师的身份打印成绩单;4) 以教务员的身份打印成绩单。9. 修改数据库模式,在教师信息中增加“职称”一项(字符类型,长度为6),并且删除“所在学院”一项。在查询分析器中以管理员(sa)身份登录,在SQL 中,由于不能删除表的某一属性列,采用下面的方案,即先将所需列复制至备份表中,再删除原表。if exists (select * from dbo.sysobjects where id =object_id(Ndbo.TeacherTemp) and OBJECTPROPERTY(id,NIsUSErTable) = 1)drop table dbo.TeacherTempGOCREATE TABLE dbo.TeacherTemp (Tno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,Tname char (20) COLLATE Chinese_PRC_CI_AS NULL ,Position char (6) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARYGOINSERT INTO TeacherTemp(Tno,Tname) SELECT Tno,Tname FROMTeacherGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.Teacher) and OBJECTPROPERTY(id, NIsUSErTable)= 1)drop table dbo.TeacherGOCREATE TABLE dbo.Teacher (Tno char (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,Tname char (20) COLLATE Chinese_PRC_CI_AS NULL ,Position char (6) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARYGOINSERT INTO Teacher SELECT Tno,Tname FROM TeacherTempGOif exists (select * from dbo.sysobjects where id =object_id(Ndbo.TeacherTemp) and OBJECTPROPERTY(id,NIsUSErTable) = 1)drop table dbo.TeacherTempGO可以看到此时教师的表格中第三列已经变成职位了10. 以不同的身份使用数据库:1) 以学生的身份查看成绩;登录学生账户-查看成绩USE TeachManagementSELECT * FROM GradeGO查看结果:2) 以教师的身份打印成绩单;登录教师账户-查看成绩3) 以教务员的身份增加一名教师。在查询分析器中以教务员身份登录,添加一位老师:USE TeachManagementINSERT INTO Teacher(Tno,Tname,Position)VALUES(032005,李新,教授)GO查看运行结果:四、思考题1. 数据库系统的三级模式结构与两级映像机制在SQL server 2000 中是如何实现的?数据库的二级映像功能与数据独立,为了能够在内部实现数据库的三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像。外模式/模式映像 对应于同一个模式可以有任意多个外模式,对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。当模式改变时候,由数据库管理员对各个外模式/模式做相应的改变,可以是外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序可以不必修改,保证了数据与程序的逻辑独立性。模式/内模式映像数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据库的全局逻辑结构与存储结构之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程建筑施工培训
- 四边形教材解读
- 职高九月班上工作总结
- 有机合成基础培训大纲
- 西点基础培训课件
- 云南省昭通市昭阳区苏家院乡中学2026届化学九上期中质量检测模拟试题含解析
- 江苏省南通市紫石中学2026届英语九上期末达标检测模拟试题含解析
- 山西简易轻钢房施工方案
- 铝挤压车间安全培训
- 2026届山东德州市武城县化学九年级第一学期期中考试试题含解析
- IQC基础知识培训课件
- 政府代建项目回购协议书范本
- 《机械制造装备设计》课程教学大纲
- 《世界奇花异草》课件
- 沟通能力培训课件x
- 半导体物理学全套课件
- 2024年09月2024秋季中国工商银行湖南分行校园招聘620人笔试历年参考题库附带答案详解
- 第一章-发型发展简史
- 智能计算系统:从深度学习到大模型 第2版课件 9、第九章-大模型计算系统
- 企业所得税汇算清缴政策培训会课件-于永勤
- 儿科静脉输液安全
评论
0/150
提交评论