为实体存储备用名称并将它们链接到“主”记录以汇总数据的最佳做法是什么?
例如,我有一个公司列表;
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
这似乎是最简单的路线,不需要太多冗余数据。这种方法有什么缺点吗?
答案 0 :(得分:1)
这对我来说似乎是一个很好的解决方案。我想改变的唯一想法是,如果一条记录是它自己的主记录,则保留master null。可能不是一个大问题,但似乎是一个潜在的无限循环陷阱。
答案 1 :(得分:0)
我想我会规范化数据。公司主表和公司名称表结束公司名称表,该表具有公司主表的外键。我也会避免空值,任何基于空值的逻辑都会强制执行外键约束。 null意味着你不知道。