MySQL-数据库设计规范

1、范式

1.1、概述

  • 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式
  • 常见六种范式,按照范式级别由低到高如下所示:
    • 第一范式
    • 第二范式
    • 第三范式
    • 巴斯范式
    • 第四范式
    • 第五范式

1.2、键和相关属性

  • 范式的定义会用法主键和候选键,数据库中的key由一个或者多个属性组成。
  • 常用键和属性定义如下:
    • 超键:能唯一标识元组的属性集
    • 候选键:如果超键不包括多余的属性,则超键就为候选键
    • 主键:用户可以从候选键中选择一个作为主键
    • 外键:父子关系表中存在
    • 主属性:包含在任意候选键中的属性
    • 非主属性:与主键相对,指的是不包含在任何一个候选键中的属性

2、三范式

2.1、第一范式

  • 主要是确保数据表中每个字段的值必须具有原子性,每个字段的值为不可再次拆分的最小数据单元
  • 属性的原子性是主观的

2.2、第二范式

  • 在满足第一范式的基础上,还要满足数据表中的每条记录都是可唯一标识的。
  • 所有非主键字段必须完全依赖主键,不能只依赖主键的一部分

2.3、第三范式

  • 建立在第二范式的基础上,确保数据表中的每一个非字段主键和主键字段直接相关
  • 要求数据表中的所有非主键字段不能依赖于其他非主键字段,非主键属性直接必须相互独立

3、BCNF(巴斯范式)

  • BCNF是对第三范式(3NF)的进一步规范, 旨在消除数据依赖性问题,确保数据的一致性。
  • 在BCNF中,除了满足第三范式的所有条件外,还要求:对于关系模式R中的每个非平凡的函数依赖X→Y,X必须是R的超键。这意味着,如果在关系R中存在一个属性(X),它决定了另一个属性(Y),那么X必须是R的候选键,而不仅仅是超键。
  • 候选键是可以唯一标识关系中元组的最小属性集合。超键是可以唯一标识元组的属性集合,而不一定是最小的。
  • BCNF的要求确保了数据结构的高度规范化,减少了数据冗余和更新异常的可能性
  • 达到BCNF可能会导致关系模式的进一步分解,从而增加了数据库设计的复杂性。
  • 在实际设计中,需要权衡范式化和性能之间的关系,并根据具体情况进行设计决策。

4、第四范式

  • 多值依赖
    • 多值依赖: 即属性之间的一对多的关系,记为K→→A
    • 函数依赖 :事实上是单值依赖,所以不能表达属性值之间的一对多关系
    • 平凡的多值依赖:全集U= K+A,一个K可以对应于多个A,即K→→A。此时整张表就是一组一对多的关系
    • 非平凡的多值依赖:全集U=K+A+B,一个K可以对应于多个A,也可以对应多个B,A与B是相互独立的,即K→→A,K→→B,整张表由多组一对多的关系

5、第五范式、域键范式

  • 在满足第四范式的基础上,消除了不是由候选键所蕴含的连接依赖
  • 如果关系模式R中的每一个连接依赖均由R的候选键所隐含,则称此关系模式符合第五范式。
相关推荐
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑2 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身2 小时前
使用C语言连接MySQL
数据库·mysql
过过过呀Glik2 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
京东零售技术4 小时前
“慢”增长时代的企业数据体系建设:超越数据中台
数据库
sdaxue.com4 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
o(╥﹏╥)5 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长5 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_5 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端