题型四 分解关系模式:考点:关系模式的基本函数依赖、关系候选键、关系属于第几范式、
关系属于第几NF、分解NF模式集(10分)
文章图片
要掌握本题首先要掌握很多基本概念,我们来浅看一下吧,只讲要考的和做题会用到的、我不讲书上的官方话了,怎么好理解怎么来
一、基本概念
1、函数依赖(FD):函数依赖是同一关系内部属性与属性之间的约束关系,也就是在R(A1,A2...)中讲A1与A2的关系之类的,比如设属性学号为X、姓名为Y,由于学号可以决定姓名,则有X决定Y或者说Y依赖于X,记作:X->Y
2、FD集(函数依赖集):将多个FD放到一起即可:如函数依赖集F={A->B,B->C,A->C},有集合就会出现蕴含关系,于是F逻辑蕴含X->Y,记作:F|=X->Y
3、超键:设某一关系R的属性集为U,X是U的子集,如果U中的部分属性X可以决定U,即X->U,那么称X是R的一个超键(去掉超键中的任何一个属性,X->U依旧可能成立)
4、候选键:在超键中,如果去掉超键中的任何一个属性,X->U就会不成立(也就是该超键中无冗余属性),那么称此超键为候选键
5、L类:F={A->B,B->C,A->C}中所有->左边的属性,即A、B
6、R类:F={A->B,B->C,A->C}中所有->右边的属性,即B、C
7、最小函数依赖:题出的难点的话,会考到,但近两年大题中未见,是考点,想学的可以自己看看书,这里就不讲了
8、关系模式的分解:我们可以将R(A1,A2,A3,A4)分解成R1(A1,A2),R2(A3,A4)
9、完全函数依赖:有属性集X和属性集Y,对函数依赖X->Y,去掉X中的任何一个属性,X->Y就不成立(也就是该X中无冗余属性),那么Y完全函数依赖于X,否则称局部依赖
10、非主属性:是指关系中不包含在任何一个候选码中的属性。 例如:在关系——学生(学号,姓名,年龄,性别,班级)中,主属性、候选码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性
(类似判定候选键,都是看依赖关系中的L类是否有冗余属性)
11、大题中会出现的传递依赖:有候选键X、非主属性Y、A,若X->Y,Y->A,Y!->X,A不属于Y,那么称X->A是传递依赖(A传递依赖于X)
二、关系模式的范式
范式之间存在包含关系:1NF包含2NF包含3NF包含BCNF
1、第一范式(1NF)
只要关系模式R(A1,A2...)中所有属性A1、A2......都是不可再分的属性,都是原子属性,那么就满足第一范式
对不满足1NF的关系模式R,我们要将R变成满足1NF的关系模式:要么分解其非原子属性,要么分解其关系模式,一般题目中给你都满足1NF
2、第二范式(2NF)
若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,则R为第二范式(2NF)
判断是否是2NF:将候选键(大题中常见的候选键一般包含2个属性)依次去决定每一个非主属性,判断函数依赖右侧(L类)是否有冗余属性,若没有,则符合2NF ,反之不符合
对不满足2NF的关系模式R,我们要将R变成满足2NF的关系模式:其实就是个简单分类,我们把R分解成R1、R2.......将与候选键发生冗余现象的非主属性、及其对应候选键放在R1中;将与候选键未发生冗余现象的非主属性、及其对应候选键放在R2中。我们看个例子理解一下:
例:设某关系R(客户编号,购买商品的编号,数量,生产企业的名称,企业地址),判断R是否属于2NF,如果R不属于2NF,请将R分解为第2NF模式集
解:候选键为客户编号,购买商品的编号,有(客户编号,购买商品的编号)->(生产企业的名称,企业地址),由于单个属性“购买商品的编号”就可以决定“生产企业的名称,企业地址”,所以存在非主属性局部依赖于候选键的情况,R不属于2NF
将R分解为第2NF模式集思路(卷子上不写,只在草稿纸上写) |
文章图片 |
R1(购买商品的编号,生产企业的名称,企业地址)
R2(客户编号,购买商品的编号,数量)
3、第三范式(3NF)
温习一下:11、大题中会出现的传递依赖:有候选键X、非主属性Y、A,若X->Y,Y->A,Y!->X,A不属于Y,那么称X->A是传递依赖(A传递依赖于X)
若关系模式R是2NF,且每个非主属性都不传递依赖于候选键,则R为第三范式(3NF)
判断是否是3NF:就是根据定义,看在关系模式中是否存在非主属性传递依赖于候选键的现象。
对不满足3NF的关系模式R,我们要将R变成满足3NF的关系模式:
如在R(X,Y,A,B,C)中,候选键为X、非主属性为Y、A、B、C,存在X->Y,Y->A,Y!->X,A不属于Y(即X->A,A传递依赖于X),那么仅需将R分解为R1(X,Y,B,C),R2(Y,A)即可满足3NF,可以理解为R1只去掉了位于传递位置末尾的Y,R2只保留了与候选键发生传递依赖的两个非主属性Y,A
看一道例题理解一下
例:有关系模式:读者(读者号,姓名,单位,地址),其中每个单位只有一个地址,请将其规范化为3NF
解:
由题意知:读者号->单位->地址
读者1(读者号,姓名,单位)只去掉了位于传递位置末尾的地址
单位(单位,地址)只保留了与候选键发生传递依赖的两个非主属性:单位,地址
真题:
文章图片
【数据库|TYUT太原理工大学2022数据库大题之分解关系模式】
推荐阅读
- javaweb|TYUT太原理工大学2022javaweb选择、判断、填空题库
- 数据库|TYUT太原理工大学2022数据库大题之概念模型设计
- Mysql 数据库之高级操作
- Mongodb 数据库的简单使用
- Mongodb 数据库安装之集群部署
- 这些编程语言值得学习
- Redis面试|Redis分布式锁怎么玩(上)
- 数据库|Redis(持久化)
- NoSql|Redis - 底层数据结构与持久化简述