![王珊《数据库系统概论》(第5版)配套题库【名校考研真题+课后习题+章节题库+模拟试题】](https://wfqqreader-1252317822.image.myqcloud.com/cover/154/27054154/b_27054154.jpg)
第2章 关系数据库
1.试述关系模型的3个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
(1)关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型即关系来表示。
(2)关系操作集合:关系模型中常用的关系操作包括查询操作和插入、删除、修改操作。
(3)关系完整性约束:关系模型中有实体完整性约束、参照完整性约束和用户定义的完整性约束三类约束。
2简述关系数据语言的特点和分类。
答:(1)这些关系数据库语言的共同特点是:都是非过程化的集合操作语言,具有完备的表达能力,功能强,能够嵌入高级语言中使用。
(2)关系数据语言分为三类:
①关系代数语言。关系代数是用对关系的运算来表达查询要求的。
②关系演算语言。关系演算是用谓词来表达查询要求的。
③SQL。具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询DDL、DML和DCL于一体的关系数据语言。
3定义并理解下列术语,说明它们之间的联系与区别:
(1)域,笛卡儿积,关系,元组,属性;
(2)主码,候选码,外码;
(3)关系模式,关系,关系数据库。
答:(1)域,笛卡尔积,关系,元组,属性
①域:一组具有相同数据类型的值的集合。
②笛卡儿积:两个分别为n目和m目的关系R和S的笛卡尔积是一个n+m列的元组的集合。
③关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为R(D1,D2,…,Dn)。
④元组:关系中的每个元素是关系中的元组。
⑤属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。
(2)主码,候选码,外部码
①候选码:关系中能惟一标识一个元组的某一属性组。
②主码:若一个关系有多个候选码,则选定其中一个为主码。
③外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外部码,简称外码。
(3)关系模式,关系,关系数据库
①关系模式:关系的描述称为关系模式,它可以形式化地表示为:R(U,D,Dom,F),其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,Dom为属性向域的映射集合,F为属性间数据的依赖关系集合。
②关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为R(D1,D2,…,Dn)。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
③关系数据库:关系数据库有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
4举例说明关系模式和关系的区别。
答:关系模式是静态的,关系是动态的。对于常见的二维表,关系模式通常指的是二维表的表头,即有哪些列构成,每个列的名称、类型、长度等。关系通常指的是一张表的具体内容,因为表经常进行插入、删除、修改等操作,关系可能不一样。
5试述关系模式的完整性规则。在参照完整件中,什么情况下外码属性的值可以为空值?
答:(1)关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
①实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。
②参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。
③用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及 的数据必须满足的语义要求。
(2)在参照完整性中,外码属性值可以为空,它表示该属性的值尚未确定,但前提条件是该外码属性不是其所在参照关系的主属性。
6设有一个SPJ数据库,包括S、P、J及SPJ4个关系模式:
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY)。
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:
S表
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image033.png?sign=1739548442-bszn9oDM4ia0oD6TSP8BlKZnIz2SnvBd-0-3b8240aed3ef5713e379d17860d9b835)
P表
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image034.png?sign=1739548442-UuOdXR5p7C4yj60gtonFSwcGefU9uiP0-0-72b1467eb0ccd2dc54e0fadad99e69a6)
J表
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image035.png?sign=1739548442-xeAclur7dG671DNm5SBHCM2s9RNVnuUP-0-3f0a27572cefa2555591830c6ac41437)
SPJ表
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image036.png?sign=1739548442-6np6cBy3mhw6HpHSVZrSzrpxb3DCoZ1K-0-0430fb39354affdf8aefce9027d34f04)
试用关系代数、ALPHA语言、QBE语言完成如下查询:
(1)求供应工程J1零件的供应商号码SNO;
(2)求供应工程J1零件P1的供应商号码SNO;
(3)求供应T程J1零件为红色的供应商号码SNO;
(4)求没有使用天津供应商生产的红色零件的工程项目代码JNO;
(5)求至少用了供应商S1所供应的全部零件的工程项目代码JNO。
答:(1)求供应工程J1零件的供应商代码SNO。
关系代数:πSNO(σJNO=‘J1’(SPJ))
ALPHA语言:GET W(SPJ.SNO):SPJ.JNO=‘J1’
QBE语言:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image037.png?sign=1739548442-6JdNTGGHbKJSxOXQsMEYv0xWjry8Zipn-0-8058b192371c6a84ed595167179c245a)
(2)求供应工程J1零件P1的供应商代码SNO。
关系代数:πSNO(σJNO=‘J1’∧PNO=‘P1’(SPJ))
ALPHA语言:GET W(SPJ.SNO):SPJ.JNO=‘J1’∧SPJ.PNO=‘P1’
QBE语言:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image038.png?sign=1739548442-OQtr7sXQHfiAhzusbw9j10ZAAns7WWbE-0-b645078fdde421afd68284c7b3b2f021)
(3)求供应工程J1零件为红色的供应商代码SNO。
关系代数:πSNO(πSNO,PNO(σJNO=‘J1’(SPJ))⋈πPNO(σCOLOR=‘红’(P)))
ALPHA语言:
RANGE P PX
GET W(SPJ.SNO):∃ PX(PX.PNO=SPJ.PNO∧SPJ.JNO=‘J1’∧PX.COLOR=‘红’)
QBE语言:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image039.png?sign=1739548442-3SeeMkUKL7YeeJ7qxyOGATd4qzmEI9G1-0-0dc397c46258f8773393912ca9d45901)
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image040.png?sign=1739548442-G8P1XHzR8E1qkvH9yNV99Cq2mkCnZLfy-0-3bba75d11eda1cc9992c02ccaff7152d)
(4)求没有使用天津供应商生产的红色零件的工程项目代码JNO。
关系代数:πJNO(J)-πJNO(πSNO(σCITY=‘天津’(S))⋈πSNO,PNO,JNO(SPJ)⋈πPNO(σCOLOR=‘红’(P)))
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image041.jpg?sign=1739548442-0U2DzEQuXqsoGrH4Qa3ei674SXu8KDVU-0-2f844239b70f1c0612fea65ff646f687)
QBE语言:
不考虑未使用任何零件的工程。
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image042.png?sign=1739548442-fFadPGqwV6CNuEbIYDNPJ7GmgVvtGMMu-0-1aea6bec74e4f45589bc17b4e5f3d97c)
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image040.png?sign=1739548442-G8P1XHzR8E1qkvH9yNV99Cq2mkCnZLfy-0-3bba75d11eda1cc9992c02ccaff7152d)
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image043.png?sign=1739548442-RiK8Ax1fzPup4v1meKCzny766YRGJI5W-0-7b7089746b7d3148b84e2e8f85af73b0)
(5)求至少用了供应商S1所供应的全部零件的工程项目代码JNO。
关系代数:πJNO,PNO(SPJ)÷πPNO(σSNO=‘S1’(SPJ))
ALPHA语言:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image044.jpg?sign=1739548442-y5s8wGvzHjJB4HMhzCYzZvcXjWpyKMWQ-0-65f4bf561395bf0fc4024385045e560f)
QBE语言:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image045.jpg?sign=1739548442-gIEiA2lSgSz4tEDlVD1qcU7IXCTSYiM9-0-737845942e51cbc93d986c7677760363)
7试述等值连接与自然连接的区别和联系。
答:连接运算中有两种最为重要也最为常用的连接,一种是等值连接(Equijoin),另一种是自然连接(Natural join)。θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组,即等值连接为
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image046.png?sign=1739548442-ytDfyEIsZ2NkoG3ltziLtlaknnQW27D6-0-9f7fc7f80d098063288c70199c0bfc76)
自然连接(Natural join)是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。即若R和S具有相同的属性组B,则自然连接可记作
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image047.png?sign=1739548442-pYAcxhzW9YgJ2tpMZ3FxxY55E4VIQGyB-0-1aa0ebc094ed9971a26f0aa53fb2efda)
一般的连接操作是从行的角度进行运算。但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
8关系代数的基本运算有哪些?如何用这些基本运算来表示其他运算?
答:关系代数的基本运算包括并、差、笛卡尔积、投影和选择5种运算。其他3种运算,即交、连接和除,均可以用这5种基本运算来表达。
(1)交运算:R∩S=R-(R-S)或R∩S=S-(S-R);
(2)连接运算:
![](https://epubservercos.yuewen.com/BFEA64/15436720004712606/epubprivate/OEBPS/Images/image048.png?sign=1739548442-reVTWdMmSYfbZGVzBW9uQ5bcDDKf1EJA-0-c78e0e4aa653e054c8ad7dc447829730)
(3)除运算:R(X,Y)÷S(Y,Z)=πX(R)-πX(πX(R)×πY(S)-R)。