数据库第三章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章关系数据库系统RDBS
一. 简答题
1.对于表中几个特殊的列,如主键、候选键和外键,分别用什么限制来保证它们的完整性?对
表中其它一般性的列,用什么限制来保证它们的完整性?
答:主键:其值必须是唯一,不为空值;
候选键:其值必须唯一,可有也只能有一个空值;
外键:主键值在修改和删除时,从表中与该主键值相同的外键值可级联(CASCADE)修改和删除,或改为空值、默认值、禁止主表主键值的修改和删除;
一般的列:检查约束和断言。
2.SQL SERVER中规则的目的?
答:规则的目的针对表中的某一列,指明该列的取值范围。
3.SQL SERVER中在定义某些限制时,分列级与表级,其分类的原则是什么?
答:列级检查约束针对表中一列;
表级检查约束则针对同一表中多列
4.外键限制定义的条件?
答:外键限制的列必须是另一个表中的主键。
5.关系代数的基本操作符?笛卡尔乘积最大的作用是什么?
答:基本操作符:投影,选择,交,积,差;
作用:把任意两个不相关的表相连。
6.为什么说在实际查询中自然连接是用得比较多的?
答:可以从两个关系实例的笛卡尔乘积中选出同时满足一个或多个条件等式的行,每个条件等式中的列名相同。
7.关系代数中对结果有重复元组时,如何处理?
答:将去掉重复元组。
8.连接的分类?
答:条件连接:加入连接条件,对两个关系实施连接;
等连接:是条件连接的特例。要求连接条件由等式组成;
自然连接:是等连接的特例。要求等式中涉及的字段名必须相等;
外连接:是涉及有空值的自然连接。
9.外连接又分3种,其依据是什么?
答:左外联结,右外联结,全外联结。
二. 单项选择题
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
X A B Y B C Z A C
a1 b1 b1 c2 a1 c1
a1 b2 b2 c1 a1 c2
a2 b1 b1 c1 a2 c3
a3 b1 b1 c3 a3 c4
答:(1)
{
(2)C A B
c1 a1 b2
c1 a1 b1
c2 a1 b1
c3 a2 b1
c4 a3 null
(3)A B C
a1 b1 c1
a1 b1 c2
a1 b2 c1
a2 b1 c3
1.一个电影资料库有四个实体“电影”,“演员”,“导演”,“电影公司”。“电影”的属性有电影
编号,电影名,电影类型,对白语言;“演员”的属性有演员工作证号,姓名,出生年,性别;“导演”的属性有导演工作证号,姓名,出生年,性别;“电影公司”的属性有公司名称,所在国家。
这些实体间的联系及它们的属性有:演员出演电影,为多对多联系,该联系含角色属性;
导演执导电影,每部电影只由一个导演执导;演员和导演属于电影公司;电影公司出品电影,有出品年份属性。
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导演.导演工作证号=电影.导演工作证号
③π姓名(σ姓名=张一(导演)电影出演演员)