数据库与信息系统实验.docx
- 文档编号:5829526
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:19
- 大小:761.35KB
数据库与信息系统实验.docx
《数据库与信息系统实验.docx》由会员分享,可在线阅读,更多相关《数据库与信息系统实验.docx(19页珍藏版)》请在冰豆网上搜索。
数据库与信息系统实验
目录
实验一数据库表的创建1
实验二数据库表的查询7
实验三数据库模型设计12
实验四数据库设计15
实验一数据库表的创建
1)启动SQLServer2008,“SQLServerManangementStudio”
2)单击链接(C)
打开“SQLServerManangementStudio”窗口,并在左边的目录树结构中选择“数据库”文件夹。
3)单击右键,选择“新建数据库”命令,打开“新建数据库”对话框,在“数据库名称”框内输入名称“教学管理系统”,注意数据文件和日志文件的属性设置
4)单击“确定”按钮,完成“教学管理系统”数据库的创建。
5)在左边的目录树中展开“数据库”下刚才创建的“教学管理系统”文件夹,然后在“表”对象上单击右键,选择“新建表”,右边窗格中显示SQLServer2008的表设计器。
学生学号char(7)
学生身份证号char(18)
学生姓名char(10)
学生性别char
(2)
学生移动电话char(11)
学生来自的城市char(10)
学生主修专业char(20)
学生院系char(20)
学生累计修满的学分int
6)设置主键
在表设计器中选择“学生学号”,右击,选择“设置主键”,得到下图,主键设置成功
7)展开表右击dbo.Student,选择编辑前200行,输入以下数据
再新建查询输入语句
select*fromstudent
得到结果:
8)修改表可以按照
展开表右击dbo.Student,选择编辑前200行,改第一行数据
S060101******19880526***王东民男135***11杭州计算机信息学院160
改为:
S060101******19880526***黄星星男135***11随州电子信息信息学院160
由结果知道修改成功
9)删除表:
再新建一个Course表
在左边的资源管理器中右击Course表,选择删除
单击确定,Course表删除。
表的删除可以采用SQL语言:
DROPTABLECourse
运行程序后,数据表删除Course
10)表的建立也可采用SQL语言来建立
采用SQL语言建立学生基本资料表STUDENT、课程基本资料表COURSE、教师基本资料表TEACHER、开课计划表OFFERING、注册选课表ENROLLMENT
SQL语言:
CREATETABLEstudent(
学生学号CHAR(7)PRIMARYKEY,学生身份证号CHAR(18),学生姓名CHAR(10),学生性别CHAR
(2),
学生移动电话CHAR(11),学生来自的城市CHAR(10),学生主修专业CHAR(20),学生院系CHAR(20),
学生累计修满的学分INT,
)
CREATETABLEcourse(
课程编号CHAR(6)PRIMARYKEY,课程名称CHAR(20),所用教材名称CHAR(20),
编著者CHAR(10),出版社CHAR(20),书的出版号CHAR(30),书的定价MONEY)
CREATETABLEteacher(
教师编号CHAR(6)PRIMARYKEY,教师身份证号CHAR(18),教师姓名CHAR(6),教师性别CHAR
(2),
教师移动电话CHAR(11),教师来自的城市CHAR(10),教师所在院系CHAR(20),教师职称级别CHAR(10),
院系负责人CHAR(6)FOREIGNKEYREFERENCESteacher(教师编号))
CREATETABLEoffering(
开课计划编号CHAR(6)PRIMARYKEY,
课程编号CHAR(6)FOREIGNKEYREFERENCEScourse(课程编号),
教师编号CHAR(6)FOREIGNKEYREFERENCESteacher(教师编号),
开课地点CHAR(10),开课学年CHAR(9),开课学期CHAR
(1),开课周数INT,
开课时间CHAR(16),该课学分INT)
CREATETABLEenrollment(
学生学号CHAR(7)FOREIGNKEYREFERENCESstudent(学生学号),
开课计划编号CHAR(6)FOREIGNKEYREFERENCESoffering(开课计划编号),
考试成绩FLOAT,PRIMARYKEY(学生学号,开课计划编号))
11)再往表里面插入数据
最终得到表的所有内容为:
学生基本资料表STUDENT:
课程基本资料表COURSE:
教师基本资料表TEACHER:
开课计划表OFFERING:
注册选课表ENROLLMENT
实验二数据库表的查询
一、单表查询:
1)查询表STUDENT中“学生性别”为“女”或者“学生主修专业”为“电子信息”的学生全部信息
SQL代码:
SELECT*FROMstudent
WHERE学生性别='女'OR学生主修专业='电子信息'
运行后结果如图:
2)查询表COURSE中“书的定价”为“NULL”的“课程名称”和“所用教材”,并按教材名称降序排列
SQL代码:
SELECT课程名称,所用教材名称,书的定价FROMcourse
WHERE书的定价ISNULL
ORDERBY课程名称DESC
运行后结果如图:
3)查询表TEACHER中教师中姓黄的老师的全部信息
SQL代码:
SELECT*FROMteacher
WHERE教师姓名LIKE'黄%'
运行后结果如图:
4)查询表OFFERING中开课周数为18周且按教师编号分组排列,并按开课学年降序排列
SQL代码:
SELECT*FROMoffering
WHERE开课周数=18
ORDERBY教师编号,开课学年DESC
运行后结果如图:
5)查询表ENROLLMENT中“学生学号”为“S060101”学生的考试成绩不低于平均分的考试成绩
SQL代码:
ELECT*FROMenrollment
WHERE考试成绩>=(SELECTAVG(考试成绩)FROMenrollmentWHERE学生学号='S060101')
AND学生学号='S060101'
运行后结果如图:
执行代码
SELECTAVG(考试成绩)FROMenrollmentWHERE学生学号='S060101'
结果为:
对比enrollment表可知结果正确
二、多表查询:
1)查询“学生学号”为“S060101”学生的学号,学生的姓名,课程名称及对应的课程开课学年,考试成绩,并按学生单个人的信息排列,成绩降序排列
SQL代码:
SELECTstudent.学生学号,student.学生姓名,course.课程名称,offering.开课学年,enrollment.考试成绩
FROMstudent,course,offering,enrollment
WHEREstudent.学生学号=enrollment.学生学号
ANDcourse.课程编号=offering.课程编号
ANDoffering.开课计划编号=enrollment.开课计划编号
ORDERBYstudent.学生学号,enrollment.考试成绩DESC
运行后结果如图:
2)用内连接实现多表查询教师姓名,教师所在院系及对应的教授课程,和课程对应开课地点,开课学年,开课学期,开课周数,开课时间,程开课学年,并按老师所在院系降序排列和个人的信息排列,
SQL代码:
SELECTteacher.教师姓名,teacher.教师所在院系,
course.课程名称,
offering.开课地点,offering.开课学年,offering.开课学期,
offering.开课周数,offering.开课时间
FROMoffering
INNERJOINcourse
ONoffering.课程编号=course.课程编号
INNERJOINteacher
ONoffering.教师编号=teacher.教师编号
ORDERBY教师所在院系DESC,教师姓名
运行后结果如图:
3)多表实现查询与“黄星星”有关的所有信息
SQL代码:
SELECT*
FROMstudent,course,teacher,offering,enrollment
WHEREstudent.学生姓名='黄星星'
ANDstudent.学生学号=enrollment.学生学号
ANDcourse.课程编号=offering.课程编号
ANDoffering.开课计划编号=enrollment.开课计划编号
ANDoffering.教师编号=teacher.教师编号
运行后结果如图:
三、扩展功能:
实现对设定表的记录的添加、修改等功能。
未修改之前结果如图:
SELECT*FROMstudent
1)记录的添加
添加学号,身份证号,姓名,性别,移动电话,来自城市,主修专业,院系,累计修满学分为
S060100******19880526***曾小贤男135***11上海电子信息信息学院160
SQL代码:
INSERTINTOstudentVALUES('S060100','******19880526***','曾小贤','男','135***11','上海','电子信息','信息学院','160')
运行之后结果如图:
SELECT*FROMstudent
2)记录的修改
将上述插入的数据中学生姓名“曾小贤”改为“张益达”
SQL代码:
UPDATEstudent
SET学生姓名='张益达'
WHERE学生姓名='曾小贤'
运行之后结果如图:
SELECT*FROMstudent
实验三数据库模型设计
一、教学管理系统的需求分析及主要任务
系统的开发的总体任务是实现教学系统的系统化、规范化、和自动化。
需求分析是在系统总体开发任务的基础上完成的,设计数据库系统时应该充分了解用户的各方面的需求,包括目前及将来可能的拓展需求态势。
因而数据库结构势必需在充分满足各种信息的输入和输出。
因此可归纳出学生信息系统所需完成的主体任务。
教学管理系统的主要任务如下:
⑴学生基本资料表,记录学生的一些基本信息,包括学生学号,学生身份证号,学生姓名,学生性别,学生移动电话,学生来自的城市,学生主修专业,学生所在院系,学生累计修满学分。
⑵课程基本资料表,记录课程的一些基本信息,包括课程编号,课程名称,课程所用教材,教材编著者,出版社,书的出版号。
⑶教师基本资料表,记录教师的一些基本信息,包括教师编号,教师身份证号,教师姓名,教师性别,教师移动电话,教师来自的城市,教师所在院系,教师职称级别,院系负责人。
⑷开课计划表,记录所开课程的一些基本信息,包括开课计划编号,课程编号,教师编号,开课地点,开课学年,开课学期,开课周数,开课时间,课的学分。
⑸注册选课表,记录学生所选课的一些基本信息,包括学生学号,开课计划编号,考试成绩)
二、教学管理数据库概念结构设计
概念设计就是E-R模型的分析与设计,它是整个数据库设计的关键。
下面使用实体联系图(E-R)模型来描述系统的概念结构,设计出满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这些实体包含各种具体的实际信息,通过相互之间的作用形成数据的流动。
本程序根据上面的设计规划出的实体有:
学生基本资料、课程基本资料、教师基本资料、开课计划、注册选课实体,它们的E-R图如下图所示。
三、教学管理数据库的逻辑结构设计
⑴学生基本资料表STUDENT(学生学号,学生身份证号,学生姓名,学生性别,学生移动电话,学生来自的城市,学生主修专业,学生所在院系,学生累计修满学分),PRIMARYKEY=学生学号。
⑵课程基本资料表COURSE(课程编号,课程名称,课程所用教材,教材编著者,出版社,书的出版号),PRIMARYKEY=课程编号。
⑶教师基本资料表TEACHER(教师编号,教师身份证号,教师姓名,教师性别,教师移动电话,教师来自的城市,教师所在院系,教师职称级别,院系负责人),PRIMARYKEY=教师编号,FOREIGNKEY=院系负责人(参考表为TEACHER)
⑷开课计划表OFFERING(开课计划编号,课程编号,教师编号,开课地点,开课学年,开课学期,开课周数,开课时间,课的学分),PRIMARYKEY=开课计划编号,FOREIGNKEY=课程编号(参考表为COURSE),FOREIGNKEY=教师编号(参考表为TEACHER)。
⑸注册选课表ENROLLMENT(学生学号,开课计划编号,考试成绩),PRIMARYKEY=(学生学号,开课计划编号),FOREIGNKEY=学生学号(参考表为STUDENT),FOREIGNKEY=开课计划编号(参考表为OFFERING)。
实验四数据库设计
一、数据库的物理结构设计
基于实验三的数据库概念结构和数据库的逻辑结构设计的结果,现在就可以实施将其转化为SQLServer2008数据库系统所支持的实际数据模型——数据表对象,并形成数据库中各个表格之间的关系。
教学管理系统数据库中各个表格的设计结果见表1-表5。
表1学生基本资料表STUDENT
列名(字段)
数据类型与长度
空否
说明
学生学号
char(7)
NotNull
主键
学生身份证号
char(18)
Null
学生姓名
char(10)
Null
学生性别
char
(2)
Null
学生移动电话
char(11)
Null
学生来自的城市
char(10)
Null
学生主修专业
char(20)
Null
学生院系
char(20)
Null
学生累计修满的学分
int
Null
表2课程基本资料表COURSE
列名(字段)
数据类型与长度
空否
说明
课程编号
char(6)
NotNull
主键
课程名称
char(20)
Null
所用教材名称
char(20)
Null
编著者
char(10)
Null
出版社
char(20)
Null
书的出版号
char(30)
Null
书的定价
money
Null
表3教师基本资料表TEACHER
列名(字段)
数据类型与长度
空否
说明
教师编号
char(6)
NotNull
主键
教师身份证号
char(18)
Null
教师姓名
char(6)
Null
教师性别
char
(2)
Null
教师移动电话
char(11)
Null
教师来自的城市
char(10)
Null
教师所在院系
char(20)
Null
教师职称级别
char(10)
Null
院系负责人
char(6)
Null
外键(院系负责人)(参考表为TEACHER)
表4开课计划表OFFERING
列名(字段)
数据类型与长度
空否
说明
开课计划编号
char(6)
NotNull
主键
课程编号
char(6)
Null
教师编号
char(6)
Null
开课地点
char(10)
Null
开课学年
char(9)
Null
开课学期
char
(1)
Null
开课周数
int
Null
开课时间
char(16)
Null
该课学分
int
Null
表5注册选课表ENROLLMENT
列名(字段)
数据类型与长度
空否
说明
学生学号
char(7)
NotNull
主键(学生学号,开课计划编号)
外键(学生学号)(参考表为STUDENT)
外键(开课计划编号)(参考表为OFFERING)
开课计划编号
char(6)
NotNull
考试成绩
float
Null
二、数据库的实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。
现在就用SQLServer2008数据库系统中实现该逻辑结构。
利用数据库系统中的SQL查询分析器实现,具体语句如下:
(1)学生基本资料表STUDENT
CREATETABLEstudent(
学生学号CHAR(7)PRIMARYKEY,学生身份证号CHAR(18),学生姓名CHAR(10),学生性别CHAR
(2),
学生移动电话CHAR(11),学生来自的城市CHAR(10),学生主修专业CHAR(20),学生院系CHAR(20),
学生累计修满的学分INT,
)
(2)课程基本资料表COURSE
CREATETABLEcourse(
课程编号CHAR(6)PRIMARYKEY,课程名称CHAR(20),所用教材名称CHAR(20),
编著者CHAR(10),出版社CHAR(20),书的出版号CHAR(30),书的定价MONEY)
(3)教师基本资料表TEACHER
CREATETABLEteacher(
教师编号CHAR(6)PRIMARYKEY,教师身份证号CHAR(18),教师姓名CHAR(6),教师性别CHAR
(2),
教师移动电话CHAR(11),教师来自的城市CHAR(10),教师所在院系CHAR(20),教师职称级别CHAR(10),
院系负责人CHAR(6)FOREIGNKEYREFERENCESteacher(教师编号))
(4)开课计划表OFFERING
CREATETABLEoffering(
开课计划编号CHAR(6)PRIMARYKEY,
课程编号CHAR(6)FOREIGNKEYREFERENCEScourse(课程编号),
教师编号CHAR(6)FOREIGNKEYREFERENCESteacher(教师编号),
开课地点CHAR(10),开课学年CHAR(9),开课学期CHAR
(1),开课周数INT,
开课时间CHAR(16),该课学分INT)
(5)注册选课表ENROLLMENT
CREATETABLEenrollment(
学生学号CHAR(7)FOREIGNKEYREFERENCESstudent(学生学号),
开课计划编号CHAR(6)FOREIGNKEYREFERENCESoffering(开课计划编号),
考试成绩FLOAT,PRIMARYKEY(学生学号,开课计划编号))
二、教学管理系统数据库的关系图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 信息系统 实验