8、数据库设计中的反模式与解决方案

数据库设计中的反模式与解决方案

在数据库设计领域,存在一些常见的反模式,它们看似能解决问题,但实际上会带来更多的麻烦。本文将详细介绍多列属性(Multicolumn Attributes)和元数据 Tribbles(Metadata Tribbles)这两种反模式,以及相应的解决方案。

1. 多列属性反模式
1.1 识别多列属性反模式

如果项目的用户界面或文档描述了一个可以分配多个值的属性,但该属性被限制为固定的最大数量的值,这可能表明正在使用多列属性反模式。另外,当听到以下语句时,也可能暗示该反模式的存在:
- “我们需要支持的标签的最大数量是多少?”
- “如何在 SQL 中同时搜索多个列?”

1.2 反模式之间的关联

Jaywalking 和多列属性反模式有一个共同点:它们都是为了存储可能有多个值的属性而提出的解决方案。Jaywalking 反模式与多对多关系有关,而多列属性反模式在本章中涉及更简单的一对多关系。需要注意的是,这两种反模式有时会用于这两种类型的关系。

1.3 反模式的合理使用场景

在某些情况下,属性可能有固定数量的选择,并且这些选择的位置或顺序可能很重要。例如,一个给定的 bug 可能与多个用户账户相关联,但每个关联的性质是独特的。可以在 Bugs 表中定义三个普通列来存储这三个属性。虽然这样做可能会有一些缺点,但在大多数情况下可以接受,因为这些列更可能被单独使用。

1.4 解决方案:创建依赖表

最佳解决方案是创建一个依赖表,其中包含一个用于多值属性的列。将多个值存储在多行中,而不是多个列中。同时,在依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值