当前位置:网站首页>【综合题】【数据库原理】
【综合题】【数据库原理】
2022-07-03 12:03:00 【爱笑的冷面鬼】
文章目录
一、属性集合的闭包计算
【例题】设有关系模式R(U,F),其中属性集U={A,B,C,D,E,G},函数依赖集F={ A→D,AB→E,BG→E,CD→G,E→C },计算 (AE)+ 。
答案:
令X=AE
X(0)= AE
X(1)=X(0)DC=AECD
X(2)=X(1)G=AECDG
X(3)=X(2)=AECDG
所以(AE)+ =AECDG
过程讲解:
求(AE)+就是求:在题目的关系模式R中AE能函数确定的所有属性构成的集合。
首先,令X=AE
这种题要分几步来做 (即分别求(AE)(0),(AE)(1) , (AE)(2)…也就是求X(0),X(1) , X(2)…):
(1)X(0)= AE (求谁的F+, X(0) 就等于谁 。)
(2)在F中找出箭头左边是上一步X(0)的结果AE或者AE的子集的函数依赖,分别是A→D,E→C,
所以 X(1)为上一步X(0)的结果AE 和找到的两个函数依赖中箭头右侧的属性D、C 的并集 即 X(1)=X(0)DC = AECD
(3)在F中未使用过的函数依赖里(A→D,E→C为使用过的),找出箭头左边是AECD或者是AECD任一子集的函数依赖,只有CD→G,
所以 X(2)为上一步X(1)的结果 AECD和找到的一个函数依赖中箭头右侧的属性G的并集,即X(2)=X(1)G=AECDG
(4)F中未用过的函数依赖(A→D,E→C,CD→G为使用过的)中箭头左边是上一步X(2)的结果AECDG或者AECDG的任一子集的函数依赖,已经没有了,所以不必再计算下去,即 X(3)=X(2)=AECDG
(5)所以(AE)+ =AECDG
结束的条件通常有2种:
(1)当计算到某一步时发现 X(i)的结果包含了全部属性( 即题中所给的U中的所有属性,本题中为A,B,C,D,E,G )。
(2)当计算到某一步时发现这一步的结果X(i+l)和上一步的结果X(i)相等(本例子就是这种情况。
二、确定候选码并进行范式级别的判断
【例题】设有关系模式R(U,F),其中属性集U={ A,B,C,D },函数依赖集F={ A→C,C→A,B→AC,D→AC }
(1)求出R的候选码。
(2)根据函数依赖关系,确定关系模式R属于第几范式。
答案:
(1)因为BD能函数确定U中所有属性,所以R的候选码为BD
(2)根据函数依赖集F可知非主属性不是完全函数依赖于主码BD,所以R不是二范式,R属于第一范式
2.1 确定候选码讲解
求R的所有候选码要根据题目中的函数依赖F来做。看看U中的4个属性A,B,C,D,属于L,R,LR,N中的哪一类。
确定候选码的准则如下:
准则1:如果某个属性A只在F中各个函数依赖的箭头左边出现,则A必是候选码中的属性。
准则2:如果某个属性A只在F中各个函数依赖的箭头右边出现,则A必不是候选码中的属性。
准则3:如果某个属性A在F中某个函数依赖的箭头右边出现,又在其他函数依赖的箭头左边也出现,则A有可能是候选码中的属性。
准则4:如果某个属性A不在F的各个函数依赖中出现,则A必是候选码中的属性。(这种情况比较少)
本题分析:
F={ A→C,C→A,B→AC,D→AC }
本题中只在函数依赖的箭头左边出现的属性:B、D
只在函数依赖的箭头右边出现的属性:没有
既在函数依赖的箭头右边出现,又在其他函数依赖的箭头左边出现的属性 :A、C
不在F的各个函数依赖中出现的属性:没有
所以, R的候选码肯定有属性BD,也有可能有A、C,到底有没有A、C需要计算(BD)+ ,如果(BD)+的结果= U,即ABCD,那就没有A、C。
因为本题(BD)+ =ABCD ,故R的候选码就是BD
2.2 范式级别的判断讲解
1NF定义:一般的关系模式都默认为1NF,不需要判定;
2NF定义:设R是一个关系模式,R属于第二范式当且仅当R是1NF,且每个非主属性都完全函数依赖于主码。
3NF定义:设R是一个关系模式,R属于第三范式当且仅当R是2NF,且每个非主属性都非传递函数依赖于主码。
本题R的候选码是BD,所以 B,D为主属性,A,C为非主属性,
题中F={A→C,C→A,B→AC,D→AC},从B→AC或D→AC 都可以看出:非主属性A、C不是完全函数依赖主码BD的,所以R不是2NF,只是1NF。
三、根据要求写SQL语句
1、数据查询
SELECT语句完整的句法:
SELECT <表的列名或列表达式序列>
FROM <基本表名和(或)视图序列>
[WHERE <行条件表达式>]
[GROUP BY <列名序列>
[HAVING <组条件表达式>]]
[ORDER BY <列名[ASC | DESC]>,…]
说明:
[]表示其中的内容根据需要可以省略。
|表示二选一。
SELECT:用于指定输出的内容;
FROM:用于指定要检索的数据的来源表;
WHERE:称为“行条件子句”,用于指定对元组的选取条件;
GROUP BY:称为“分组子句”,作用是指定对元组进行分类后再检索;
HAVING:称为“组条件子句”,用于指定对分类后的元组的选取条件;
ORDER BY:称为“排序子句”,作用是对检索到的元组进行排序。
2、数据更新
(1)数据插入
语法:INSERT INTO <基本表名> [(<列名序列>)] VALUES(<元组值>)
(2)数据删除
语法:DELETE FROM <基本表名> [WHERE <条件表达式>]
(3)数据修改
语法:UPDATE <基本表名>
SET <列名> = <值表达式> [,<列名>=<值表达式>…] [WHERE <条件表达式>]
【例题】教学数据库school中有如下三个关系模式,分别用SQL语句完成下列各题。
student(学号,姓名,性别,出生日期,班号)
course(课程号,课程名)
score(学号,课程号,分数)
(1)向student表中插入一个学生记录(‘100’,‘曾雷’,‘男’,‘2017-7-11’,‘1733’)。
(2)将student表中学号是‘100’的学生的性别修改为‘女’。
(3)删除学号为‘300’的学生记录。
(4)查询student表的所有学生的学号,姓名信息。
(5)查询score表中分数在70–80之间的所有记录。
答案:
(1) INSERT INTO Student VALUES('100','曾雷','男 ','2017-7-11','1733')
(2) UPDATE Student SET 性别='女' WHERE 学号='100'
(3) DELETE FROM Student WHERE 学号='300'
(4) SELECT 学号,姓名 FROM student
(5) SELECT * FROM score WHERE 分数 BETWEEN 70 AND 80
四、关系代数运算和画E-R图并进行关系模式转换
4.1 关系代数运算
设有关系R、S和T如下,计算下列各题。
传统集合运算:
连接运算:
投影:


4.2 E-R图向关系模式的转换
1.有商店和顾客两个实体,“商店”有属性商店编号、商店名、地址、电话,“顾客”有属性顾客编号、姓名、地址、年龄、性别。假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。
满足需求的E-R图如下所示,试将E-R图转换成等价的关系模型,要求每个关系模式的主码加下划线表示。
正确答案:
商店(商店编号 ,商店名,地址,电话)
顾客(顾客编号 ,姓名,地址,年龄,性别)
消费(商店编号,顾客编号 ,消费金额,日期)
一般实体以编号为主码(能唯一确定实体)
边栏推荐
- Xctf mobile--app3 problem solving
- [ArcGIS user defined script tool] vector file generates expanded rectangular face elements
- I'm too lazy to write more than one character
- 剑指Offer07. 重建二叉树
- Drop down refresh conflicts with recyclerview sliding (swiperefreshlayout conflicts with recyclerview sliding)
- 4. 无线体内纳米网:电磁传播模型和传感器部署要点
- Recovery of website address and method of Amazon account login two-step verification failure caused by mobile phone number becoming empty
- 电压环对 PFC 系统性能影响分析
- Sword finger offer06 Print linked list from end to end
- ORM use of node -serialize
猜你喜欢

What is more elegant for flutter to log out and confirm again?

Xctf mobile--rememberother problem solving

Use bloc to build a page instance of shutter

2.8 overview of ViewModel knowledge

Use Tencent cloud IOT platform to connect custom esp8266 IOT devices (realized by Tencent continuous control switch)

initial、inherit、unset、revert和all的区别

Implement verification code verification

剑指Offer05. 替换空格

If you can't learn, you have to learn. Jetpack compose writes an im app (II)

剑指Offer06. 从尾到头打印链表
随机推荐
Togaf certification self-study classic v2.0
Adult adult adult
The future of cloud computing cloud native
雲計算未來 — 雲原生
GaN图腾柱无桥 Boost PFC(单相)七-PFC占空比前馈
Nodejs+express+mysql realizes login function (including verification code)
[download attached] password acquisition tool lazagne installation and use
wpa_ cli
If you can't learn, you have to learn. Jetpack compose writes an im app (II)
145. Post order traversal of binary tree
Keep learning swift
强大的头像制作神器微信小程序
Airflow installation jump pit
I'm too lazy to write more than one character
剑指Offer07. 重建二叉树
2021 autumn Information Security Experiment 1 (password and hiding technology)
2.8 overview of ViewModel knowledge
OpenStack节点地址改变
Swift Error Handling
Is it safe to open an account for online stock speculation? Who can answer


