第三章关系数据库系统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 ):是涉及有空值的自然连接。
二. 单项选择题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 )X A B Y B C Z A Ca1 b1 b1 c2 a1 c1 a1 b2 b2 c1 a1 c2 a2 b1 b1 c1 a2 c3 a3 b1 b1 c3 a3 c4{<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 ZC A Bc1 a1 b2c1 a1 b1c2 a1 b1c3 a2 b1c4 a3 null(3)X Y ZA B Ca1 b1 c1a1 b1 c2a1 b2 c1a2 b1 c3五.一个电影资料库有四个实体“电影”,“演员”,“导演”,“电影公司”。
“电影”的属性有电影编号,电影名,电影类型,对白语言;“演员”的属性有演员工作证号,姓名,出生年,性别;“导演”的属性有导演工作证号,姓名,出生年,性别;“电影公司”的属性有公司名称,所在国家。
这些实体间的联系及它们的属性有:演员出演电影,为多对多联系,该联系含角色属性;导演执导电影,每部电影只由一个导演执导;演员和导演属于电影公司;电影公司出品电影,有出品年份属性。
1)请画出ER图,要求标出实体的主键、联系的约束类型和键约束。
2)将此ER图转换为关系模型,要求标出各关系的主键,如果存在的话还应指明其候选键和外键。
3)请用关系代数表达式和SQL分别表达下列查询①查询1957年之前出生的男演员的姓名。
②查询2000年环球公司出品的电影的名字和导演姓名。
③查询张一导演所导演的影片中的主角演员姓名。
1)2)演员(演员工作证号,姓名,出生年,性别)演员工作证号为主健; 导演(导演工作证号,姓名,出生年,性别)导演工作证号为主健; 电影公司(公司名称,所在国家)电影公司为主健;电影(电影编号,电影名,电影类型,对白语言,导演工作证号),电影编号为主键,导演工作证号为外键,电影名为候选键;出演(演员工作证号,电影编号,角色)(演员工作证号,电影编号)为主健,演员工作证号和电影编号各为外键;出品(电影编号,公司名称,出品年份)(电影编号,公司名称)为主健,电影编号和公司名称各为外键;属于a (公司名称,演员工作证号)(公司名称,演员工作证号)为主健,公司名称和演员工作证号各为外键;属于b (公司名称,导演工作证号)(公司名称,导演工作证号)为主健,公司名称,导演工作证号各为外键。
3)①σ出生年 < 1957(演员)∩σ性别 =男(演员)SELECT *FROM 演员WHERE 出生年<1957 INTERSECTSELECT*FROM WHERE 性别=男n演员 电影电影公司导演出演执导属于b属于a出品出品年份演员工作证号姓名 性别 出生年性别导演工作证号姓名 出生年公司名称所在国家n 1nm nmmnm角色电影类型 电影名电影编号 对白语言②ρ(Temp,σ出品年份 =2000(出品)∩σ公司名称=环球公司(出品))π电影名,姓名(Temp 电影导演)SELECT 电影名FROM 出品,电影WHERE出品.出品年份=‘2000’AND出品.公司名称=环球公司AND出品.电影编号=电影.电影编号INTERSECTSELECT姓名FROM 出品,电影,导演WHERE出品.出品年份=‘2000’AND出品.公司名称=环球公司AND出品.电影编号=电影.电影编号AND导演.导演工作证号=电影.导演工作证号③π姓名(σ姓名=张一(导演)电影出演演员)SELECCT 姓名FROM 导演,电影,出演,演员WHERE 导演.姓名=‘张一’AND电影.导演工作证号=导演.导演工作证号AND出演.电影编号=演员.工作证号六.某出版社管理系统有四个实体,即出版社(Publisher)、编辑(Editor)、作者(Author)和书籍(Book)。
“出版社”的属性有出版社编码(Pid)、出版社名称(Pname)、地址(Paddr)和电话(Ptel);“编辑”的属性有编辑工号(Eid)、姓名(Ename)、性别(Egender)、出生日期;“作者”的属性有作者编码(Aid)、姓名(Aname)、性别(Agender)、电话(Atel);“书籍”的属性有国际图书分类号(Isbn)、书名(Bname)、单价(Bprice)。
这些实体间的联系及它们的属性有:作者“主编”(ZX)书籍,为1:n联系;编辑“校对”(JD)书籍,为1:n联系;出版社“出版”(CB)书籍,为1:n联系;“出版”的属性有出版日期(Pdate)。
(1)请画出概念数据模型的E-R图,要求标注联系的约束类型和键约束。
(2)将此E-R图表示的数据模型转换为关系模型,要求标出各关系的主键。
(3)给出创建“出版”关系(表)的SQL语句(需要创建相应的主键约束和外键约束)。
(4)创建一个由地址中含有“成都市”的出版社出版的书籍的视图。
(5)请分别用关系代数表达式和SQL查询语句表达下列查询:①由出版社“XNJDP”出版的、由编辑名为“MTQ”校对的书籍的ISBN号和书名。
②由“男”性作者主编的、且由出版社“XNJDP”在2008.1.1至2008.12.31之间出版的书籍的ISBN 号和书名。
③ 由“女”性编辑校对的、且单价在20至40元之间的书籍的ISBN 号和书名。
1)2)出版社Publisher (出版社编码Pid,出版社名称Pname,地址Paddr,电话Ptel, 国际图书分类号Isbn, 出版日期Pdate)编辑Editor(编辑工号Eid,姓名Ename,性别Egender,,出生日期, 国际图书分类号Isbn) 作者Author (作者编码Aid,姓名Aname,性别Agender,电话Atel, 国际图书分类号Isbn ) 书籍Book (国际图书分类号Isbn,书名Bname,单价Bprice )。
3)CREATE TABLE Publisher作者(Author )书籍(Book )出版社(Publisher )编辑(Editor )主编ZX 校对JD出版CB地址(Paddr ) 作者编码(Aid ) 姓名(Aname ) 性别(Agender )电话(Atel )性别(Egender )电话(Ptel )姓名(Ename ) 出生日期出版社编码(Pid)出版社名称(Pname )11n1nn编辑工号(Eid )国际图书分类号(Isbn ) 书名(Bname ) 单价(Bprice )出版日期(Pdate )( Pid char NOT NULL,Pname char NOT NULL,Paddr char NOT NULL,Ptel char NOT NULL,Isbn char NOT NULL,Pdete datetime NOT NULL,CONSTREINT Pid_Key PRIMARY KEY (Pid),CONSTRAINT Isbn_constREFERENCES Book( Isbn)ON DELETE CASCADEON UPDATE CASCADE)4) CREATE VIEW Book(Isbn, Bname,Bprice)ASSELECT Isbn, Bname,BpriceFROM Publisher,BookWHERE Publisher .Paddr=‘成都市’AND Publisher.Isbn= Book .Isbn 5)①πIsbn, Bname(σPname=XNJDP(Publisher)σEname=MTQ(Editor) Book)SELECT Isbn, BnameFROM Publisher,Book, EditorWHERE Publisher.Pname=’XNJDP’AND Editor.Ename=’MTQ’ANG Publisher.Isbn= Book .IsbnAND Editor.Isbn= Book .Isbn②πIsbn, Bname(σPname=XNJDP(Publisher)∩σPdate<2008.12.31(Publisher)∩σPdate>2008.1.1(Publisher))σAgender=‘男‘(Author) Book)SELECT Isbn, BnameFROM Publisher,Book, AuthorWHERE Publisher.Pname=’XNJDP’AND Publisher. Pdate<2008.12.31 AND Publisher.Pdate>2008.1.1 AND Author. Agender=‘男’ ANG Publisher.Isbn= Book .Isbn AND Author.Isbn= Book .Isbn③πIsbn, Bname(σEgender=‘女‘(Editor) (σBprice>20(Book)∩σBprice<40(Book)) SELECT Isbn, BnameFROM Book, EditorWHERE Book.Bprice>20 AND Book.Bprice<40 AND Editor. Egender‘女’ANG Editor.Isbn==Book .Isbn。