30、数据库设计:反规范化与基础规则

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

数据库设计:反规范化与基础规则

1. 反规范化的考量

在数据库设计中,我们不能过度沉迷于数据的规范化。虽然规范化是数据库设计的重要原则,但有时过度规范化可能并非最佳选择。以下是一些需要考虑反规范化的情况:
- 计算列与派生数据 :如果声明一个计算列或存储一些派生数据能让报表运行更高效,那么可以考虑添加。但要权衡利弊,比如“汇总”数据与源数据不同步的风险,以及如何发现和修复这种不同步。
- 减少连接表数量 :在表中添加一个或多个反规范化列,有时可以消除或显著减少检索信息所需的连接表数量。例如,在一个常用基表中添加一列,可将九表连接减少到三表连接,查询时间缩短约 90%。
- 历史数据处理 :对于基本不变且仅用于报表的历史数据,数据完整性问题的考量可以降低。将数据“扁平化”(反规范化)到几个表中,能提高处理速度。
- 方便用户自定义报表 :随着用户对工具的使用越来越熟练,越来越多的用户希望直接访问数据库进行自定义报表。高度规范化的数据库对他们来说可能像迷宫一样难以使用,反规范化可以让他们的工作更轻松。

不过,如果不确定是否要反规范化,还是优先选择规范化。规范化有助于保证数据完整性,在事务环境中也能提供更好的性能。

2. 超越规范化的设计规则

2.1 保持简单

在数据库设计中,我们会遇到各种新奇的想法,但并非所有想法都是好的。不要盲目遵循“因为我们一直这样做”的方法,但也要认识到经过实践检验的方法往往是有效的。SQL Server 2012 提供了很

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值