2011-04-14 72 views
0

我很感兴趣,要知道两个数据库的设计模式标准名称,或者如果你是纯粹主义者可能是“问题”:反规范化模式的“标准名称”是什么?

你将如何调用这些情况/ denormalisations? 我为自己使用“镜像属性”和“轻弹外键”,但我相信没有人会理解我:)。无论如何,情况很简单:

1)在“父子”关系中有两个实体,而在子实体中,不仅有外键属性,还有父实体的一些其他“备份”属性。这可能是因为您不仅在地址实体中设置了街道,而且还设置了街道名称以支持您的街道列表中不存在街道(或传统数据更常见)的情况。

2)子实体包含由两个字段组成的“外键”:一个标识“父表”,一个标识“父表中的键值”。这意味着首先进行解释,对其进行过滤,我们知道哪个表应该加入。当然,这种关系的一致性在dbms级别上不会保持,但这仍然是我在实践中看到的“亲子关系”。

回答

1

1)在规范化的数据库中,列应该依赖于键,整个键以及除键外的所有内容。 (所以请帮助我Codd。)您可以确定某些列的效率,但您的数据库中存在重复的数据。这些重复的数据可能会不同步。 2)如果我理解你说的正确,你的“外键”的第一列标识哪个表,而第二列是定义该表中的行的实际键。我也看到了这一点。对于域类型表(保险组费率1,保险组费率2等),这可能是正确的,但是当与数据表一起使用时,表示一种多重继承。在没有看到特定实例的情况下,通常我会说多重继承可以用一个基表和一个或多个扩展基表的附加表来重新定义。

+0

那么这种类型的设计决策是否存在常见的“名称”? – 2011-04-14 19:52:58

+0

首先可以命名为“重复数据”,但是这个“名称”没有显示“背后的原因”(提供无法使用父表的实体属性提供的'ad hoc'属性,因为该实体未找到)。但第二:“多继承FK”在谷歌工作完美:)尊重和谢谢。 – 2011-04-14 20:06:07