关系型数据库设计-6种范式

  • 关系型数据库的规范化理论
  • 数据依赖
    • 函数依赖
    • 平凡函数依赖与非平凡函数依赖
    • 完全函数依赖与部分函数依赖
    • 传递函数依赖
  • 码&主码、主属性&非主属性
    • 码&主码
    • 外码(外键)
    • 主属性&非主属性
  • 范式
    • 第一范式(1NF)
    • 第二范式(2NF)
    • 第三范式(3NF)
    • BC范式(BCNF)
    • 第四范式(4NF)
    • 第五范式(5NF)
  • 关系模式规范化
    • 概念
    • 遵循原则
    • 关系模式的分解
      • 无损连接
      • 保持函数依赖

关系型数据库的规范化理论

规范化理论用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

数据依赖

  1. 通过一个关系中属性间值的相等与否体现出来的数据键的相互关系
  2. 现实世界属性间相互联系的抽象
  3. 数据的内在的性质
  4. 语义的体现
函数依赖
  1. 关系的X属性集上的值,可以唯一决定R的Y属性集上的值
  2. 对于R的任意两个元组,X上的值相等,Y上的值必相等。

满足这种关系, 则:

  • X函数决定Y,Y函数依赖于X, 记作 X→Y

  • X称为 决定因素,Y称为依赖因素。

说明:

  • 如果X→Y,并且Y→X, 则记为 X↔Y
  • 如果Y不函数依赖于X, 则记为 X↛ Y

对于关系模式R(U),U为属性集,X、Y为U的子集,根据函数依赖定义和实体间联系的定义,可以得到如下变换的方法:

  • 如果X和Y之间是1:1的联系, 则存在函数依赖X↔Y
  • 如果X和Y之间是n:1的联系, 则存在函数依赖X→Y
  • 如果X和Y之间是m:n的联系,则X和Y之间不存在函数依赖
  1. 函数依赖实际上是指一个关系中一个属性集和另一个属性集间的多对一关系

  2. 多对一关系可以用外键来描述

平凡函数依赖与非平凡函数依赖
  1. 平凡函数依赖

    X→Y, 但是 Y⊆X

    平凡函数依赖必然存在的

  2. 非平凡函数依赖

    X→Y, Y⊈X

完全函数依赖与部分函数依赖
  1. 部分函数依赖

    X→Y , 存在 X的某一个真子集 X’ →Y

  2. 完全函数依赖

    X→Y , 不存在 X的某一个真子集 X’ →Y

    也就是X是可以决定Y的最小集合

传递函数依赖
  1. X→Y, Y→Z
  2. 并且 Y不是 X的子集, Z不是Y的子集
  3. 同时 Y↛ X

码&主码、主属性&非主属性

码&主码
  1. 候选码,简称码
  2. 候选码是能够唯一确定关系中任何一个元组的最少属性集合
  3. 主码是候选码中任意选定的一个
外码(外键)

关系模式R中属性或者属性组X, 并非R的,但X是另一个关系模式的S的码,则称X是R的外码

主属性&非主属性
  1. 主属性

    包含在任何一个候选码中的属性,取值不能为空值

  2. 非主属性

    不包含在任何码中的属性

范式

满足特定要求的模式

  1. 不同级别的范式要求不同
  2. 范式可以作为衡量一个关系模式的好坏的标准
  3. 若关系模式R满足范式xNF, 记为 R∈xNF
第一范式(1NF)

所有属性都是不可分的基本数据项, 即属性不可分

1NF是关系的基本要求, 否则不能称为关系数据库

第二范式(2NF)
  1. 关系模式R ∈ 1NF
  2. 每一个非主属性完全函数依赖于R的码

符合1NF, 并且消除了非主属性对码的部分函数依赖

推论

  • 如果关系模式R∈1NF, 并且每个候选码都是单码,则R∈2NF
第三范式(3NF)
  1. 关系模式R∈2NF
  2. R的每个非主属性都不传递依赖于任何候选码

符合2NF,并且消除了非主属性对码的传递函数依赖

推论

  • 不存在非主属性的关系模式一定为3NF
BC范式(BCNF)

每一个决定属性集,都包含候选码

X→Y, Y不是X的子集, 则X必包含候选码, 那么R∈BCNF

符合3NF,并且消除了主属性对码的部分函数依赖和传递依赖

推论:

  • 如果R∈3NF, 并且R只有一个候选码,则必有R∈BCNF

BCNF是在函数依赖条件下对模式分解所能达到的最高分离程度,BCNF在函数依赖范畴内达到了最高的规范化程度。

BCNF的关系所具有的性质

  1. 所有非主属性都完全函数依赖于每个候选码
  2. 所有主属性都完全函数依赖于每个不包含它的候选码
  3. 没有任何属性完全函数依赖于非码的任何一组属性
第四范式(4NF)

消除表中的多值依赖

第五范式(5NF)

将表分割为尽可能小的块,为了排除在表中所有的冗余。

关系模式规范化

概念

将低一级的范式的关系模式,通过模式分解转换为高一级的关系模式集合的过程,叫做关系模式的规范化

