数 据 库 技 术
实验报告
学 校
专 业
年 级
学 号
姓 名
年 月 日
一、实验名称
学生信息管理系统数据库设计
二、实验目的
学生信息管理系统的功能是收集学生的个人信息, 以便向老师提供每个学生在校 或毕业生学籍的情况,还可以让学生用自己的学号去查看自己在校期间的表现。而数据库技术是一个理论和实际紧密联系的技术,在学习过程中,除了解数据模型、数据库系统结构、数据库应用方法等知识外,还应通过实验对相关技术加深认识,加强实践能力。上机实验的主要目标如下:
(1)通过上机操作,加深对数据库系统理论知识的理解。
(2)通过使用具体的DBMS,了解一种实际的数据库管理系统并掌握其操作技术。
(3)通过上机实验,提高动手能力,提高分析问题和解决问题的能力。
三、实验内容及步骤
定义四个表:Student、 Depts、Course、Reports
实验一:
1. 设计如上系统的表结构,定义每个表的主键和外键,为每个属性选择合适的数据类型,定义每个属性是否允许空值,是否有默认值等
表1. Student表:
命令:
CREATE TABLE [dbo].[学生档案信息] (
[Sno] [varchar] (50) NOT NULL ,
[Sname] [char] (10) NOT NULL ,
[Ssex] [char] (10) NOT NULL ,
[Sclass] [char] (10) NOT NULL ,
[Birth] [int] (4) NOT NULL ,
[Saddress] [char] (10) NOT NULL ,
[Sdept] [varchar] (50) NOT NULL ,
[Stime] [int] (4) NOT NULL ,
) ON [PRIMARY]
GO
表2. Course表
表3. Depts表Major为主键
表4. Reports表StuID为主键
2. 在企业管理器中创建设计的表,指定表的关键字,创建约束
将设计的表和约束用SQL语句表达
3. 使用SQL语句,在你设计的每个表中插入至少10条数据,使记录满足数据约束要求
实验二:
针对实验一建立的表,使用SQL语句完成:
1. 从每个表中删除1条数据
2. 在每个表中修改1条数据
3. 每一个表中增加1条数据
4. 查询计算机系的全体学生姓名
5. 查询张三的所在的系名
6. 查询李四所选课程名称
7. 查询所有年龄在18-22岁之间的学生姓名
8. 查询每个学生的学号、姓名、选修的课程名、成绩
直接打印
四、实验分析
1.对数据库中每一个表的主要设计思路及关键设计点
Student表应该包括一个学生的基本信息,比如学号、姓名、性别、民族、年龄、入学时间等;Course表本来可以包括很多内容,但是我这次设计的时候只是调用了课程的课程编号和课程名,这是因为一般我们在查询成绩的时候最关注的就是这两项;Depts表则以我们最常用的用专业来区分的方式设置了专业为主键;Reports表简单明了,学号和成绩两项最重要的都包括了进去。
2.实验过程中涉及到的SQL语句及必要的文字说明:
实验中各步骤的SQL语句如下:
1 delete from Students where sname=’张三’
delete from Depts where Dnam=’计算机系’(本语句的功能是从表中删除“计算机系-张三”这条记录)
2 update Students set sname=’李四’ where sname=’张三’(本语句的功能是把表中的“张三”替换为“李四”)
3 insert into Depts values(‘d01’,’计算机系’)(本语句的功能是在表中插入一条记录:“计算机系”)
4 select s.sname as 姓名 from Students s,Depts d where d.Dname='计算机系' and s.Dno=d.Dno(本语句的功能是查询计算机系的全体学生姓名)
5 select d.Dname from Students s,Depts d where s.Sname='张三' and s.Dno=d.Dno(本语句的功能是查询张三的所在的系名)
6 select c.cname from Course c,Students s,Reports r where s.sname=’李四’ and r.Cno=c.Cno and r.Sno=s.sno(本语句的功能是查询李四所选课程名称)
7 select sname from Students where Sage between 18 and 22(本语句的功能是查询所有年龄在18-22岁之间的学生姓名)
8 select s.sno,s.sname,c.cname,r.grade from Reports r,Students s,Course c where r.Cno=c.Cno and r.Sno=s.Sno(本语句的功能是查询每个学生的学号、姓名、选修的课程名、成绩)
四个表的建表语句如下:
建表语句
CREATE TABLE [dbo].[Reports](
[Sno] [char](5) NOT NULL,
[Cno] [char](6) NOT NULL,
[Grade] [int] NULL,
CONSTRAINT [PK_Reports] PRIMARY KEY CLUSTERED
(
[Sno] ASC,
[Cno] ASC
) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Depts](
[Dno] [char](5) NOT NULL,
[Dname] [char](20) NOT NULL,
CONSTRAINT [PK_Depts] PRIMARY KEY CLUSTERED
(
[Dno] ASC
) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Course](
[Cno] [char](6) NOT NULL,
[Cname] [char](20) NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED
(
[Cno] ASC
) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Students](
[Sno] [char](5) NOT NULL,
[Sname] [char](20) NOT NULL,
[Ssex] [char](2) NULL,
[Sage] [int] NULL,
[Dno] [char](5) NULL,
CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED
(
[Sno] ASC
) ON [PRIMARY]
) ON [PRIMARY]
五、实验结论
1.在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。
2.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试带来很大的方便。
3.懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。由于在外面工作以及其他原因,我无法借到专业书籍,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。
第二篇:数据库技术及应用实验报告模板
数据库技术及应用实验报告
注: 1. 如有需要,可随时调整表格大小
2. 必需的附加文档请一并订在一起交上