当前位置:文档之家› 《关系数据库与SQL_Server_2005课后答案——修改版》

《关系数据库与SQL_Server_2005课后答案——修改版》

关系数据库与SQL Server 2005习题参考答案(修改版)第1章关系数据库原理1.数据是数据库中存储的基本对象。

数据库是长期存储在计算机内、有组织的、可共享的数据集合。

数据库管理系统是位于用户与操作系统之间的一层数据管理软件。

数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及开发工具)、应用系统、数据库管理员和用户构成。

2.数据库系统的特点有:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制。

3.数据库管理系统的主要功能有:数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。

4.1:1的E-R图1:m的E-R图m:n的E-R图5.6.公司(公司代码,公司名,地址)部门(部门代码,部门名)员工(员工代码,姓名,性别,年龄,职务)商品(商品代码,商品名,单价,数量)厂家(厂家代码,厂家名,地址)拥有(公司代码,部门代码)属于(部门代码,员工代码)销售(员工代码,商品代码,销售量)供货(商品代码,厂家代码)7.条件连接是把两个表中的行按照给定的条件进行拼接而形成的新表,结果列为参与连接的两个表的所有列。

自然连接要求两个表有共同属性(列)。

自然连接的结果表是参与操作的两个表的共同属性上进行等值条件连接后,再去除重复的属性后得到的新表。

8.9.关系的完整性规则包括实体完整性、域完整性和参照完整性三个方面。

实体完整性用于保证数据库表中的每一个元组都是惟一的,要求在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。

域完整性用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内,要求由用户根据实际情况,定义表中属性的取值范围。

参照完整性用于确保相关联的表间的数据保持一致,要求“不引用不存在的实体”,即:不允许在一个关系中引用另一个关系中不存在的元组。

例如:主表:学生(学号,姓名,性别,专业号,年龄)从表:专业(专业号,专业名)主表的“专业号(外键)”的取值只能为两种情况:若取非空值,则它必须是从表中存在的值;取空值(null),表明尚未给学生分配专业,null不等于0或空字符串。

10.在关系数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。

一个低一级范式的关系模式,通过分解可以转换为若干个高一级范式的关系模式,这种过程称为关系的规范化。

关系的规范化主要目的是解决数据库中数据冗余、插入异常、删除异常和更新异常等数据存储问题。

关系规范化的基本方法是逐步消除关系模式中不合适的数据依赖,使模式达到某种程度的分离,也就是说,不要将若干事物混在一起,而要彼此分开,用一个关系表示一事或一物。

从第一范式到第二范式,消除了非主属性对码的部分函数依赖;从第二范式到第三范式,消除了非主属性对码的传递函数依赖;从第三范式到BCNF,消除了关系中冗余的码。

习题21.微软公司为用户提供了5种版本的SQL Server 2005:简易版、工作组版、标准版、企业版、开发人员版。

2.SQL Server 2005的新特性:企业级数据管理的增强功能、提高开发者能力的新技术、查询通知、多活动结果集、依据镜像的透明故障转移、商务智能。

3.SQL Server 2005的配置工具包括:Notification Services命令提示、Reporting Services配置、SQL Server Configuration Manager、SQL Server错误和使用情况报告、SQL Server外围应用配置器。

4.SQL Server 2005安装完成后,包括以下的系统数据库:Master数据库、Model数据库、Msdb数据库、Tempdb数据库、Resource数据库。

习题3一、填空题1.Master数据库Model数据库Msdb数据库Tempdb数据库Resource 数据库2.主数据文件次数据文件事务日志文件3.可恢复所有未完成的事务,保证数据库操作的一致性和完整性4.CREATE DA TABASE5.ALTER DATABASE6.DROP DATABASE7.sp_helpdb8.数据数据9.为空删除文件组中的文件10.主二、简答题1.分离数据库时,如果有用户与数据库连接,在“状态”列显示“未就绪”,此时分离数据库会操作失败。

所以要分离数据库先要结束那些正在使用数据库的进程。

2.备份数据库有4种类型:完整备份、差异备份、事务日志备份、文件和文件组备份。

