当前位置:网站首页>【综合题】【数据库原理】
【综合题】【数据库原理】
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图转换成等价的关系模型,要求每个关系模式的主码加下划线表示。
正确答案:
商店(商店编号 ,商店名,地址,电话)
顾客(顾客编号 ,姓名,地址,年龄,性别)
消费(商店编号,顾客编号 ,消费金额,日期)
一般实体以编号为主码(能唯一确定实体)
边栏推荐
- The latest version of blind box mall thinkphp+uniapp
- repo Manifest Format
- Apache Mina Development Manual
- Implement verification code verification
- [ArcGIS user defined script tool] vector file generates expanded rectangular face elements
- Computer version wechat applet full screen display method, mobile phone horizontal screen method.
- 【嵌入式】---- 内存四区介绍
- With pictures and texts, summarize the basic review of C language in detail, so that all kinds of knowledge points are clear at a glance?
- 剑指Offer04. 二维数组中的查找【中等】
- 2020-11_ Technical experience set
猜你喜欢
ncnn神經網絡計算框架在香柳丁派OrangePi 3 LTS開發板中的使用介紹
Record your vulnhub breakthrough record
Flutter 退出登录二次确认怎么做才更优雅?
Self made pop-up input box, input text, and click to complete the event.
1-2 project technology selection and structure
Xctf mobile--rememberother problem solving
剑指Offer09. 用两个栈实现队列
Integer int compare size
Attack and defense world mobile--ph0en1x-100
2.7 overview of livedata knowledge points
随机推荐
Apache Mina开发手册
使用BLoC 构建 Flutter的页面实例
With pictures and texts, summarize the basic review of C language in detail, so that all kinds of knowledge points are clear at a glance?
Analysis of a music player Login Protocol
[embedded] - Introduction to four memory areas
Sword finger offer04 Search in two-dimensional array [medium]
2020-11_ Technical experience set
02_ Lock the code, and don't let the "lock" become a worry
启用MemCached的SASL认证
Flinksql can directly create tables and read MySQL or Kafka data on the client side, but how can it automatically flow and calculate?
It feels great to know you learned something, isn‘t it?
ImportError: No module named examples. tutorials. mnist
Is it OK to open an account for online stock speculation? Is the fund safe?
Sword finger offer10- I. Fibonacci sequence
基于同步坐标变换的谐波电流检测
The latest version of blind box mall thinkphp+uniapp
4. 无线体内纳米网:电磁传播模型和传感器部署要点
Drop down refresh conflicts with recyclerview sliding (swiperefreshlayout conflicts with recyclerview sliding)
剑指Offer09. 用两个栈实现队列
Integer int compare size