数据库原理及应用
-- SQL Server 2000
陈学进于 2010年三月
实验指导书
实验一用E-R图设计数据库
1.实验目的
1)熟悉E-R模型的基本概念和图形的表示方法。
2)掌握将现实世界的事物转化成E-R图的基本技巧。
3)熟悉关系数据模型的基本概念。
4)掌握将E-R图转化成关系表的基本技巧。
2.实验内容
1)根据需求确定实体,属性和联系。
2)将实体,属性和联系转化为E-R图。
3)将E-R图转化为表。
3.实验步骤
1)设计能够表示出班级与学生关系的数据库。
①确定班级实体和学生实体的属性。
②确定班级和学生之间的联系,给联系命名并指出联系的类型。
③确定联系本身的属性。
④画出班级与学生关系的E-R图。
⑤将E-R图转化为关系模式,写出各关系模式并标明各自的主码或外码。
2)设计能够表示出顾客与商品关系的数据库。
①确定顾客实体和商品实体的属性。
②确定顾客和商品之间的联系,给联系命名并指出联系的类型。
③确定联系本身的属性。
④画出顾客与商品关系的E-R图。
⑤将E-R图转化为关系模式,写出表的关系模式并标明各自的主码或外码。
3)设计能够表示学校与校长关系的数据库。
①确定学校实体和校长实体的属性。
②确定学校和校长之间的联系,给联系命名并指出联系的类型。
③确定联系本身的属性。
④画出学校与校长关系的E-R图。
⑤将E-R图转化为关系模式,写出表的关系模式并标明各自的主码或外码。
4)设计能够表示出房地产交易中客户,业务员和合同三者之间关系的数据库。
①确定客户实体,业务员实体和合同实体的属性。
②确定客户,业务员和合同三者之间的联系,给联系命名并指出联系的类型。
③确定联系本身的属性。
④画出客户,业务员和合同三者关系E-R图。
⑤将E-R图转化为关系模式,写出表的关系模式并标明各自的主码或外码。
5)学生之间相互交流各自设计的数据库。
实验二确定表中的关键字
1. 实验目的
1)正确理解候选关键字,主关键字,组合关键字,外关键字的基本概念。
2)能够正确判断给定的表中各种类型的关键字。
3)在设计数据库时能正确指定各种类型的关键字,知道如何实施数据完整性。
2. 实验内容
1) 复习候选关键字,主关键字,外关键字,组合关键字以及数据完整性的基本概念。
2) 在给出的部门表和员工表中能正确标识出各种类型的关键字。
3. 实验步骤
1)写出候选关键字,主关键字,组合关键字,外关键字,实体完整性,域完整性,参照完整性的定义。
已知部门表和员工表分别见表2-1和表2-2
2)
3)选择部门表和员工表的关键字。
4)在部门表和员工表的结构中标注主关键字。
5)在员工表中确定可能的组合关键字,并陈述理由。
6)确定在部门表和员工表中共有的属性。
7)指出哪个表中的属性是外关键字。
8)确定哪个表是主表,哪个表是从表。
9)部门表和员工表是如何通过关键字实施数据完整性的。
实验三关系规范化
1.实验目的
1)了解函数依赖的基本概念。
2)能正确判断某一关系是属于第几范式。
3)掌握规范化范式的方法。
2. 实验内容
1)复习函数依赖,数据规范化,范式的基本概念以及各级范式的判别标准。
2)判断给定的表满足哪级范式的条件。
3)将给定的表转换成满足特定等级范式条件的表。
3. 实验步骤
1)写出函数依赖,数据规范化,范式的定义以及各级范式的判别标准。
2)有表3-1所示的项目表1,判断其是否满足第一范式的条件,并说明理由。
3)有表3-2所示的项目表2,判断其是否满足第二范式的条件,并说明理由。
4)有表3-3所示的职员表,判断其是否满足第三范式的条件,并说明理由。
5)有表3-4所示的项目表3,判断其是否满足第三范式的条件,并说明理由。
6)
7)将项目表2转化成满足第二范式条件的表。
8)将职员表转换成满足第三范式条件的表。
9)将项目表3转换成满足BCNF条件的表。
10)非规范化数据带来的不利影响是什么?
实验四创建SQL Server 2000数据库和表
1. 实验的目的
1)熟悉企业管理器环境。
2)掌握创建数据库和表的操作。
2. 实验内容
1)熟悉SQL Server 2000 企业管理器环境。
2)创建XSCJ数据库。
3)在XSCJ数据库中创建学生情况表XSQK,课程表KC,学生成绩表XS_KC。
4)在XSQK、KC、XS_KC表中输入数据。
3. 实验步骤
1)启动SQL Server企业管理器,打开“SQL Server Enterprise Mananger”窗口,并在
左边的目录树结构中选择“数据库”文件夹。
2)选择“操作”菜单中的“新建数据库”命令,打开“数据库属性”对话框,并在“名
称”框内输入数据库名称XSCJ。
3)单击“确定”按钮,完成XSCJ数据库的创建。
4)打开刚才创建的“XSCJ”文件夹,并在“SQL Server Enterprise Mananger”窗口的
右边窗口中选择“表”对象。
5)选择“操作”菜单中的“新建表”命令,打开SQL Server的表编辑器窗口。
6) 根据表4-1所示的表结构增加新列。
7) 点击快捷工具栏上的快捷按钮,在弹出的“选择名称”对话框中输入表名XSQK ,然后单击“确定”按钮,关闭表编辑器窗口,完成新表的创建。
8) 打开“表”对象,在“SQL Server Enterprise Manager ”窗口的右边窗口中选择刚才创建的“XSQK ”表。
9) 选择“操作”菜单中的“打开表”子菜单下的“返回所有行”命令,打开表的数据记录窗口。
10) 输入的学生情况数据记录见表
4-2。
表4-2 学生情况记录
11) 同理建课程表KC,表的结构见表4-3所示,表的内容见表4-4所示。
表4-4 课程表记录
12)同理建成绩表XS_KC,表的结构见表4-5所示,表的内容见表4-6所示。
表4-6 成绩表XS_KC的记录
实验五查询数据库
1.实验目的
1)熟悉SQL Server 2000查询分析器环境。
2)掌握基本的SELECT查询及其相关子句的使用。
3)掌握复杂的SELECT查询,如多表查询、子查询、连接和联合查询。
2.实验内容
1)启动SQL Server 2000 查询分析器环境。
2)涉及多表的简单查询。
3)涉及多表的复杂查询。
3. 实验步骤
1)启动SQL Server查询分析器,打开“SQL查询分析器”窗口。
2)在“SQL查询分析器”窗口中选择要操作的数据库,如“XSCJ”数据库。
3)在KC表中查询学分低于3的课程信息,并按课程号升序排列。
在查询命令窗口中输入以下SQL查询命令并执行:
SELECT * FROM KC
WHERE KC.学分<3
ORDER BY 课程号
4)在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。
SELECT 学号,平均分=AVG(成绩) FROM XS_KC
GROUP BY 学号
ORDER BY 平均分 DESC
5)在XS_KC表中查询选修了3门以上课程的学生学号。
SELECT 学号 FROM XS_KC
GROUP BY 学号
HAVING COUNT(*)>3
6)按学号对不及格的成绩记录进行明细汇总。
SELECT 学号,课程号,成绩 FROM XS_KC
WHERE 成绩<60
ORDER BY 学号
COMPUTE COUNT(成绩)
BY 学号
7)分别用子查询和连接查询,求107号课程不及格的学生信息。
用子查询:
SELECT 学号,姓名,联系电话 FROM XSQK
WHERE 学号 IN
( SELECT 学号
FROM XS_KC
WHERE 课程号=’107’AND 成绩<60)
用连接查询:
SELECT 学号,姓名,联系电话 FROM XSQK
JOIN XS_KC ON XSQK.学号=XS_KC.学号
WHERE课程号=’107’AND 成绩<60
8)用连接查询在XSQK表中查询住在同一寝室的学生,即其联系电话相同SELECT A.学号,A.姓名,A.联系电话 FROM XSQK A JOIN XSQK B ON A.联系电话=B.联系电话 WHERE A.学号!=B.学号
请自已完成以下的查询:
9)查询XSQK表中所有的系名。
10)查询有多少同学选修了课程。
11)查询有多少同学没有选课。
12)查询与杨颖同一个系的同学姓名。
13)查询选修了课程的学生的姓名、课程名与成绩。
14)统计每门课程的选课人数和最高分。
15)统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。