Mik*_*e81 3 postgresql normalization database-design dimensional-modeling
假设在 Postgres 数据库中,您有一个名为 的表party
,它可以有少于 5 个明确定义的,party_types
例如“人”或“组织”。
您会将存储party_type
在party
表中(例如party_type = 'Person'
)还是对其进行标准化(例如party.party_type = 1
和party_type(id, name) = (1, 'Person')
)?
为什么?
如果您正在实施参与方角色关系模型或其中的一部分,那么将其party_type
作为一个单独的实体非常重要。您可能有更多的表带有到 party_type 的外键(例如,将某些角色的适用性限制为特定的当事人类型[s],或强制执行不同类型当事人之间的关系等)。在这种情况下使用任何形式(包括枚举)的检查约束会隐藏逻辑并使维护更加困难。