习题四1.试述关系模型的三个组成部分。2.试述关系数据语言的特点和分类。3.定义并解释下列术语,说明它们之间的联系与区别。1)主码、候选码、外码。2)笛卡尔积、关系、元组、属性、域。3)关系、关系模式、关系数据库。4.试述关系模型的完整性规则。在参照完整性中,为什么外码属性的值也可以为空?什么情况下才可以为空?5.试述等值连接与自然连接的区别和联系。6.对于学生选课关系,其关系模式为:学生(学号,姓名,年龄,所在系);课程(课程名,课程号,先行课);选课(学号,课程号成绩)。用关系代数完成如下查询。1)求学过数据库课程的学生的姓名和学号。2)求学过数据库和数据结构的学生姓名和学号。3)求没学过数据库课程的学生学号。4)求学过数据库的先行课的学生学号。7.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNANE,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。试用关系代数完成如下查询:1)求供应工程J1零件的供应商号码SNO。2)求供应工程J1零件P1的供应商号码SNO。3)求供应工程J1零件为红色的供应商号码SNO。4)求没有使用天津供应商生产的红色零件的工程号。5)求至少用了供应商S1所供应的全部零件的工程号。8.设属性A是关系R的主属性,则属性A不能取空值小(NULL),这是_______。A.实体完整性规则B.参照完整性规则C.用户定义完整性规则D.域完整性规则9.下面对于关系的叙述中,不正确的是_______。A.关系中的每个属性是不可分解的B.在关系中元组的顺序是无关紧要的C.任意的一个二维表都是一个关系D.每一个关系只有一种记录类型10.设关系R和S的元组个数分别为100和300,关系T是R与S的笛卡尔积则T的元组个数是________。A.400B.10000C.30000D.9000011.设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则R-(R-S)等于________。A.R∪SB.R∩SC.R╳SD.R-S习题四解答1.答:关系模型的三个组成部分为关系结构、关系操作和关系完整性约束。在关系模型中,无论是实体集,还是实体集之间的联系均由单一的关系表示。关系模式可以形式化地表示为:R(U,D,Dom,F),其中R为关系名,U为组成该关系的属性集合,D为属性组U中属性所来自的域,Dom为属性向域的映像的集合,F为属性间数据的依赖关系集合。关系操作语言包括关系代数、关系演算和基于映像的语言。关系操作语言灵活方便.表达能力和功能都非常强大。其主要特点是:关系操作语言操作一体化;关系操作的方式是一次一集合方式;关系操作语言是高度非过程化的语言。关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。2答:关系操作语言灵活方便,表达能力和功能都非常强大,其主要特点是:关系操作语言操作一体化;关系操作的方式是一次一集合方式;关系操作语言是高度非过程化的语言。关系操作语言包括关系代数、关系演算和基于映像的语言。关系代数语言是用对关系的运算来表达查询要求的语言。关系演算语言是用查询得到的元组应满足的谓词条件来表达查询要求的语言。基于映像的语言是具有关系代数和关系演算双重特点的语言。3.答:1)若关系中的某一属性组(或单个属性)的值能惟一标识一个元组,则称该属性组(或属性)为候选码。当一个关系有多个候选码时,应选定其中的一个候选码为主码;而如果关系中只有一个候选码,这个惟一的候选码就是主码。设F是基本关系R的一个或一组属性,但不是关系R的主码(或候选码)。如果F与基本关系s的主码KS相对应,则称厅是基本关系R的外码。2)给定一组域D1,D2,…,Dn.这些域中可以有相同的部分,则D1,D2,…,Dn的笛卡地积为:D1×D2×…×Dn﹦{(dl,d2,…,dn)∣di∈Di,i=1,2,…,n}。D1×D2×…×Dn的子集称作在域D1,D2,…,Dn上的关系,表示为:R(D1,D2,…,Dn)。其中,R表示关系的名字,n是关系的目。笛卡儿积集合中的每一个元素(dl,d2,…,dn)称为一个元组。关系中的每一列称为一个属性。域为数据集合,属性值来源于域。3)关系是留卡儿积的有限子集,所以关系也是一个二维表。关系的描述称为关系模式。关系模式可以形式化地表示为:R(U,D,Dom,F)。其中R为关系名,它是关系的形式化表示;U为组成该关系的属性集合;D为属性组U中属性所来自的域;Dom为属性向域的映像的集合;F为属性问数据的依赖关系集合。在某一应用领域中,所有实体集及实体之间联系所形成关系的集合就构成了一个关系数据库。4.答:关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。关系的实体完整性规则为:若属性A是基本关系R的主属性,则属性A的值不能为空值。关系的参照完整性规则为:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对干R中每个元组在F上的值必须取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。由于外码在被参考关系A中,是非主属性,其值为空,不影响关系的实体完整性。当外码值不清楚或不确定时,可以设为空值,此时参照表中没有对应的记录与之匹配。5.答:等值连接是从关系R和S的广义笛卡儿积中选取A和B属性值相等的那些元组。自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。6.答:7.答:8.答:A9.答:D10.答:C11.答:B7.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNANE,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。试用关系代数完成如下查询:1)求供应工程J1零件的供应商号码SNO。2)求供应工程J1零件P1的供应商号码SNO。3)求供应工程J1零件为红色的供应商号码SNO。4)求没有使用天津供应商生产的红色零件的工程号。5)求至少用了供应商S1所供应的全部零件的工程号。3.设工程_零件数据库中有四个基本表:供应商(供应商代码,姓名,所在城市,联系电话);工程(工程代码,工程名,负责人,预算);零件(零件代码,零件名,规格,产地,颜色);供应零件(供应商代码,工程代码,零件代码,数量)试用SQL语句完成下列操作.l)找出天津市供应商的姓名和电话。2)查找预算在50000-100000元之间的工程的信息,并将结果按预算降序排列。3)找出使用供应商S1所供零件的工程号码。4)找出工程项目J2使用的各种零件名称及其数量。5)找出上海厂商供应的所有零件号码。6)找出使用上海产的零件的工程名称。7)找出没有使用天津产零件的工程号码。8)把全部红色零件的颜色改成蓝色。9)将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并作其他必要的修改。10)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。8)UPDATE零件SET颜色=‘蓝色’WHERE颜色=‘红色’;9)UPDATE供应零件SET供应商代码=‘S3’WHERE供应商代码=‘S5’AND工程代码=‘J4’AND零件代码=‘P6’;10)DELETEFROM供应零件WHERE供应商代码=‘S2’;DELETEFROM供应商WHERE供应商代码=‘S2’9.设要建立学生选课数据库,库中包括学生、课程和选课3个表,其表结构为:学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课),选课(学号,课程号,成绩)。用Transact-SQL完成下列操作。l)建立学生选课库。2)建立学生、课程和选课表。3)建立各表以主码为索引项的索引。4)建立学生性别只能为“男”或“女”的规则,性别为“男”的缺省,并将它们绑定在学生表上。5)建立在对选课表输入或更改数据时,必须服从参照完整性约束的INSERT和UPDATE触发器。6)建立在删除学生记录时,同时也要把相应的选课记录删除的触发器。7)查询各系及学生数,最后来出共有多少系和多少学生。8)将学生表和选课表进行内连接、左外连接和右外连接。9)列出学生学号、姓名及学习情况。学习情况用好、较好、一般或较差表示。当平均成绩大于85分时,学习情况为好;当平均成绩在70~85分之间,学习情况为较好;当平均成绩在60~70分之间,学习成绩为一般;平均成绩在60分以下的为学习情况较差。1).CREATEDATABASE学生选课库ONPRIMARY(NANE=学生选课库,FILENAME=‘C:\msSQL\data\学生选课.mdf’,SIZE=4MB,MAXSIZE=6MB,FILEROWHT=2MB)GO2)CREATTABLE学生(学号CHAR10)PRIMARYKEYCLUSTERED,姓名CHAR(8),性别CHAR(2),年龄SMALLINT所在系VARCHAR(50))GOCREATTABLE课程(课程号CHAR(10)PRIMARYKEYCLUSTERED,课程名VARCHAR(50),先行课VARCHAR(50))GOCREATETABLE选课(学号CHAR(10),课程号VARCHAR(50),成绩SMALLINT,CONSTRAINTC1PRIMARYKEY(学号,课程号),CONSTRAINTC2FOREIGNKEY(学号)REFRENCES学生(学号),CONSTRAINTFOREIGNKEY(课程号)REFERENCES课程(课程号))GO3)CREATEINDEXstudent_indON学生(学号)GOREATEI**巨class_indON课程(课程号)GOCREATEINDEXselect_indON选课(学号,课程号)GO4)CREATRULEvalue_ruleAS@VALUEIN(‘男’,‘女’)GOCREATDEFAULE性别缺省AS‘男’GOEXECsp_bindrule‘value_rule’,‘学生.性别’GOEXECSp_binddefault‘性别缺省’,‘学生.性别’GO5)CREATETRIGGERsc_insertON选课FORINSERTASIF(SELECTCOLJNT(*)FROM学生,inserted,课程WHERE学生.学号=inserted.学号AND课程.课程号=inserted.课程号)=0ROLLBACKTRANSACTIONGOCREATETRIGGERsc_updat6ON选课FORUPDATEASIF(SELE