学生选课系统的数据库设计与实现.doc
《学生选课系统的数据库设计与实现.doc》由会员分享,可在线阅读,更多相关《学生选课系统的数据库设计与实现.doc(11页珍藏版)》请在冰豆网上搜索。
![学生选课系统的数据库设计与实现.doc](https://file1.bdocx.com/fileroot1/2022-10/7/bac4c52f-2253-4337-a694-9e2981ec8234/bac4c52f-2253-4337-a694-9e2981ec82341.gif)
数据库系统概论
实验报告
学号:
姓名:
提交日期:
2010-12-15
成绩:
【实验名称】
学生选课系统的数据库设计与实现
【实验内容】
1、熟悉数据库设计方法;
2、熟悉E-R图到关系模式的转换;
3、掌握SQLServer2005数据库的创建SQL语句,理解数据库文件组、文件逻辑名和物理名称的具体含义;
4、掌握SQLServer2005中用SQL语句建立数据库表,设置数据库完整性约束;
5、掌握用SQLServer2005建立表的关系图,清楚的表示各表之间的联系。
【实验步骤】
一、数据库的逻辑设计
图
(一)班级、学生、课程实体类型及联系型的ER图
图
(二)班级实体的分ER图
图(三)课程实体的分ER图
图(四)学生实体的ER图
将上述的E-R图转换为关系模型,关系的主键用下横线标出。
学生(学号,姓名,性别,年龄,班级号)
课程(课程号,课程名,课时,学分)
班级(班级号,班级名,人数,专业)
选课(课程号学号,成绩)
二、数据库的物理设计
1.建表语句:
本数据库共创建了四张表,其建表语句如下
1.班级表
createtableclass
(classNointnotnullprimarykey,
classNamechar(20),
sdeptchar(20),
numberint)
2.学生表
createtablestudent
(studentNointnotnullprimarykey,
studentNamechar(20),
sexchar(20),
ageint,
classNoint)
3.课程表
createtablecourse
(courseNointnotnullprimarykey,
courseNamechar(20),
gradeint)
4.选课表
createtablechoice
(studentNoint,
courseNoint。
resultint,
primarykey(studentNo,courseNo))
2.说明外码语句
altertablechoice
addforeignkey(studentNo)referencesstudent(studentNo),
foreignkey(courseNo)referencescourse(courseNo)
altertablestudent
addforeignkey(classNo)referencesclass(classNo)
3.记录插入语句:
(1)class表:
insertclassvalues(40801,'yyy','os',35)
insertclassvalues(40802,'xx','ad',45)
insertclassvalues(40803,'rr','cs',36)
insertclassvalues(40804,'yy','os',35)
insertclassvalues(40805,'ee','ry',78)
insertclassvalues(40806,'yyy','os',35)
insertclassvalues(40807,'xg','ad',45)
insertclassvalues(40808,'ry','cs',36)
insertclassvalues(40809,'yd','os',65)
insertclassvalues(408010,'eg','ry',48)
(2)student表:
insertstudentvalues(10001,'aa','f',23,40801)
insertstudentvalues(10002,'df','f',23,40802)
insertstudentvalues(10003,'adf','f',22,40802)
insertstudentvalues(10004,'gh','m',23,40803)
insertstudentvalues(10005,'dc','f',24,40804)
insertstudentvalues(10006,'sd','m',23,40802)
insertstudentvalues(10007,'dfc','f',23,40803)
insertstudentvalues(10008,'xc','m',25,40805)
insertstudentvalues(10009,'sd','f',23,40806)
insertstudentvalues(100010,'cv','f',27,40806)
(3)course表:
insertcoursevalues(1,'operating',48,8)
insertcoursevalues(2,'computer',24,4)
insertcoursevalues(3,'music',56,12)
insertcoursevalues(4,'compile',48,8)
insertcoursevalues(5,'oracle',32,6)
insertcoursevalues(6,'sql',48,8)
(4)choice表:
insertchoicevalues(10001,1,80)
insertchoicevalues(10001,2,85)
insertchoicevalues(10002,3,86)
insertchoicevalues(10002,5,45)
insertchoicevalues(10003,1,80)
insertchoicevalues(10004,2,87)
insertchoicevalues(10004,6,89)
insertchoicevalues(10005,1,90)
insertchoicevalues(10005,4,100)
insertchoicevalues(10006,1,60)
insertchoicevalues(10006,3,49)
insertchoicevalues(10007,5,70)
insertchoicevalues(10008,1,70)
insertchoicevalues(10008,6,78)
insertchoicevalues(10009,2,80)
insertchoicevalues(100010,3,78)
insertchoicevalues(100010,1,80)
insertchoicevalues(100010,2,78)
insertchoicevalues(100010,4,89)
insertchoicevalues(100010,5,45)
4、查询记录:
1.选择输出学号、姓名满足性别为女,年龄小于25
selectstudentNo,studentName
fromstudent
wheresex='f'andage<25
5.创建视图
创建视图:
选择班级人数>50的班级输出其班级号和人数
createviewNum
as
selectclassNo,number
fromclass
wherenumber>50
查询语句
select*fromNum
6.插入数据
插入数据:
插入student表中一个学生,学生名为newstudent,性别为女,年龄34,班级号为40806
insertstudentvalues(100011,'newstudent','f',24,40806)
三、利用SQLServer2005的ManagementStudio来创建表的关系图,创建好的关系图如下所示:
四.实验体会
通过这次实验,让我对sqlserver2005的使用更加熟悉了,同时也加深了我对课本上数据库知识的理解,这次实验可以说是我第一次完成的一个整体的数据库实验。
此次实验中,我完成了从概念设计到逻辑设计,也就是完成了ER图的设计并完成了向关系模型的转换,完成了数据库的建立、表的建立、视图的创建,最后还完成了表之间的关系图。
一个数据库的创建首先要对客户的需求进行充分的分析,找出创建数据库所需的实体和实体间的关系画出E-R图,确定要创建的表的数量和每张表的属性、主键和外键。
在动手实验的过程中我遇到很多困难,比如如何删除表中的数据但不保留到日志文件中,数据的不普遍性所造成的查询等操作的空表等等,但是正是这些问题才让我学到了更多,同时也享受到了解决问题后的喜悦。
更重要的是,我对数据库产生了浓厚的兴趣,相信以后会把学到的东西应用到实践中去的。
五.附录(SQL语句)
--班级表
createtableclass
(classNointnotnullprimarykey,
classNamechar(20),
sdeptchar(20),
numberint)
----学生表
createtablestudent
(studentNointnotnullprimarykey,
studentNamechar(20),
sexchar(20),
ageint,
classNoint)
createtablecourse
(courseNointnotnullprimarykey,
courseNamechar(20),
courseTimeint,
gradeint)
createtablechoice
(studentNoint,
courseNoint,
resultint,
primarykey(studentNo,courseNo))
altertablechoice
addforeignkey(studentNo)referencesstudent(studentNo),
foreignkey(courseNo)referencescourse(courseNo)
altertablestudent
addforeignkey(classNo)referencesclass(classNo)
insertclassvalues(40801,'yyy','os',35)
insertclassvalues(40802,'xx','ad',45)
insertclassvalues(40803,'rr','cs',36)
insertclassvalues(40804,'yy','os',35)
insertclassvalues(40805,'ee','ry',78)
insertclassvalues(40806,'yyy','os',35)
insertcla