遵循原则
  1. 关系模式进行无损连接分解

    关系模式分解过程中数据不能丢失或者增加,必须把全局关系模式中的所有数据无损的分解到各个子关系模式中,以保证数据的完整性

  2. 合理选择规范化程度

    • 存取效率

      低级模式造成的冗余度很大,浪费存储空间,影响数据的一致性

    • 查询效率

      低级范式比高级范式好连接运算的代价较小

  3. 正确性与可实现性原则

关系模式的分解

有三种定义

  1. 分解具有无损连接性
  2. 分解要保持函数依赖
  3. 分解既要 保持函数依赖 又要具有 无损连接性
无损连接

分解后子模式的自然连接结果 和 原模式相等

只有具有无损连接性的分解才能够保证不丢失信息

保持函数依赖

原模式蕴含的函数依赖 一定 也可以由分解得到的某个关系模式中的函数依赖所逻辑蕴含

关系型数据库设计-6种范式相关推荐

  1. 关系型数据库设计范式总结

    文章目录 关系型数据库设计范式 第一范式1NF 第二范式2NF 第三范式3NF 逆规范化 总结 关系型数据库设计范式 范式:Normal Format,符合某一种级别的关系模式的集合,表示一个关系内部 ...

  2. 关系型数据库设计范式及原则

    好的数据库设计一定是精致.优雅.赏心悦目.让人心醉. 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.,以提升数 ...

  3. 关系型数据库设计范式

    构造数据库需要遵循一定的规则,这个规则就是范式.所谓范式就是符合某一级别的关系模式的集合:从规范的宽松到严格,分别由不同的范式,一般常用的有第一范式,第二范式,第三范式,及BC范式.范式就是建立在函数 ...

  4. 数据库技术:关系型数据库设计总结

    关系型数据库简介 关系数据库由由埃德加·科德(IBM)在1969年左右提出.自推出后就成为商业应用的主要数据库模型(与其他数据库模型,如分级.网络或对象模型相比).如今已有许多商业关系数据库管理系统( ...

  5. 数据库设计的三范式和反范式

    数据库设计的三范式和反范式 范式的概念 三范式 范式一 范式二 范式三 反范式 总结 范式的概念 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式 ...

  6. 三十二、数据库设计的三范式【完】

    数据库设计的三范式 第一范式 数据库表中不能出现重复记录,每个字段是原子性的不能再分 不符合第一范式的示例 学生编号 学生姓名 联系方式 1001 张三 zs@gmail.com,1359999999 ...

  7. 数据库中三种范式的讲解

    数据库三大范式详解 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范 ...

  8. 数据库的定义、关系型数据库的四种约束。。

    今天离开C#开始进入数据库的学习,初步认识了一下:1,什么是数据库  2,数据库表的创建  3,关系型数据库的四种约束方法 1,什么是数据库: (1)定义:数据库是存储在计算机硬盘上,有组织,可以共享 ...

  9. mysql增删改查不区分大小写吗_MySQL的增删改查语句以及数据库设计的三大范式...

    数据库设计的三大范式: 1.列的原子性,即列是不可再分的 2.表里的每一列都应该与主键有关系, 3.表里的每一列都应该与主键有直接关系, 当使用自增长列不满足2.3范式,是特殊例子,只用在解决较为复杂 ...

最新文章

  1. 【pytorch】torch.nn.functional.pad的使用
  2. Java虚拟机2:Java内存区域及对象
  3. mysql 入门命令
  4. vue指令:v-pre原样输出,不解析插值表达式
  5. mysql使用bka_MySQL Batched Key Access (BKA)原理和设置使用方法举例
  6. linux端口映射_Linux 系统安全与优化配置
  7. 【2017-03-09】SQL Server 数据库基础、四种约束
  8. Android数据库Realm实践
  9. 漫画:什么是时间复杂度
  10. 低功耗/远距离lora模块:物联网智能家居、抄表多领域应用SX1262芯片方案
  11. Pandas常用操作总结
  12. 响应式手机配件织梦模板
  13. 机器学习中树模型算法总结之 决策树(上)
  14. Linux系统忘记密码怎么办?
  15. 【例题 8-3 UVA - 1152】4 Values whose Sum is 0
  16. Altium Designer(3)-绘制PCB封装库
  17. 阿里云商标注册申请智能、顾问和安心区别及选择攻略
  18. 浅谈Redis延迟测试方法
  19. java 中介模式_java设计模式-中介者模式
  20. SaaS公司到底算不算互联网公司?

热门文章

  1. 一本通第三章 程序的控制结构
  2. 简单移动Android客户端,下厨房移动第一站–android客户端
  3. PMP证书在面试项目经理时有加持吗?解惑
  4. 后台软件分层图(附带web端)
  5. 目标检测的置信度和NMS
  6. 激光雷达大洗牌:华为、大疆入局、初创玩家眼热,谁将率先破局?
  7. css滤镜属性渐变_使用滤镜对CSS渐变进行动画处理
  8. EPON OLT网管系统的实现
  9. 现代计算机发现应用思路有哪些,数学在现在科技中的应用有哪些
  10. Selenium之悬浮菜单定位