数据库之数据库范式(1nf~bcnf)

基础知识:

候选码:唯一的标识一个实体的属性。它的属性(就是其中的每一个属性)称为主属性。

详细的定义:如果关系中的某一属性组的值能唯一地标识一个元祖,则称该属性组为候选码;

主属性:就是候选码中的属性;

主码:选择其中一个作为主码,就是数据库表中的主键。

超码:大于等于候选码的属性集合(字段集合)。

-----------以下转载自https://www.zhihu.com/question/24696366/answer/29189700

1NF:如果一个关系模式R的所有属性都是不可分的基本数据项

存在问题数据冗余插入异常删除异常修改异常(这个不解释)

2NF∈1NF,且每一个非主属性完全函数依赖于任何一个候选码

如果一个模式不属于2NF,就会产生以下几个问题:

1、 插入异常部分值为空不能插入

2、 删除异常:不应删除的信息也删除了(同一记录中)

3、 修改复杂数据冗余大,造成修改的复杂化


  • 每一名学生的学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次——数据冗余过大
  • 假如学校新建了一个系,但是暂时还没有招收任何学生(比如3月份就新建了,但要等到8月份才招生),那么是无法将系名与系主任的数据单独地添加到数据表中去的 (注1)——插入异常

    注1:根据三种关系完整性约束中实体完整性的要求,关系中的码(注2)所包含的任意一个属性都不能为空,所有属性的组合也不能重复。为了满足此要求,图中的表,只能将学号与课名的组合作为码,否则就无法唯一地区分每一条记录。

    注2:码:关系中的某个属性或者某几个属性的组合,用于区分每个元组(可以把“元组”理解为一张表中的每条记录,也就是每一行)
  • 假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了(一个系所有学生都没有了,并不表示这个系就没有了)。——删除异常
  • 假如李小明转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据。——修改异常

3NF∈2NF,且每一个非主属性不传递依赖于码

还是存在插入异常删除异常修改异常的情况!!(仓库的例子)

作者:知乎用户
链接:https://www.zhihu.com/question/24696366/answer/29189700
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

若:
  1. 某公司有若干个仓库;
  2. 每个仓库只能有一名管理员,一名管理员只能在一个仓库中工作;
  3. 一个仓库中可以存放多种物品,一种物品也可以存放在不同的仓库中。每种物品在每个仓库中都有对应的数量。

那么关系模式 仓库(仓库名,管理员,物品名,数量) 属于哪一级范式?

答:已知函数依赖集:仓库名 → 管理员,管理员 → 仓库名,(仓库名,物品名)→ 数量
码:(管理员,物品名),(仓库名,物品名)
主属性:仓库名、管理员、物品名
非主属性:数量
∵ 不存在非主属性对码的部分函数依赖和传递函数依赖。∴ 此关系模式属于3NF。

基于此关系模式的关系(具体的数据)可能如图所示:
<img src="https://i-blog.csdnimg.cn/blog_migrate/5808cd7d3379f7017463d4082781726e.png" data-rawwidth="625" data-rawheight="296" class="origin_image zh-lightbox-thumb" width="625" data-original="https://pic3.zhimg.com/68d080d437732aad8cfe451b427849d6_r.jpg">

好,既然此关系模式已经属于了 3NF,那么这个关系模式是否存在问题呢?我们来看以下几种操作:
  1. 先新增加一个仓库,但尚未存放任何物品,是否可以为该仓库指派管理员?——不可以,因为物品名也是主属性,根据实体完整性的要求,主属性不能为空。
  2. 某仓库被清空后,需要删除所有与这个仓库相关的物品存放记录,会带来什么问题?——仓库本身与管理员的信息也被随之删除了。
  3. 如果某仓库更换了管理员,会带来什么问题?——这个仓库有几条物品存放记录,就要修改多少次管理员信息。
作者:知乎用户
链接:https://www.zhihu.com/question/24696366/answer/29189700
来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

---------------------

BCNF∈3NF,每一个决定因素都包含码

解决了数据冗余插入异常删除异常修改异常问题

定义:关系模式R<U,F>∈1FNF,若X→Y且Y不是X的子集时X必含有码,则R<U,F>∈BCNF。也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。

若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。

通俗的解释就是:主属性不依赖于主属性

比如上面的仓库:

主属性:仓库名、管理员、物品名

仓库名 → 管理员,管理员 → 仓库名

所以并不属于BCNF。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值