数据库系统概论ziliaoWord下载.docx
《数据库系统概论ziliaoWord下载.docx》由会员分享,可在线阅读,更多相关《数据库系统概论ziliaoWord下载.docx(27页珍藏版)》请在冰点文库上搜索。
所在系:
字符型。
(2)
学号
姓名
年龄
性别
所在系
991510000
张三
25
.T.
计算机
991510078
李四
24
化学
981501008
王燕
.F.
中文
5.请为计算机经销商设计一个数据库,要求包括生产厂商和产品的信息。
生产厂商的信息包括名称、地址、电话等;
产品的信息包括生产商、品牌、配置、近价等。
试用ODL描述这个数据库,注意要为所有的属性和联系选择适当的类型,并且指出每个类的键码。
答案:
interfaceProduce
(keyname)
{attributestringname;
attributestringaddress;
attributestringtel;
relationashipSet<
Product>
produces
inverseProduct:
:
ProducedBy;
}
interfaceProduct
(key(brand,model))
{attributestringbrand;
attributestringmodel;
attributeintegerprice;
relationashipProducerproducedBy
inverseProducer:
Produces;
6.将上面题5的数据库用E-R图来描述。
7.假设题5的数据库中,计算机产品类有了一个笔记本电脑子类,该子类本身拥有尺寸(长、宽、厚度)、电池型号等属性,试重新设计数据库,将增加的部分分别用ODL和E/R图描述。
(1)ODL:
interfaceComputerProduct:
Product{
interfacePortableComputer:
ComputerProduct{
attributefloatLength;
attributefloatWide;
attributefloatThick;
attributestringBatteryType
(2)E/R图:
8、如果某关系的实例满足下列条件之一,要表示该实例,有多少种不同的方法(考虑元组的顺序和属性的顺序):
(1)3个属性,3个元组
(2)4个属性,5个元组
(3)m个属性,n个元组
(1)3!
*3!
=36
(2)4!
*5!
=24*120=2880
m个属性可有m!
种不同的排列顺序,n个元组可有n!
种不同的排列顺序,因此共有m!
*n!
种不同的排列顺序。
9.将题5的ODL设计转换成关系数据库模型。
转换为关系模式为:
Producer(name,address,tel);
Product(brand,model,name);
(注:
其中name为厂商名,若同一厂商提供多种产品需建立多个记录)
10.下图表示的是一个航空公司的E/R图,试将其转换为关系数据库模式。
其中Customer表示乘客,有三个属性:
乘客号No,姓名Name和地址Address,Flight表示航班,页有三个属性:
航班号Number,日期Date和机型Kind;
Booking表示乘客订票的信息,有一个属性:
Seat。
Customer(No,Name,Address)
Flight(Number,Date,Kint)
Booking(No,Number,Date,Seat)
11.假设学生选课数据库如下:
Student(Sno,Sname,Age,Dept)
Couse(Cno,Cname,Teacher)
SC(Sno,Cno,Score)
用关系代数分别进行如下查询:
(1)学号为9900111的学生的系别和年龄;
(2)有不及格(成绩《60》学生的课程名;
(3)计算机系有不及格课程的学生名单;
(4)学生张林的“数据库原理”课成绩。
(1)πDept,Sage(σSno=9900111(Student))
(2)πCname(σscore<
60(SC)Course)
(3)πSname(σscore<
60(SC)σDept=‘计算机系’(Student)
(4)πScore(σsname=‘张林’(Stident)SC(σCname=‘数据库原理’(Course))
12.分别用元组关系运算和域关系演算表示题11中的查询。
。
元组关系运算:
(1)
(2)
(3)
(4)
域关系演算:
13.用数据库逻辑规则表示习题一中的查询。
(1)S(D,A←Student(SNo,SN,A,D)ANDSNO=9900111
(2)C(CN)←Course(CNo,CN)ANDSC(SNo,CNo,S)ANDS<
60
(3)S(S,N)←Student(SNo,SN,A,D)ANDSC(SNo,CNo,S)ANDD=’计算机系’ANDS<
(4)U(S)←Student(SNo,SN,A,D)ANDSC(SNo,CNo,S)ANDCourse(CNo,CN)
ANDSN=’张林’ANDCN=’数据库原理’
14.画出题11中查询(4)的关系代数表达树。
《数据库系统概论》作业2
1.一个电影资料数据库有三个基本表:
电影表Movie(含电影名、制作年份、长度、是否彩色、制片商)、演员表Actor(含演员姓名、地址、性别、出生年月)和电影主演表Acts(电影名、制作年份、演员姓名)。
用AQL的建表语句建立这三个基本表,有注意合理地选择属性的数据类型。
CREATETABLEMovie(
TitleCHAR(30),
YearINT,
LengthINT
);
CREATETABLEActor(
NameCHAR(20),
GenderVARCHAR(30),
LengthCHAR
(1)
BirthdateDATE
CREATETABLEActs(
MoiveTitleCHAR(30),
MoiveYearINT,
ActorNameCHAR(20)
2.在题1建立的表的基础上,用SQL实现如下查询或更新操作:
(1)统计1999年制作电影的平均长度和最短长度;
(2)在1999年主演过电影的演员姓名;
(3)所有同名电影各自的电影名和制作年份;
(4)往演员关系Actor插入一个演员记录,具体的数据值由你指定;
(5)把电影“我的世界“的长度改为109分钟;
(6)删除1940年以前制作的所有电影记录以及电影主演记录。
(1)SELECTAVG(Length),MIN(Length)
FROMMovie
WHEREYear=1999;
(2)SELECTActorName
FROMActs
WHEREMovieYear=1999;
(3)SELECTM1.Title,M1.Year,M2.Year
FROMMovieASM1,MovieASM2
WHEREM1.Title=M2.TitleANDM1.Year<
M2.Year
(4)INSERTINTOActor(Name,Gender)
VALUES(‘秀兰·
邓波儿’,’F’);
(5)UPDATEMovieSETLength=109
WHERETitle=’我的世界’;
(6)DELETEFROMMovie
WHEREYear<
1940;
DELETEFROMActs
WHEREMovieYear<
3.在题1建立的表但是基础上,要求为Movie关系增加一个属性MovieDirector(电影导演)。
用SQL实现这种关系模式的改变。
ALTERTABLEMovie
ADDMovieDirectorCHAR(20)
4.假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex)
Course(Cno,Cname,Teacher)
SC(Sno,Cno,Grade)
用SQL语句表达下列查询:
(1)找出刘老师所授课程的课程号和课程名。
(2)找出年龄小于22岁女学生的学号和姓名。
(3)找出至少选修刘老师讲的一门课的学生姓名。
(4)找出“程序设计”课成绩在90分以上的学生姓名。
(5)找出不学C3课的学生姓名。
(6)找出至少选修C1课和C2课的学生学号。
(1)SELECTCno,Cname
FORMCourse
WHIRETeacherLIKE‘刘%’;
(2)SELECTSno,Sname
FORMStudent
WHIRESage<
22ANDSsex=’F’;
(3)SELECTSname
FORMStudent,SC,Course
WHIREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDTeacherLIKE’刘%’;
(4)SELECTSname
WHIREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno
ANDCname=’程序设计’ANDGrade>
90;
(5)SELECTSname
WHIRENOTEXISTS
(SELECT*
FORMSC
WHIRESno=Student.SnoANDCno=’C3’);
(6)SELECTX.Sno
FROMSCASX,SCASY
WHEREX.Sno=Y.Y.SnoANDX.Cno=’C1’ANDY.Cno=’C2’;
5.按照题4的数据库模式谢出下列查询:
(1)求孙老师讲的每门课的学生平均成绩。
(2)统计选修各门课的学生人数。
输出课程号和人数。
查询结果按人数降序排列,若人数相同,则按课程号升序排列。
(1)SELECTCno,AVG(Grade)
FORMSC,Course
WHERESC.Cno=Course.CnoANDTeacherLIKE‘孙%’
GROUPBYCno
(2)SELECTCno,COUNT(*)
FORMSC
ORDERBYCOUNT(*)DESC,Cno
6.用SQL的更新语句表达对学生-课程数据库的下列更新操作:
(1)往学生关系Student中插入一个学生元组(990012,梅立松,20,女)。
(2)从学生选课关系SC中删除夏春秋同学的所有元组。
(3)在学生选课关系SC中,把英语课的成绩提高10%。
(1)INSERTINTOStudent
VALUES(990012,’梅立松’,20,’女’);
(2)DELETEFORMSC
WHERESnoIN
(SELECTSno
FORMStudent
WHERESname=’夏春秋’);
(3)UPDATESCSETGrade=1.1*Grade
WHERECnoIN
(SELECTCno
FORMCourse
WHERECname=’英语’);
8.从学生选课数据库中查询选修“数据库原理”课并且成绩在90分以上的学生名单,SQL语句序列如下:
SELECTStudentName
FORMStudent,Course,StudentCourse
WHEREStudent.StudentNo=StudentCourse.StudentNo
ANDCourse.CourseNo=StudentCourse.CourseNo
ANDCourse.CourseName=’数据库原理’ANDStudentCourse.Score>
90
(1)画出这个查询的关系代数语法树;
(2)对该语法树进行优化并画出优化后的语法树。
(1)对应查询的关系代数语法树
(3)优化语法树(Student简写为S,Course简写为C)
9.设T1、T2是如下两个事务:
T1:
A=B*2
T2:
B=A+1
A、B的初值分别是1和3。
(1)设T1和T2可以并发执行,并且对其操作的调度不加限制,那么它们的并发执行可能产生哪几种结果(写出最后A、B的值)?
(2)这些执行结果中哪些是正确的?
解:
(1)第一种调度:
①读A=1,B=3:
(TI)
②A=B*2=6(T1)
③写回A=6,B=3(T1)
④读A=6,B=3(T2)
⑤B=A+1=7(T2)
⑥写回A=6,B=7(T2)
结果:
A=6,B=7
第二种调度:
(T2)
②B=A+1=2(T2)
③写回A=1,B=2(T2)
④读A=1,B=2(T1)
⑤A=B*2=4(T1)
⑥写回A=4,B=2(T2)
A=4,B=2
第三种调度:
(T1)
②读A=1,B=3(T2)
③A=B*2=6(T1)
④B=A+1=2(T2)
⑤写回A=6,B=3(T1)
⑥写回A=1,B=2(T2)
A=1,B=2
第四种调度:
②读A=1,B=3(T1)
③B=A+1=2(T2)
④A=B*2=6(T1)
⑤写回A=1,B=2(T2)
⑥写回A=6,B=3(T1)
A=6,B=3
第五种调度:
③读A=1,B=3(T2)
第六种调度:
③读A=1,B=3(T1)
(2)第一种结果:
A=6,B=7;
和第二种结果:
A=4,B=2正确。
根据可串行化的原则,两个事务并发执行的结果只要和任意一种串行的结果相同,就认为是正确的。
《数据库系统概论》作业3
1、举例说明不符合2NF,3NF和BCNF的关系模式,如何使之符合相应范式?
第一种方法:
先求各种属性组合的封闭集,再从中找出新的函数依赖。
A+=ABCDB+=BCDC+=CD+=D
AC,AD……
(2)
AB+=ABCDAC+=ABCDAD+=ABCDBC+=BCDBD+=BCDCD+=CD
ABC,ABDACB,ACDADB,ADCBCDBDC……(8)
ABC+=ABCDABD+=ABCDBCD+=BCD
ABCDABDC……
(2)
ABCD+=ABCD
蕴含于给定函数依赖的非平凡函数依赖共12个。
2)
A为键码。
3)
AB,AC,AD,ABC,ABD,ABCD为超键码。
第二种方法:
在Student(Sno,Sname,Sdept,Mname,Cname,Grade)中
存在依赖:
Sno,Cname→Sname,Sdept,Mname
左边是键码,但是右边的非主属性都部分依赖Sno
Sno→Sname
Sno→Sdept
Sno→Mname
所以Student不是2NF
Student可以分解为以下模式
Student(Sno,Sname,Sdept,Mname)
SC(Sno,Cname,Grade)
在Student中键码是Sno,其它都是非主属性,它们都完全
函数依赖于Sno
在SC中,键码是Sno,Cname,只有一个非主属性Grade,
它完全函数依赖于键码
所以分解后的关系模式是2NF
Supplyer(SpNo,City,Area,Phone)
SpNo——供应商编号
Area——城市所在地区
其中,SpNo是键码
函数依赖有
SpNo→City,SpNo→Area,SpNo→Phone
City→Area
所有的非主属性都完全函数依赖于键码,所以Supplyer是
2NF。
SpNo→City,City→Area,
所以Area传递依赖于键码,且Aera是非主属性。
Supplyer不是3NF。
是2NF
但是在Student中:
Sno→Sdept,Sdept→Mname
非主属性Mname传递依赖于键码Sno
所以以上关系模式不是3NF。
将Student分解为:
Student(Sno,Sname,Sdept)
Dept(Sdept,Mname)
Sdept是关系Dept的键码
是3NF
在一个关系模式的所有非平凡函数依赖中,如果所有决定因素都包含键码,即决定因素是超键,则该关系模式属于BCNF
例1:
C(City,Street,Zip)
其中键码是City,Street
City——主属性,Street——主属性,Zip——非主属性
City,Street→Zip
Zip→City
Zip不是超键码
所以关系C是3NF,但不是BCNF
假如有关系模式R(A,B,C,D)和函数依赖集S={B->
C,B->
D}。
(1)找出所有BCNF违例。
(2)如果该关系模式不是BCNF,则将它分解为BCNF
(3)找出所有的违背3NF的依赖
(4)如果该关系不是3NF,则将它分解为3NF
步骤一:
找出R在S上的所有非平凡依赖,首先计算封闭
集
单属性封闭集:
A+=A,B+=BCD,C+=C,D+=D
双属性封闭集:
AB+=ABCD,AC+=AC,AD+=AD,BC+=BCD,BD+=BCD,CD+=CD
三属性封闭集:
ABC+=ABCD,ABD+=ABCD,BCD+=BCD,ACD+=ACD
四属性封闭集:
ABCD+=ABCD
步骤二:
根据计算所得的封闭集,找出键码和超键码
键码:
AB
超键码:
ABC,ABD,ABCD
步骤三:
找出所有的非平凡函数依赖
B->
D,AB->
C,AB->
D,BC->
D,BD->
C
ABC->
D,ABD->
其中:
AB->
D,ABC->
C
而:
C是BCNF违例
步骤四:
进行BCNF规范。
BCNF违例自成一体。
从以上BCNF违例中选择B->
C自成
一体
R1(B,C)
舍其右全集归一,即舍去B->
C的右边属性C,所以得到
R2(A,B,D)
在R2中还存在BCNF违例B->
D,因此B->
D自成一体,得到
R21(B,D),舍其右全集归一得到R22(A,B)
最后得到的关系模式是:
R1(B,C),R21(B,D),R22(A,B)
AB是键码,所以A,B是主属性,而C,D都是键码以外的属
性,所以C,D都是非主属性。
2、假设关系模式为R(A,B,C,D),函数依赖为A→B,B→C和B→D。
(1)求蕴含给定函数依赖的所有非平凡函数依赖。
(2)求R的所有键码和超键码。
(3)判断该模式为第几范式?
为什么?
(1)求A+,有A+={A},
因为A→B,所以A+={A,B};
因为B→C,所以A+={A,B,C};
因为B→D,所以A+={A,B,C,D}。
因此A为Key,推出新依赖:
(1)A→C,
(2)A→D。
求B+,有B+={B};
因为B→C,所以B+={B,C};
因为B→D,所以B+={B,C,D}。
求C+,有C+={C}。
求D+,有D+={D}。
求AB+,有AB+={A,B};
因为B→C,所以AB+={A,B,C};
因为B→D,所以AB+={A,B,C,D}。
推出新依赖:
(3)AB→C,(4)AB→D。
求AC+,有AC+={A,C};
因为A→B,所以AC+={A,,