三、上机题create database testdbon primary( name=td1, filename=‘e:\sql\td1.mdf',size=5, maxsize=20, filegrowth=10% ),( n ame=td2, filename=‘e:\sql\td2.ndf',size=10, maxsize=30, filegrowth=2 ),filegroup user1( name=td3, filename=‘e:\sql\td3.ndf',size=5, maxsize=unlimited, filegrowth=2 )log on( name=tlog, filename=' e:\sql\tlog.ldf',size=4, maxsize=unlimited, filegrowth=20% )习题4一、填空题1.主键约束唯一性约束外键约束检查约束空值约束默认值约束2.单个列定义所有列定义修改该表的方式3.一多空非空4.相应的约束5.外键T2二、上机题1.alter table 学生表add constraint pk_xh primary key (学号),constraint uq_email unique (EMAIL),constraint df_xb default ‘男’ for 性别alter table 学生表alter column 姓名char(8) not null2.alter table 成绩表add constraint pk_xh_kcm primary key (学号, 课程名),constraint fk_xh foreign key (学号) references 学生表(学号),constraint ck_cj check (成绩>=0 and 成绩<=100)alter table 成绩表alter column 课程名char(20) not null3.insert 学生表(学号, 姓名, 性别, 电话, EMAIL)values (‘020107’, ‘田芳’, ‘女’, ‘65926699’, ‘tianfang@’)goinsert 成绩表(学号, 课程名, 成绩)values (‘020107’, ‘数据库基础’, 85)4.alter table 学生表add 序号int identity5.alter table 学生表alter column 电话char(11)6.exec s p_rename ‘学生表’, ‘xs b’goexec s p_rename ‘成绩表’, ‘cjb’7.(略)习题5一、填空题1.SELECT2.WHERE3.连接4.分组5.排序6.ORDER BY7.设定组或聚合的查询条件HAVING子句可以使用汇总函数,而WHERE 子句则不能二、上机题1.select 课程名, 授课教师, 开课学期from kcwhere 开课学期=22.select 姓名, 性别, 联系电话from xsqkwhere 性别=03.select 学号, 课程号, 成绩from xs_kcwhere 成绩>=804.select 学号, 课程号, 成绩from xs_kcwhere 成绩>=80 or 成绩<605.select 学号, 姓名, 出生日期from xsqkwhere 出生日期not between ‘1980-07-07’ and ‘1980-09-30’6.select *from xsqkwhere 姓名like ‘陈_’7.select *from xsqkwhere 学号like ‘%1%’8.select *from xsqkwhere 联系电话like ‘_ _ _ _ _ _ [46] _’9.select *from kcwhere 开课学期in (1, 3, 5)10.select 学号, 姓名, 出生日期from xsqkorder by 出生日期11.select 开课学期, sum(学分) as 各学期的学分合计from kcgroup by 开课学期12.select 学号, count(*) as 每个学生选修的课程门数from xs_kcgroup by 学号13.select 课程名称, 开课学期, 学分from kccompute sum(学分)14.select 课程名称, 开课学期, 学分from kcorder by 2compute sum(学分) by 开课学期15.select 学号, avg(成绩) as 学生的平均分from xs_kcgroup by 学号16.select 学号, avg(成绩) as 学生的平均分from xs_kcgroup by 学号having avg(成绩) between 70 and 8017.select 学号, 课程号, 成绩into temp_kcfrom xs_kcorder by 课程号, 成绩desc18.select max(成绩) as 101课程的最高分, min(成绩) as 101课程的最低分from xs_kcwhere 课程号=’101’19.select 开课学期, count(*) as 每学期开设的课程门数from kcgroup by 开课学期20.select 专业名, count(专业名) as 各专业人数from xsqkgroup by 专业名21.select 学号, xs_kc.课程号, 授课教师, 开课学期, 成绩from kc, xs_kcwhere kc.学号=xs_kc.学号and 成绩<6022.select 学号, sum(成绩) as 各学生的总分from xs_kcgroup by 学号having sum(成绩)>=100order by sum(成绩) desc23.select 学号, 姓名from xsqkwhere (select count(课程号)from xs_kcwhere xsqk.学号=xs_kc.学号and 成绩>=60 )=224.select *from xs_kc awhere 成绩=(select max(成绩)from xs_kc bwhere a.课程号=b.课程号)25.select *from xs_kc awhere 成绩=(select min(成绩)from xs_kc bwhere a.学号=b.学号)习题6一、填空题1.标准视图索引视图分区视图2.虚拟表CREATE VIEW3.基表4.聚集索引非聚集索引唯一索引复合索引全文索引XML索引5.创建表6.数据库二、操作题1.create view v_平均成绩asselect 学号,avg(成绩) as 平均成绩from xs_kcgroup by 学号having avg(成绩)>=902.create view v_选课信息asselect a.姓名,b.课程名from xsqk a,kc b,xs_kc cwhere a.学号=c.学号and b.课程号=c.课程号and a.班级='网络071'3.create index ix_课程名on kc(课程名)习题71.规则是绑定到列或用户自定义数据类型上的数据库对象,用来指定列可以接受哪些数据值。

相关主题