数据库候选关键词怎么求_关系型数据库几大范式的理解总结

本文详细介绍了数据库中的范式理论,包括第一范式到第五范式,以及函数依赖和候选码的概念。通过实例解释了如何分析和确定关系型数据库的候选码,并探讨了各个范式在确保数据一致性和减少冗余方面的作用。此外,还提到了多值依赖与第四范式的关系。

d22f38e2f7a1e004b8cf56723394ae86.png

范式的定义

  • 关系型数据库中的关系是需要满足一定条件的,满足这些不同程度的规范化就叫做范式。
  • 范式按照规范化程度从低到高排序为第一范式,第二范式,第三范式,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候选码所隐含。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值