问题描述
|
我有兴趣了解两种数据库设计模式的标准名称,如果您是纯粹主义者,则可能是“问题”:
您如何称呼那些情况/非规范化?
我正在为自己使用\\“镜像属性\”和\\\“外键\”,但是我确定没有人会理解我:)。无论如何情况很简单:
1)我们有两个具有“父子”关系的实体,子实体中不仅有外键属性,而且还有父实体的其他“备份”属性。可能是这样的情况,您不仅在地址实体中拥有streetId,而且还拥有streetName来支持街道列表中不存在街道的情况(或更常见的是遗留数据)。
2)子实体包含“外键”,它由两个字段组成:一个标识“父表”,另一个是“父表中的键值”。这意味着首先要解释,然后对其进行过滤,我们知道应该连接哪个表。当然,在dbms级别上不能保持这种关系的一致性,但这仍然是我有时在实践中看到的“父子关系”。
解决方法
1)在规范化的数据库中,列应取决于键,整个键,而仅取决于键。 (所以请帮我,Codd。)您当然可以对某些列进行非规范化以提高效率,但随后您的数据库中就有重复的数据。此重复的数据可能不同步。
2)如果我正确理解您的意思,则“外键”的第一列标识哪个表,而第二列是定义该表中行的实际键。我也看到了这一点。对于域类型表(保险组费率1,保险组费率2等)可能是可以的,但是当与数据表一起使用时,它表示一种多重继承。在没有看到特定实例的情况下,我通常会说,可以用一个基表和一个或多个扩展该基表的其他表来重新定义多重继承。