什么是规范化?
数据规范化是将信息组织到关系型数据库中以减少冗余的过程。数据规范化确保数据库中的表尽可能高效地运行,消除歧义,使每个表都服务于单一目的。
从非规范化数据库迁移到规范化数据库时,您可能需要拆分现有表以创建更多更小的表。这些新表将具有更窄的焦点,并通过实体键和外键链接到其他表。规范化还带来额外的好处,即减少您的整体数据库大小并简化数据库维护,因为您不再在多个位置存储相同的信息。
数据规范化示例
规范化过程根据相互关联的规则进行,这些规则被称为范式。第一范式(1NF)规定字段不应在单个单元格中存储多个值,并且表中每个字段都应是唯一的。示例如下:
非规范化表
产品ID | 产品名称 | 产品颜色1 | 产品颜色2 |
---|---|---|---|
P001 | 针织开衫 | 粉色 | 栗色 |
P002 | 靴型牛仔裤 | 海军蓝 | |
P003 | 亚麻马甲 | 驼色 | 米白色 |
P004 | 跑鞋 | 橙色 |
您会注意到我们有两个包含相似信息(关于产品颜色)的字段。为了使此表符合第一范式(1NF),我们需要将此表拆分为两个可以连接在一起的独立表。
规范化产品名称表
产品ID | 产品名称 |
---|---|
P001 | 针织西装外套 |
P002 | 靴型牛仔裤 |
P003 | 亚麻马甲 |
P004 | 跑鞋 |
规范化产品颜色表
产品ID | 产品颜色 |
---|---|
P001 | 粉色 |
P001 | 栗色 |
P002 | 海军蓝 |
P003 | 驼色 |
P003 | 米白色 |
P004 | 橙色 |
请查看我们的学习文章,了解第二范式(2NF)和第三范式(3NF)的示例。虽然存在这三种范式之外的范式,但它们的使用大多是理论性的,前三种对于大多数实际数据库需求来说已足够。