最新模式分解例题.docx
《最新模式分解例题.docx》由会员分享,可在线阅读,更多相关《最新模式分解例题.docx(9页珍藏版)》请在冰豆网上搜索。
![最新模式分解例题.docx](https://file1.bdocx.com/fileroot1/2022-11/21/02a47725-79f7-4711-82fa-bd35c429c8c7/02a47725-79f7-4711-82fa-bd35c429c8c71.gif)
最新模式分解例题
模式分解例题
模式分解例题
设有关系模式R(U,F),其中U={A,B,C,D,E},F={AB→C,B→D,D→E,C→B},试问R最高为第几范式,并解释原因?
如果R不是3NF或BCNF,要求将其分解为3NF和BCNF
关系R中的函数依赖如下图表示
•
R:
A,B→C;
B→D;
D→E;
C→B
第一范式规定关系的每一个分量必须是一个不可分的数据项。
可以看出,该关系满足第一范式。
如果关系模式R满足第一范式,且它的任何一个非主属性都完全函数依赖于任一个候选码,则R满足第二范式(简记为2NF)。
所以不是第二范式
分解成第二范式
R1:
A,B→C;
C→B
R2:
B→D;
D→E;
如果关系模式R满足2NF,并且它的任何一个非主属性都不传递依赖于任何候选码,则称R是第三范式(3NF),记作R∈3NF。
分解成第三范式
R1:
A,B→C;
C→B
R21:
B→D
R22:
D→E
•如果关系模式R是1NF,且每个属性都不传递依赖于R的候选码,那么称R是BCNF的模式。
R1:
A,B→C;
C→B
R21:
B→D
R22:
D→E
R1中属性B传递依赖于R的候选码AB,故R1不是BCNF范式
关系模式R∈1NF,若X→Y,且Y⊆X时,X必含有候选码,则R∈BCNF。
R1中C→B,且B⊆C,但B不含有任何候选码,故R1不是BCNF范式
分解成BCNF范式
R11:
A,B
R12:
C→B
R21:
B→D
R22:
D→E
候选码是什么?
能够唯一标识一个元组的某一属性或属性组。
候选码:
(A,B)和(A,C)
假设有一个名为参加的关系,该关系有属性:
职工(职工名)、工程(工程名)、时数(花费在工程上的小时数)和工资(职工的工资);一个参加记录描述一个职工花费在一个工程上的总时数和他的工资;另外,一个职工可以参加多个工程,多个职工可以参加同一个工程(用A、B、C、D分别代表属性职工、工程、时数和工资)。
请回答如下各问题:
1) 确定这个关系的关键字;AB
2) 找出这个关系中的所有函数依赖;AB->C,A->D
3) 指出这个关系上的哪些函数依赖会带来操作异常现象;
D对关键字AB的部分函数依赖可能会带来如下问题:
数据冗余:
一个职工参加多个工程,则职工的工资值会重复;
更新异常:
当改变职工的工资时,可能会只修改了一部分,从而造成数据不一致;
插入异常:
当一个职工尚未承担工程,但要插入职工信息(如工资)则不允许(因为没有完整的关键字);
删除异常:
当某个工程结束,删除工程信息时,可能会将职工信息(如工资)一同删除(如果职工只参加了一项工程)。
4) 这个关系是第几范式关系?
2NF
5) 计算该关系上函数依赖集的最小覆盖;Fm={AB->C,A->D}
6) 将该关系分解成尽可能高的范式,并指明是第几范式?
分解为R1(A,B,C)和R2(A,D) 结果为4NF
对于学生选课关系,其关系模式为:
学生(学号,姓名,年龄,所在系);
课程(课程名,课程号,先行课);
选课(学号,课程号成绩)。
用关系代数完成如下查询。
1)求学过数据库课程的学生的姓名和学号。
2)求学过数据库和数据结构的学生姓名和学号。
3)求没学过数据库课程的学生学号。
4)求学过数据库的先行课的学生学号。
程序设计题 现有关系数据库如下:
学生(学号,姓名,性别,专业、奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
用关系代数表达式实现下列1—4小题;用SQL语言实现下列5—8小题。
1.检索“国际贸易”专业中获得奖学金的学生信息,包括学号、姓名、课程名和分数;
2.检索学生成绩得过满分(100分)的课程的课程号、名称和学分;
3.检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;
4.检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业;
5.检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;
6.检索没有任何一门课程成绩在80分以下的所有学生的信息,包括学号、姓名和专业;
7.对成绩得过满分(100分)的学生,如果没有获得奖学金的,将其奖学金设为1000元;
8.定义学生成绩得过满分(100分)的课程视图AAA,包括课程号、名称和学分;
1.Π学号,姓名,课程名,分数(σ奖学金>0∧专业=国际贸易(学生∞学习∞课程))
2.Π课程号,名称,学分(σ分数=100(学习∞课程))
3.Π学号,姓名,专业(σ奖学金<=0∧分数>95(学生∞学习))
4.Π学号,姓名,专业(学生)—Π学号,姓名,专业(σ分数<80(学生∞学习))
5.SELECT学生.学号,姓名,专业
FROM学生,学习
WHERE学生.学号=学习.学号
AND学习.课程号=课程.课程号
AND奖学金<=0AND分数>95
6.SELECT学号,姓名,专业
FROM学生
WHERE学号NOTIN
(SELECT学号
FROM学习
WHERE分数<80)
7.UPDATE学生
SET奖学金=1000
WHERE奖学金<=0AND学号IN
(SELECT学号
FROM学习
WHERE分数=100)
8.CREATEVIEWAAA(课程号,名称,学分)
ASSELECT课程号,名称,学分
FORM课程
WHERE课程号IN
(SELECT课程号
FROM学习
WHERE分数=100)
设关系模式R,函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}。
1)证明AB、AC、AD均是候选关键宇。
2)证明主属性C部分依赖于关键字AB,传递依赖于AD。
同时证明主属性D部分依赖于关键字AC,传递依赖于关键字AB。
1)∵=ABECDFABCDEF∈∴AB为码
∵=ABECDFABCDEF∈∴AC为码
∵=ABECDFABCDEF∈∴AD为码
2)∵B→C∴ABC
∵AD→B,B→C∴ADC
∵C→D∴ACC
∵B→C,C→D∴ABC
图中显示一张交通违章处罚通知书,根据这张通知书所提供的信息,设计一个E-R模型,并将这个E-R模型转换成关系数据模型,要求标注主码和外码。
司机(驾照号,姓名,地址,邮编,电话)
PK=驾照号
机动车(牌照号,型号,制造厂,生产日期)
PK=牌照号
警察(警察编号,姓名)
PK=警察编号
处罚通知(编号,日期,时间,地点,驾照号,牌照号,警告,罚款,暂扣,警察编号)
PK=编号
FK=驾照号,牌照号,警察编号
司机(驾照号,姓名,地址,邮编,电话)
PK=驾照号
机动车(牌照号,型号,制造厂,生产日期)
PK=牌照号
警察(警察编号,姓名)
PK=警察编号
通知书(编号,日期,时间,地点,驾照号,牌照号,警察编号)
PK=编号
FK=驾照号,牌照号,警察编号
处罚(编号,处罚方式)
PK=编号,处罚方式
设有一家百货商店,已知信息有:
l)每个职工的数据是职工号、姓名、地址和他所在的商品部。
2)每一商品部的数据有:
它的职工,经理和它经销的商品。
3)每种经销的商品数有:
商品名、生产厂家、价格、型号(厂家定的)和内部商品代号(商店规定的)。
4)关于每个生产厂家的数据有:
厂名、地址、向商店提供的商品价格。
请设计该百货商店的概念模型,再将概念模型转换为关系模型。
注意某些信息可用属性表示,其他信息可用联系表示。
概念模型如图所示。
关系模型为:
职工(职工号,姓名,住址,工作商品部);
商品部(商品部号,名称,经理职工号,经理名);
商品(商品代号,价格,型号,出厂价格);
生产厂家(厂名,地址);
销售(商品代号,商品部号);
生产(厂名,商品代号)。
职工:
职工号,姓名,住址;
商品部:
商品部号,名称;
商品:
商品代号,价格,型号,出厂价格;
生产厂家:
厂名,地址。