范式通俗理解:1NF、2NF、3NF和BNCF

https://blog.csdn.net/wyh7280/article/details/83350722

范式通俗理解:1NF、2NF、3NF和BNCF
原创hongiii 最后发布于2018-10-24 21:03:43 阅读数 14993 收藏
展开
范式通俗理解:1NF、2NF、3NF和BNCF
准备知识
超键、候选键、主键
函数依赖
部分依赖
传递依赖
范式
1NF
2NF
3NF
BCNF
参考
准备知识
超键、候选键、主键
超键
超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键

候选键
候选键(candidate key):不含有多余属性的超键称为候选键。也就是关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选键。

主属性:任何一个候选键中的属性称作主属性。(请记住这个概念)

主键
主键(primary key):用户从一个关系的多个候选键中,选定一个作为主键。

结合具体的例子进行解释,现有学生表如下:
学生(学号,姓名,性别,身份证号)

学号姓名性别身份证号
1小王男344
2小吴女354
3小丽女364
4小张男374
超键
由超键的定义可知,在学生表中含有学号或者身份证号的任意组合都可以唯一标识一个学生,那么它们就是此表的超键。如:(学号)、(身份证号)、(学号,姓名)、(身份证号,性别)等。

候选键
候选键属于超键,它是最小的超键,就是说如果再去掉候选键中的任何一个属性它就不再是超键了。对于(学号、姓名)来说,去掉姓名后仍是一个超键,那么它就不是候选键。其中,学生表中的候选键为:(学号)、(身份证号),主属性就是学号、身份证号。

主键
主键就是候选键里面的一个,用户可以选择,那么在这里我们选择(学号)作为学生表的主键。

键 = 码,英文key。

函数依赖
这里先给出数学描述,再进行通俗解释。

数学描述

通俗理解
函数依赖的英文定义是:
The value of one or a group attributes can decide the value of other
attributes.

很容易理解,也就是一个或者一组属性的值可以决定其他属性的值。候选键都可以做到。

部分依赖
数学描述

