关系型数据库几大范式的理解总结

范式的定义

关系型数据库中的关系是需要满足一定条件的,满足这些不同程度的规范化就叫做范式。
范式按照规范化程度从低到高排序为第一范式,第二范式,第三范式,BC范式,第四范式,第五范式。
前导知识
函数依赖#

R(U)是属性集U的关系模型,X,Y是U的一个子集,对于R(U)中的任一个关系r,不可能存在两个元组在X上属性值相同,而在Y上属性值不同。则称X函数确定Y,或Y函数依赖X。

说人话:U是表(可能不止一个表,可以是有关系的多个表)的所有列,X,Y分别是这些属性列的一个子集,也就是若干个属性,对于所有在X这些属性上的值一样的行,在Y上的属性上也必须一样,满足这样条件的这若干个属性 X和Y叫称其函数依赖。
X相同则Y必须相同,但X不同Y可以相同,也可以不同。
如果Y是X的子集,就叫平凡的函数依赖,一般不考虑这种,因为就是废话,X整个都相同,子集肯定相同。
如果Y不是X的子集,叫做非平凡的函数依赖。
如果Y函数依赖X,那么X称为决定因素。
如果Y函数依赖X,但不依赖X的任何一个真子集,也就是X是极小的,那就称Y完全函数依赖X,否则称Y部分函数依赖X。
如果X决定Y,Y决定Z,且Y不决定X,那么称Z对X传递函数依赖。
码(键)#

U是属性全集,K是U的子集,若U完全函数依赖K,则称K为候选码,候选码若有多个,任意选择一个都可作为主码,若U部分函数依赖K,则称K为超码。显然,候选码当然也是超码,而且是最小的超码。
包含在任何一个候选码的属性都叫主属性,其他都叫非主属性。
在本书中主码和候选码统称为码,属性集K不是该关系模式(表)的码,而是另一个关系模式(表)的码,则称K为该关系模式(表)的外码。
求候选码#

例子:

举例

有这样一个配件管理表WPE(WNO,PNO,ENO,QNT),其中WNO表示仓库号,PNO表示配件号,ENO表示职工号,QNT表示数量。

有以下约束要求:

(1)一个仓库有多名职工;

(2)一个职工仅在一个仓库工作;

(3)每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件;

(4)同一种型号的配件可以分放在几个仓库中。

分析表中的函数依赖关系,可以得到:

(1)ENO->WNO;

(2)(WNO,PNO)->QNT

(3)(WNO,PNO)->ENO

(4)(ENO,PNO)->QNT

观察法?:#

候选码的定义就是一组能决定所有列(某一个元组)的属性。

所以根据这4个函数依赖关系,(WNO,PNO)显然肯定是,因为它可以决定QNT,也可以决定ENO,加上它本身,就是属性全集U了。

而(ENO,PNO),虽然只有一个决定QNT,但是ENO可以单独决定WNO,所以显然(ENO,PNO)也就能一起决定QNT和WNO,因此也是候选码。

六大范式?
第一范式#

定义#

满足最基本的条件,每一个分量都是不可分的数据项。

说人话,每一列对应只有一个值。
第二范式#

定义#

R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则R属于第二范式

说人话,除了主码候选码之外的其他属性都要完全函数依赖于主码。
因为任意一个候选码都能作为主码,所以,也就是说,如果存在某个属性不是完全函数依赖于某一个候选码,可能是部分函数依赖,那就没了。
比如主键是(学号,课程号),但是现在有一个属性完全函数依赖于学号,而部分函数依赖于(学号,课程号),那就不满足第二范式。
第三范式#

定义#

R属于第二范式,若R中不存在码X,属性子集Y,非主属性Z,使得X决定Y,Y不决定X,Y决定Z,则R属于第三范式。

说人话,非主属性必须直接完全函数依赖于主键,中间不能有其他函数,即不能是传递函数依赖。
BC范式#

定义#

R属于第一范式,若X决定Y,且Y不是X的子集时X必含有码,即每一个决定因素都包含码,则R属于BC范式。

说人话, 若R是第一范式,且每个属性不部分函数依赖于候选码也不传递函数依赖于候选码,则R是BC范式,具体以下三点。所有非主属性对每一个码都是完全函数依赖。(也是第二范式要求)所有主属性对每一个不包含它的码也是完全函数依赖。(也就是排除了所有属性对码的部分依赖)没有任何属性完全函数依赖于非码的任何一组属性。(排除传递函数依赖)
实际上,BC范式就是在第三范式的基础上消除了主属性的传递依赖。
第四范式#

多值依赖#

说人话,多值依赖就是一个表中多对多的关系,如果可以分成两列,这两列多对多,这就平凡的多值依赖,如果是分成三列,固定某一列的值,其他两列多对多,这就是非平凡的多值依赖,第四范式要消除的就是非平凡的多值依赖。
函数依赖是特殊的多值依赖,因为多对多其实也是一对多。
定义#

R属于第一范式,对应R的每一个非平凡多值依赖,X->->Y,X都含有码,则R属于第四范式。

说人话,在满足第三范式的基础上,关系表中不能含有一个实体的两个或多个相互独立的多值因子。dalao博客
或者说,满足第四范式即要求每个非平凡的多值依赖都含有码,也就是实际上是函数依赖。
第五范式#

定义#

第五范式是指关系模式R依赖均由R候选码所隐含。

这辈子应该不会用到的内容,就不管了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 第5章 关系数据库理论 学习重点: 关系的形式定义; 数据以来的基本概念; 范式的概念; 第一、二、三、BC、四范...
    TianWuJun阅读 1,051评论 0 0
  • 需要了解的一些前置定义: 域:一些相同类型数据的集合例如:自然数,整数是一个域,{男,女}也是一个域 笛卡尔积:有...
    极尽愉悦阅读 1,230评论 2 3
  • 一般而言,关系数据库的设计目标是生成一组关系模式,使我们存储信息时避免不必要的冗余,并且让我们可以方便地获取信息。...
    SunnyQjm阅读 982评论 0 5
  • 有时候想开始撸代码做系统设计的时候,会有好心的前辈提醒我,“ 小伙子要用数据库吧?记得先设计设计哦,别乱扯张表就用...
    路万奇与青川君阅读 982评论 0 0
  • 一、数据关系 关系数据库可能存在的问题 1.数据冗余(必然存在,但应该尽量少) 2.更新冗余 3.插入冗余 4.删...
    一村之里正阅读 2,043评论 0 3