规范化你的数据库
如果你一直在使用数据库一段时间,你有可能听说过术语规范化。 也许有人问你“数据库是否正常化?” 或者“ BCNF中是这样吗?” 正常化经常被忽视,只有学者才有时间享受奢侈品。 但是,了解规范化原则并将其应用于日常数据库设计任务并不是那么复杂,并且可以大大提高DBMS的性能。
在本文中,我们将介绍标准化的概念并简要介绍一下最常见的标准形式。
什么是标准化?
规范化是有效组织数据库中的数据的过程。 规范化过程有两个目标:消除冗余数据(例如,将相同的数据存储在多个表中)并确保数据依赖性有意义(仅将相关数据存储在表中)。 这些都是值得的目标,因为它们减少了数据库消耗的空间量,并确保数据在逻辑上存储。
正常形式
数据库社区制定了一系列确保数据库正常化的指导原则。 这些被称为正常形式,并从一个(归一化的最低形式,被称为第一正常形式或1NF)到五个(第五正常形式或5NF)编号。 在实际应用中,您经常会看到1NF,2NF和3NF以及偶尔的4NF。 第五范式很罕见,本文不讨论。
在我们开始讨论正常形式之前,重要的是要指出它们只是指导性和指导性的。 偶尔,有必要偏离他们以满足实际业务需求。 但是,如果发生变化,评估系统可能产生的任何后果以及可能的不一致性非常重要。 这就是说,我们来探索一下正常的形式。
第一范式(1NF)
第一范式(1NF)为有组织的数据库设定了非常基本的规则:
- 消除同一个表中的重复列。
- 为每组相关数据创建单独的表格,并使用唯一列或一组列( 主键 )标识每行。
第二范式(2NF)
第二范式(2NF)进一步解决了删除重复数据的概念:
- 满足第一范式的所有要求。
- 除去适用于多行表格的数据的子集,并将它们放在不同的表格中。
- 通过使用外键在这些新表和他们的前辈之间建立关系。
第三范式(3NF)
第三范式(3NF)更进一步:
- 满足第二范式的所有要求。
- 删除不依赖主键的列。
博伊斯 - 科德范式(BCNF或3.5NF)
博伊斯 - 科德范式也被称为“三分之一(3.5)正常形式”,增加了一项要求:
- 满足第三范式的所有要求。
- 每个决定因素都必须是候选关键字。
第四范式(4NF)
最后,第四范式(4NF)还有一个额外要求:
- 满足第三范式的所有要求。
- 如果没有多值依赖关系,则关系在4NF中。
请记住,这些规范化指南是累积的。 要使数据库处于2NF中,它必须首先满足1NF数据库的所有条件。
我应该正常化吗?
虽然数据库正常化通常是一个好主意,但这不是绝对的要求。 事实上,有些情况下故意违反正常化规则是一种好的做法。 有关此主题的更多信息,请阅读我应该规范化我的数据库吗?
如果你想确保你的数据库是正常化的,从学习如何把数据库放到第一范式开始 。