关系数据库模型:数据冗余、索引与规则解析
1. 数据冗余再探讨
数据冗余是数据库设计中一个不可忽视的问题。在之前的认知里,数据冗余会导致数据异常,破坏数据库的有效性。不过,关系数据库可以通过使用表之间共享的公共属性(即外键)来控制数据冗余。
虽然外键对于控制数据冗余至关重要,但它并不能完全消除这个问题,因为外键值可能会多次重复。然而,正确使用外键可以最大限度地减少数据冗余以及破坏性数据异常发生的可能性。
真正判断冗余的标准并非存储给定属性的副本数量,而是消除某个属性是否会消除信息。如果删除一个属性后,原始信息仍可通过关系代数生成,那么包含该属性就是冗余的。从这个角度看,合适的外键尽管在表中多次出现,但显然并非冗余。
在实际的数据库设计中,有时为了让数据库满足关键信息需求,数据冗余水平实际上需要提高。例如,在一个小型发票系统中,涉及到 CUSTOMER(客户)、PRODUCT(产品)、INVOICE(发票)和 LINE(发票行)等表。
| 表名 | 主键 | 外键 |
|---|---|---|
| INVOICE | INV_NUMBER | CUS_CODE |
| LINE | INV_NUMBER + LINE_NUMBER | INV_NUMBER, PROD_CODE |
| CU |
关系数据库核心机制解析
超级会员免费看
订阅专栏 解锁全文
170万+

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



