8、数据库设计:规范化、反规范化与创建指南

数据库设计:规范化、反规范化与创建指南

1. 数据库规范化与逻辑建模

数据库规范化是优化数据库设计的重要步骤,其核心目标是最小化数据冗余,避免更新异常。通过去除重复数据,数据库变得更小、更紧凑,减少了对数据存储列的混淆,降低了数据更新的开销。不过,过度规范化可能会导致过多的表关系和小而瘦的表,从而增加数据检索的复杂度和开销。因此,数据库设计是一门艺术,需要设计师把握好规范化的度,有时在规范化后进行适当的反规范化,添加一些冗余数据以提高关键查询的速度,也是明智之举。

在逻辑建模阶段,我们使用“实体”来表示概念上的表,用“属性”表示列数据。构建逻辑模型时,需要将之前收集的信息应用到实体的属性中,并根据情况调整设计。实体的内容应遵循以下三个原则:
- 每个实体都应有唯一标识符 :确保能在每个实体中找到唯一的行,可以通过唯一标识属性或多个属性的组合来实现。若实体中没有能使行唯一的属性组合,SQL Server 提供了“唯一标识符”数据类型,更常见的做法是创建一个整数类型的列属性并将其设置为标识列。
- 仅存储与该实体直接相关的信息 :避免在一个实体中包含过多信息,以免改变实体存在的初衷,降低 OLTP 系统的效率,导致数据混淆。
- 避免重复值或列 :属性数据的重复是对空间和资源的浪费,应将重复的值移到其他地方。

2. 数据库的范式

2.1 第一范式(1NF)

要达到 1NF,需消除数据库中任何重复的信息组,将重复的数据组移到新表中。在示例数据库中,“Customers”和“Shares”表可能违反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值