具有主引用的“备用”名称的数据库设计

时间:2012-03-12 15:49:09

标签: database-design

为实体存储备用名称并将它们链接到“主”记录以汇总数据的最佳做法是什么?

例如,我有一个公司列表;

id name
1  Orange Kid Industries
2  Apple Kid Inc.
5  O.K.

公司5 O.K.1 Orange Kid Industries的替代名称。这些公司需要谨慎存储,以便如果儿童记录需要与5而不是1,(例如,如果公司名称发生变化,则存储历史数据)可以。

我需要将5 O.K.绑定回1 Orange Kid Industries作为“主”记录,因此,当查看1 Orange Kid Industries的所有孩子时,我会看到所有1和5的孩子合并。< / p>

我倾向于所有记录的必需主ID。如果用户创建了新公司6 Moldy Orange Kid Industries,则可以为其指定主ID为1,以表明这只是1 Orange Kid Industries的另一个名称。

id name                        master
1  Orange Kid Industries       1
2  Apple Kid Inc.              2
5  O.K.                        1
6  Moldy Orange Kid Industries 1

这似乎是最简单的路线,不需要太多冗余数据。这种方法有什么缺点吗?

2 个答案:

答案 0 :(得分:1)

这对我来说似乎是一个很好的解决方案。我想改变的唯一想法是,如果一条记录是它自己的主记录,则保留master null。可能不是一个大问题,但似乎是一个潜在的无限循环陷阱。

答案 1 :(得分:0)

我想我会规范化数据。公司主表和公司名称表结束公司名称表,该表具有公司主表的外键。我也会避免空值,任何基于空值的逻辑都会强制执行外键约束。 null意味着你不知道。