mysql之范式设计

2022-03-30  本文已影响0人  每天进步一点点变成更好的自己

1NF 需要保证表中每个属性都保持原子性;
2NF 需要保证表中的非主属性与候选键完全依赖;
3NF 需要保证表中的非主属性与候选键不存在传递依赖。


BC范式:https://baike.baidu.com/item/BC%E8%8C%83%E5%BC%8F/3193909?fr=aladdin
第四范式:https://baike.baidu.com/item/%E7%AC%AC%E5%9B%9B%E8%8C%83%E5%BC%8F/3193985
第五范式:https://baike.baidu.com/item/%E7%AC%AC%E4%BA%94%E8%8C%83%E5%BC%8F

1、数据库的设计范式

范式是数据表设计的基本原则。
范式:需要对关系内部各个属性之间联系的合理化程序进行定义,就有了不同等级的规范要求,这些规范要求就是范式(NF)

关系型数据库有6种范式,按照范式级别,从低到高分别是:1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BCNF(巴斯-科德范式)、4NF(第四范式)、5NF(第五范式,又叫做完美范式)。
反规范化:破坏范式规则。

image.png

数据表设计的范式,数据表设计的三大范式:第一范式、第二范式、第三范式。

即1NF 告诉我们字段属性需要是原子性的,而 2NF 告诉我们一张表就是一个独立的对象,也就是说一张表只表达一个意思。

举例:
学生基本信息表(学号,身份证号,姓名)中,学号属性是唯一的。而(学号,身份证号) ->姓名,
(身份证号) ->姓名,
(学号) ->姓名,
所以姓名部分函数依赖于(学号,身份证号)。

image.png

业务优先的原则:一切以业务需求为主,技术服务于业务。

2、数据表中的那些键

范式的定义会使用到主键和候选键(主键和候选键可以唯一标识元组),数据库中的键(Key)由一个或者多个属性组成。我总结了下数据表中常用的集中键和属性的定义:

实例:
NBA 的球员表(player)和球队表(team)。
球员表:定义为包含球员编号、姓名、身份证号、年龄和球队编号;
球队表:包含球队编号、主教练和球队所在地。
对于球员表来说,
1、超键:包括球员编号或者身份证号的任意组合,比如(球员编号)、(球员编号,姓名)、(身份证号,年龄)等。
2、候选键:最小的超键,对于球员表来说,候选键就是(球员编号)或者(身份证号)。
3、主键:我们自己选定,也就是从候选键中选择一个,比如(球员编号)。
4、外键:球员表中的球队编号。
在 player 表中,
1、主属性:(球员编号)、(身份证号)
2、非主属性:其他的属性:(姓名)、(年龄)、(球队编号)都是非主属性。

上一篇下一篇

猜你喜欢

热点阅读