通俗理解
部分依赖是什么情况呢?
举个例子,现有一关于学生的关系模式Student(学生编号 , 学生姓名, 班级编号, 院系, 课程编号 , 成绩)
学生编号学生姓名班级编号院系课程编号成绩
S01杨明D01思齐C0190
S02李婉D01思齐C0187
S01杨明D01思齐C0292
S03刘海D02述圣C0195
S04安然D02述圣C0278
S05乐天D03省身C0182
(学生编号#、课程编号#)作为主键,可以唯一标识每条元组,但是对于学生姓名、学生所属的班级编号、院系,这三个属性可以直接通过学生编号来确定,在这里课程编号#显得很多余。于是称,学生姓名、班级编号、院系对(学生编号#、课程编号#)部分函数依赖。

即,非主属性对键有部分函数依赖。

主属性:任何一个候选键中的属性称作主属性。
键在这里理解成候选键

传递依赖
数学描述

通俗理解
继续以Student表为例,
学生编号学生姓名班级编号院系课程编号成绩
S01杨明D01思齐C0190
S02李婉D01思齐C0187
S01杨明D01思齐C0292
S03刘海D02述圣C0195
S04安然D02述圣C0278
S05乐天D03省身C0182
学生编号可以唯一确定他所在的院系,但是注意到这中间存在传递过程,即学生编号唯一确定该学生所对应的班级编号,班级编号对应唯一的院系。我们称,院系对学生编号传递函数依赖。

即,非主属性对键有部分函数依赖。

主属性:任何一个候选键中的属性称作主属性。

范式
关系数据库中的模式设计要满足一定的规范,引入了范式这一概念。
不管做哪种范式的设计,最终要的思想是“one fact in one place”,也就是“一事一地”。

1NF
定义:关系中每一分量不可再分。即不能以集合、序列等作为属性。(也就是不能表中套表,要保证数据的原子性。)

举例

学生编号课程编号
S01{C1,C2,C3}
S02{C1,C4}
它就不满足1NF,因为{C1,C2,C3}和{C1,C4}是集合。

修改为符合1NF:

学生编号课程编号
S01C1
S01C2
S01C3
S02C1
S02C4
2NF
定义:在1NF基础上,消除非主属性对键的部分依赖,则称它符合2NF。
根据上面对部分依赖的分析,对于Student表:

学生编号学生姓名班级编号院系课程编号成绩
S01杨明D01思齐C0190
S02李婉D01思齐C0187
S01杨明D01思齐C0292
S03刘海D02述圣C0195
S04安然D02述圣C0278
S05乐天D03省身C0182
对于学生姓名、学生所属的班级编号、院系,这三个属性可以直接通过学生编号来确定,在这里课程编号#显得很多余。也就是,学生姓名、班级编号、院系对(学生编号#、课程编号#)部分函数依赖。把Student表进行拆分,可以消除部分依赖。

其中,学生表Student如下:

学生编号学生姓名班级编号院系
S01杨明D01思齐
S02李婉D01思齐
S01杨明D01思齐
S03刘海D02述圣
S04安然D02述圣
S05乐天D03省身
学生-课程表如下:

学生编号课程编号成绩
S01C0190
S02C0187
S01C0292
S03C0195
S04C0278
S05C0182
符合2NF。

3NF
定义:在2NF基础上,消除非主属性对键的传递依赖,则称它符合3NF。

根据上面对传递依赖的分析,对于Student表,学生编号可以唯一确定他所在的院系,但是注意到这中间存在传递过程,即学生编号唯一确定该学生所对应的班级编号,班级编号对应唯一的院系。我们称,院系对学生编号传递函数依赖。

把Student表继续进行拆分,可以消除传递依赖。

其中,学生表Student如下:

学生编号学生姓名班级编号
S01杨明D01
S02李婉D01
S01杨明D01
S03刘海D02
S04安然D02
S05乐天D03
班级-院系表如下:

班级编号院系
D01思齐
D02述圣
D03省身
符合2NF。

BCNF
我当时在看BCNF的时候,这块是最懵的地方,网上找的例子五花八门……解释和过程感觉没有比较详细的,最后反正得到了一个结果orz。我本来想把这个范式按照类似的定义来写的……但是到BNCF发现不能直接写成“在3NF基础上,消除主属性对键的部分依赖、传递依赖,则称它符合BCNF。”

因为这样不太好解释,故而调整了方案。我认为,理解更重要。

先给个文绉绉的定义

换言之,对于关系模式R,如果每一个函数依赖的决定因素都包含键,则R属于BCNF范式。

现在举例,现有关系模式:通讯(城市名,街道名,邮政编码)

函数依赖关系集为:
F={(城市名,街道名)-> 邮政编码,邮政编码 -> 城市名}
也就是一个城市名和一个街道名,对应一个邮政编码;一个邮政编码对应一个城市名。

此时,候选键(城市名,街道名)非主属性邮政编码完全依赖于候选键,且无传递依赖,属于3NF。

那么它是否属于BCNF呢?我们按照下面的定义来看一下,

换言之,对于关系模式R,如果每一个函数依赖的决定因素都包含键,则R属于BCNF范式。

对于决定因素(城市名,街道名),它包含键(城市名,街道名),其实它本身就是键了,没问题;
对于决定因素邮政编码,它不包含键(城市名,街道名)

所以它不属于BCNF。在关系模式R中,如果每一个决定因素都包含码,则R属于BCNF。
————————————————
版权声明:本文为CSDN博主「hongiii」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wyh7280/article/details/83350722

(0)

相关推荐

  • 第五讲:毕业设计的框架设计

    本讲我们来理清思路,如何把大数据思维融入毕业设计里面. 首先,前提是你已经知道了一个软件项目的制作,比如"基于分布式存储的学生档案管理系统"."基于分布式计算的图书管理系 ...

  • 关系模式范式分解教程 3NF与BCNF口诀

    https://blog.csdn.net/sumaliqinghua/article/details/86246762 [通俗易懂]关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂 原创置顶 ...

  • 如何通俗理解线性回归? | 30天学会医学统计与SPSS公益课(Day16)

    30天打卡学习医学统计与SPSS本课程是高校医学统计学教授的公益.免费公开课!如假包换!我将每天推送视频和文字教程,讲授基于医学数据的各种统计分析策略.如果你能跟得上节奏,我相信在一个月后,您将会掌握 ...

  • 三阴三阳深度解析!(附通俗理解版六经开阖枢)

    足太阳膀胱经解析  足太阳膀胱经,就是足三阳经的"开".<素问·灵兰秘典论>曰:"膀胱者,州都之官,津液藏焉,气化则能出矣."什么意思呢? 州都:州 ...

  • 通俗理解乳腺癌:男人也会患病吗?

    乳腺癌乍一听可能都会觉得这是一种只可能发生在女性身上的一种疾病.其实不然,男性也是等同可能发生的,但对比性别发病率,男性比女性是要低很多(乳腺癌男性患者占总病例1%). 通俗理解乳腺癌:病发部位在哪里 ...

  • C社解读:政府补助应用指南(内含纠错、拟上市公司案例、财政贴息实际利率法处理通俗理解)

    新准则下,对于政府补助出现了总额法和净额法的两种会计处理,一经选定不得随意变更. 总额法即,补助不影响原资产成本或发生费用,单独针对补助金额确认递延收益(后续摊销进其他收益)或直接进其他收益或营业外收 ...

  • 从碧桂园年报通俗理解房地产企业对新收入准则的运用

    首先感叹一下PWC的专业,做第一个吃螃蟹的人,出具了这份新收入准则下房地产开发企业的审计报告,过程中肯定少不了与监管机构的沟通,形成的收入确认相关底稿都是严格保密,就连PWC内部也难以获得. 今天我们 ...

  • 资产证券化(ABS)通俗理解

    图片来源于网络 [目前我国资产证券化有三种形式,包括央行和银监会主管的金融机构信贷资产证券化.证监会主管的企业资产证券化以及交易商协会主管的资产支持票据.我们今天主要说说证监会监管的资产证券化,全称资 ...

  • 【视频】Excel函数每日一讲(12):通俗理解Excel函数

    以上视频的所有教学内容,选自教材<玩转Office轻松过二级>(第3版) 书上包含所有方法.技巧.题目,可以自己看书自学. 字都认识,为啥要让别人念呢? 选自本书第9章前言 公式和函数,E ...

  • 如何通俗理解“合同现金流量”?

    新金融工具准则将以前四分类的金融资产修改为三分类,分类标准主要定位于两个条件: (1)企业管理金融资产的业务模式: (2)金融资产的合同现金流量特征. 企业管理金融资产的业务模式是指企业如何管理金融资 ...

  • 如何通俗理解二元函数的可微

    高数下册是多元函数的微积分,由于多元函数的图像比较复杂,课本上基本没有怎么画出二元函数的图像,只是采用推理证明的方法说明函数的连续及可微性质,'抽象不直观'是我们学习数学最大的拦路虎,下面我们讲合图像 ...