数据库设计:规范化、反规范化与创建指南
1. 数据库规范化与逻辑建模
数据库规范化是优化数据库设计的重要步骤,其核心目标是最小化数据冗余,避免更新异常。通过去除重复数据,数据库变得更小、更紧凑,减少了对数据存储列的混淆,降低了数据更新的开销。不过,过度规范化可能会导致过多的表关系和小而瘦的表,从而增加数据检索的复杂度和开销。因此,数据库设计是一门艺术,需要设计师把握好规范化的度,有时在规范化后进行适当的反规范化,添加一些冗余数据以提高关键查询的速度,也是明智之举。
在逻辑建模阶段,我们使用“实体”来表示概念上的表,用“属性”表示列数据。构建逻辑模型时,需要将之前收集的信息应用到实体的属性中,并根据情况调整设计。实体的内容应遵循以下三个原则:
- 每个实体都应有唯一标识符 :确保能在每个实体中找到唯一的行,可以通过唯一标识属性或多个属性的组合来实现。若实体中没有能使行唯一的属性组合,SQL Server 提供了“唯一标识符”数据类型,更常见的做法是创建一个整数类型的列属性并将其设置为标识列。
- 仅存储与该实体直接相关的信息 :避免在一个实体中包含过多信息,以免改变实体存在的初衷,降低 OLTP 系统的效率,导致数据混淆。
- 避免重复值或列 :属性数据的重复是对空间和资源的浪费,应将重复的值移到其他地方。
2. 数据库的范式
2.1 第一范式(1NF)
要达到 1NF,需消除数据库中任何重复的信息组,将重复的数据组移到新表中。在示例数据库中,“Customers”和“Shares”表可能违反
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



