WHERE P PNO=SPJ PNO AND SPJ.JNO=’J2 (5)找出上海厂商供应的所有零件号码。 SELECT DISTINCT PNO FROM SPJ WHERE SNO IN C SELECT SNO FROM S WHERE CITY:=’上海’) (6)找出使用上海产的零件的工程名称 SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S SNO ANDS.CITY=’上海 (7)找出没有使用天津产的零件的工程号码 略 (8)把全部红色零件的颜色改成蓝色。 UPDATE P SET COLOR=’蓝 WHERE COLOR=红” (9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。 UPDATE SPJ
WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'; (5) 找出上海厂商供应的所有零件号码。 SELECT DISTINCT PNO FROM SPJ WHERE SNO IN ( SELECT SNO FROM S WHERE CITY='上海'); (6) 找出使用上海产的零件的工程名称。 SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY='上海'; (7) 找出没有使用天津产的零件的工程号码。 略 (8) 把全部红色零件的颜色改成蓝色。 UPDATE P SET COLOR='蓝' WHERE COLOR='红' ; (9) 由 S5 供给 J4 的零件 P6 改为由 S3 供应,请作必要的修改。 UPDATE SPJ
SET SNO= S3 WHERE SNO=S5’ AND JNO=’J4’ AND PNO=P6 (10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。 解析:注意删除顺序,应该先从SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除 (11)请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2, J6, P4, 200) 6.什么是基本表?什么是视图?两者的区别和联系是什么? 答:基本表是本身独立存在的表,在SQL中一个关系就对应一个表 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中 只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与 基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。 7.试述视图的优点。 答:(1)视图能够简化用户的操作 (2)视图使用户能以多种角度看待同一数据。 (3)视图对重构数据库提供了一定程度的逻辑独立性 (4)视图能够对机密数据提供安全保护 8.所有的视图是否都可以更新?为什么 答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因 为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更 新的 9.哪类视图是可以更新的,哪类视图是不可更新的?各举一例说明。 答:基本表的行列子集视图一般是可更新的。如教材3.5.3中的例1 若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的
SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6'; (10) 从供应商关系中删除 S2 的记录,并从供应情况关系中删除相应的记录。 解析:注意删除顺序,应该先从 SPJ 表中删除供应商 S2 所供应零件的记录,然后从从 S 表中删除 S2。 (11) 请将 (S2,J6,P4,200) 插入供应情况关系。 INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2,J6,P4,200); 6. 什么是基本表?什么是视图?两者的区别和联系是什么? 答:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中 只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与 基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。 7. 试述视图的优点。 答: (1)视图能够简化用户的操作。 (2)视图使用户能以多种角度看待同一数据。 (3)视图对重构数据库提供了一定程度的逻辑独立性。 (4)视图能够对机密数据提供安全保护。 8. 所有的视图是否都可以更新?为什么? 答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因 为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更 新的。 9. 哪类视图是可以更新的,哪类视图是不可更新的? 各举一例说明。 答:基本表的行列子集视图一般是可更新的。如教材 3.5.3 中的例 1。 若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的
如教材3.5.3中的SG视图 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件 代码(PN0)、供应数量(QTY)。针对该视图完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。 答:建视图 CREATEⅤ IEW V SPJ AS SELECT SNO, PNO, QTY FROM SPJ WHERE JNO= C SELECT JNO FROM J WHERE JNAME=’三建’) 对该视图查询: (1)找出三建工程项目使用的各种零件代码及其数量。 SELECT PNO, QTY FROM V SPJ (2)找出供应商S1的供应情况 SELECT PNO,QTY/*S1供应三建工程的零件号和对应的数量* FROM V SPJ WHERE SNO=’S1 第五章关系数据理论(教材196页) 1.理解并给出下列术语的定义:
如教材 3.5.3 中的 S_G 视图。 11. 请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件 代码( PNO)、供应数量(QTY)。针对该视图完成下列查询: ( 1)找出三建工程项目使用的各种零件代码及其数量。 ( 2)找出供应商 S1 的供应情况。 答:建视图: CREATE VIEW V_SPJ AS SELECT SNO, PNO, QTY FROM SPJ WHERE JNO= ( SELECT JNO FROM J WHERE JNAME='三建'); 对该视图查询: (1) 找出三建工程项目使用的各种零件代码及其数量。 SELECT PNO, QTY FROM V_SPJ; (2) 找出供应商 S1 的供应情况。 SELECT PNO, QTY /* S1 供应三建工程的零件号和对应的数量*/ FROM V_SPJ WHERE SNO='S1'; 第五章 关系数据理论 (教材 196 页) 1.理解并给出下列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、候选码、主码、外码、全码。 答 函数依赖:设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U的任意 个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则 称"X函数确定Y"或"Y函数依赖于X",记作X→Y。 完全函数依赖、部分函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集Ⅹ,都有 ′→Y,则称Y对ⅹ完全函数依赖;若Ⅹ→Y,但Y不完全函数依赖于Ⅹ,则称Y对Ⅹ部分函数依赖; 候选码、主码:设K为R(,F)中的属性或属性组合,若K→U则K为R的候选码。若候选码多 于一个,则选定其中的一个为主码 外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外 部码也称外码。 全码:整个属性组是码,称为全码(Al-key) 2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。 描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区 描述班级的属性有:班号、专业名、系名、人数、入校年份。 描述系的属性有:系名、系号、系办公室地点、人数。 描述学会的属性有:学会名、成立年份、地点、人数。 有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生 住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份 请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数 依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖 指出各关系的候选码、外部码,有没有全码存在? 答 关系模式:学生S(S#,SN,SB,DN,C#,SA) 班级C(C#,CS,DN,CNUM, CDATE) 系D(D#,DN,DA,DNUM)
函数依赖、部分函数依赖、完全函数依赖、候选码、主码、 外码、全码。 答: 函数依赖:设 R (U)是一个关系模式,U 是 R 的属性集合,X 和 Y 是 U 的子集。对于 R (U)的任意 一个可能的关系 r,如果 r 中不存在两个元组,它们在 X 上的属性值相同, 而在 Y 上的属性值不同, 则 称"X 函数确定 Y"或"Y 函数依赖于 X",记作 X→Y。 完全函数依赖、部分函数依赖:在 R(U)中,如果 X→Y,并且对于 X 的任何一个真子集 X,都有 X′→Y,则称 Y 对 X 完全函数依赖;若 X→Y,但 Y 不完全函数依赖于 X,则称 Y 对 X 部分函数依赖; 候选码、主码: 设 K 为 R(U,F)中的属性或属性组合,若 K → U 则 K 为 R 的候选码。若候选码多 于一个,则选定其中的一个为主码。 外码:关系模式 R 中属性或属性组 X 并非 R 的码,但 X 是另一个关系模式的码,则称 X 是 R 的外 部码也称外码。 全码:整个属性组是码,称为全码( All-key)。 2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。 描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。 描述班级的属性有:班号、专业名、系名、人数、入校年份。 描述系的属性有:系名、系号、系办公室地点、人数。 描述学会的属性有:学会名、成立年份、地点、人数。 有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生 住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。 请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数 依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。 指出各关系的候选码、外部码,有没有全码存在? 答: 关系模式: 学生 S(S#,SN,SB,DN,C#,SA) 班级 C(C#,CS,DN,CNUM,CDATE) 系 D(D#,DN,DA,DNUM)
学会P(PN,DATE1,PA,PNUM) 学生一学会SP(S#,PN,DATE2) 其中,S#一学号,SN一姓名,SB一出生年月,SA一宿舍区 C#一班号,CS一专业名,CNUM—一班级人数, CDATE一入校年份 D#一系号,DN一系名,DA一系办公室地点,DNM一系人数 PN一学会名,DATE1一成立年月,PA一地点,PNM一学会人数,DATE2一入会年份 每个关系模式的极小函数依赖集: S:S#→SN,S#→SB,S#→C#,C#→DN,DN→SA C:C#→CS,C#→CNUM,C#→ CDATE,CS→DN,(CS, CDATE)→C# D:D#→DN,DN→D#,D#→DA,D#→DNUM P:PN→DATE1,PN→PA,PN→PNUM SP:(S#,PN)→DATE2 S中存在传递函数依赖:S#→DN,S#→SA,C#→SA C中存在传递函数依赖:C#→DN (S#,PN)→DATE2和(CS, CDATE)→C#均为SP中的函数依赖,是完全函数依赖 关系候选码外部码全码 SS#C#,DN无 CC#,(CS, CDATE)DN无 DD#和DN无无 PN无无 SP(S#,PN)S#,PN无 4.试举出三个多值依赖的实例 答
学会 P(PN,DATE1,PA,PNUM) 学生 --学会 SP(S#,PN,DATE2) 其中, S#—学号,SN—姓名,SB—出生年月,SA—宿舍区 C#—班号,CS—专业名,CNUM—班级人数,CDATE—入校年份 D#—系号,DN—系名,DA—系办公室地点,DNUM—系人数 PN—学会名,DATE1—成立年月,PA—地点,PNUM—学会人数,DATE2—入会年份 每个关系模式的极小函数依赖集: S:S#→SN,S#→SB,S#→C#,C#→DN,DN→SA C:C#→CS,C#→CNUM,C#→CDATE,CS→DN,(CS,CDATE)→C# D:D#→DN,DN→D#,D#→DA,D#→DNUM P:PN→DATE1,PN→PA,PN→PNUM SP:(S#,PN)→DATE2 S 中存在传递函数依赖: S#→DN, S#→SA, C#→SA C 中存在传递函数依赖:C#→DN ( S#,PN)→DATE2 和(CS,CDATE)→C# 均为 SP 中的函数依赖,是完全函数依赖 关系 候选码 外部码 全码 S S# C#,DN 无 C C#,(CS,CDATE) DN 无 D D#和 DN 无 无 P PN 无 无 SP (S#,PN) S#,PN 无 4. 试举出三个多值依赖的实例。 答: