第三章 关系数据库系统RDBS作业
一. 简答题
1. 对于表中几个特殊的列,如主键、候选键和外键,分别用什么限制来保证它们的完整性?对表中其它一般性的列,用什么限制来保证它们的完整性?
主键约束:主要是针对主键,以保证主键值的完整性。要求主键值必须满足值唯一、不能为空值。
唯一约束:主要是针对候选键,以保证主键值的完整性。要求候选键必须满足值唯一、可有一个且仅有一个空值。
外键约束:是维护表与表之间外键所对应属性(组)数据的一致性。主表到从表,表示主表中的主键值在修改和删除时,从表中与该主键值相同的外键值可级联(CASCADE)修改和删除,或改为空值(SET NULL)或默认值(SET DEFAULT),或禁止(NO ACTION)主表主键值的修改和删除;从表到主表,表示从表中的外键值在插入和修改时,其值应参照(REFERENCE)主表中的主键值。
对于其他一般性的列,还有检查约束和断言。
2. SQL SERVER中规则的目的?
RULE主要是针对表中的某一列,指明该列的取值范围。
3. SQL SERVER中在定义某些限制时,分列级与表级,其分类的原则是什么?
列级检查约束针对表中一列,表级检查约束则针对同一表中多列。
4. 外键限制定义的条件?
在含外键的表上定义;
定义外键限制的列必须是另一个表中的主键。
5. 请说明在维护表间数据完整时外键限制与触发器的异同。
1.错误信息的管理上:约束与触发器在遇到问题时都可以返回给用户一定的错误信息。但是,触发器可以返回数据库管理员自定义的错误信息,而且还可以实现较为复杂的逻辑控
制,而约束只能够通过标准化的系统错误信息来传递错误消息;
2.性能上的差异分析:从性能上来说,约束的执行性能都要高一点。虽然约束的执行性能比较高,但是其向用户提供的错误信息确实非常有限的。
3.管理维护的工作量:由于约束基本上都是数据库现成的解决方案。无论是索引约束还是外键约束,又或者是check约束。往往在数据库系统中已经有了现成的解决方案。数据库管理员通过直接引用这些解决方案即可以实现特定的功能,而不用再费力的编写触发器来实现。而触发器中系统没有现成的可以引用,而都需要数据库管理员通过实际清理来进行编写。
6. 关系代数的基本操作符?笛卡尔乘积最大的作用是什么?
关系代数的基本操作符:SELECTION(选择)、PROJECTION(投影)、UNION(并或称联合)、INTERSECTION(交)、DIFFERENCE(差)、CROSS-PRODUCT(积)。
笛卡尔操作的最大作用是把任意两个不相关的表联接起来。
7. 为什么说在实际查询中自然连接是用得比较多的?
自然连接可以从两个关系实例的笛卡尔乘积中选出同时满足一个或多个条件等式的行,每个条件等式中的列名相同。同时,在结果模式中重复的字段只有一个。
8. 关系代数中对结果有重复元组时,如何处理?
对关系代数中对结果有重复元组时,将去掉重复元组。
9. 连接的分类?
条件连接(Condition Join):加入连接条件,对两个关系实施连接;
等连接(Equi Join):是条件连接的特例。要求连接条件由等式组成;
自然连接(Natural Join):是等连接的特例。要求等式中涉及的字段名必须相等;
外连接(Outer Join):是涉及有空值的自然连接。
2. 单项选择题
1. (③ )不是关系代数的基本操作。
①Selection ②Projection ③Join ④Intersection
2. (③ )用唯一限制来约束。
①主键 ②外键 ③候选键 ④简单键
3. (② )与“列”不同义。
①字段 ②元组 ③成员 ④属性
三. 判断题(正确打√,错误打×)
1. ( √ )关系代数中的改名操作既可用于改名也可用于存放临时关系模式结果。
2. ( × )对主表,插入操作可能会违背参照完整性限制,但删除和更新不会。
3. ( × )等连接是自然连接的特例.
4. ( √ )关系代数是与关系模型有关的查询语言。
5. ( √ )外连接可能涉及有空值。
四. 设有如下图所示三个关系实例X、Y和Z,请分别求出下列各表达式的值。
(1)σA = a1(Y×Z)
(2)Y Z
(3)X Y Z
(1)σA = a1(Y×Z)
{<b1,c2,a1,c1>,<b1,c2,a1,c2>,<b2,c1,a1,c1>,<b2,c1,a1,c2>,<b1,c1,a1,c1>,<b1,c1,a1,c2>,<b1,c3,a1,c1>,<b1,c3,a1,c2>}
(2)Y Z
C A B
c1 a1 b2
c1 a1 b1
c2 a1 b1
创建唯一约束sql语句 c3 a2 b1
c4 a3 null
(3)X Y Z
A B C
a1 b1 c1
a1 b1 c2
a1 b2 c1
a2 b1 c3
五.一个电影资料库有四个实体“电影”,“演员”,“导演”,“电影公司”。“电影”的属性有电影编号,电影名,电影类型,对白语言;“演员”的属性有演员工作证号,姓名,出生年,性别;“导演”的属性有导演工作证号,姓名,出生年,性别;“电影公司”的属性有公司名称,所在国家。
这些实体间的联系及它们的属性有:演员出演电影,为多对多联系,该联系含角属性;导演执导电影,每部电影只由一个导演执导;演员和导演属于电影公司;电影公司出品电影,有出品年份属性。
1) 请画出ER图,要求标出实体的主键、联系的约束类型和键约束。
2) 将此ER图转换为关系模型,要求标出各关系的主键,如果存在的话还应指明其候选键和外键。
3) 请用关系代数表达式和SQL分别表达下列查询
① 查询1957年之前出生的男演员的姓名。
② 查询2000年环球公司出品的电影的名字和导演姓名。
③ 查询张一导演所导演的影片中的主角演员姓名。
1)
2)
演员(演员工作证号,姓名,出生年,性别)演员工作证号为主健;
导演(导演工作证号,姓名,出生年,性别)导演工作证号为主健;
电影公司(公司名称,所在国家)电影公司为主健;
电影(电影编号,电影名,电影类型,对白语言,导演工作证号),电影编号为主键,导演工作证号为外键,电影名为候选键;
出演(演员工作证号,电影编号,角)(演员工作证号,电影编号)为主健,演员工作证号和电影编号各为外键;
出品(电影编号,公司名称,出品年份)(电影编号,公司名称)为主健,电影编号和公司名称各为外键;
属于a(公司名称,演员工作证号)(公司名称,演员工作证号)为主健,公司名称和演员工作证号各为外键;
属于b(公司名称,导演工作证号)(公司名称,导演工作证号)为主健,公司名称,导演工作证号各为外键。
3)①σ出生年 < 1957(演员)∩σ性别 =男(演员)
SELECT *FROM 演员WHERE出生年<1957
INTERSECT
SELECT*FROM WHERE性别=男
②ρ(Temp,σ出品年份 =2000(出品)∩σ公司名称=环球公司(出品))
π电影名,姓名(Temp 电影 导演)
SELECT 电影名
FROM 出品,电影
WHERE出品.出品年份=‘2000’AND出品.公司名称=环球公司AND出品.电影编号=电影.电影
编号
INTERSECT
SELECT姓名
FROM 出品,电影,导演
WHERE出品.出品年份=‘2000’AND出品.公司名称=环球公司AND出品.电影编号=电影.电影编号AND导演.导演工作证号=电影.导演工作证号
③π姓名(σ姓名=张一(导演) 电影 出演 演员)
SELECCT 姓名
FROM 导演,电影,出演,演员
WHERE 导演.姓名=‘张一’AND电影.导演工作证号=导演.导演工作证号AND出演.电影编号=演员.工作证号
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论