数据库设计中的反模式与解决方案
在数据库设计中,我们常常会遇到一些反模式,这些反模式可能会导致数据管理的复杂性增加,甚至影响数据的完整性和一致性。本文将深入探讨两种常见的反模式:多态关联(Polymorphic Associations)和多列属性(Multicolumn Attributes),并提供相应的解决方案。
多态关联反模式
多态关联反模式与实体 - 属性 - 值(Entity - Attribute - Value,EAV)反模式有一个相似的特点,即在这两种反模式中,元数据对象的名称都以字符串值的形式存储。在 EAV 中,属性列的名称以字符串形式存储在 attr_name 列中;在多态关联中,父表的名称存储在 issue_type 列中,这有时被称为数据与元数据的混合。
例如,以下是一个 Addresses 表的示例:
CREATE TABLE Addresses (
address_id SERIAL PRIMARY KEY,
parent VARCHAR(20), -- "Users" or "Orders"
parent_id BIGINT UNSIGNED NOT NULL,
address TEXT
);
在这个表中, parent 列是一个多态列,用于指定给定地址的父表是 Users 还是 Orders 。但这种设计存在一些问题,比如一
超级会员免费看
订阅专栏 解锁全文
1万+

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



