1

我有一组带有孩子的孩子的桌子,如下所示:

作为父(一对多)的客户端(PK ClientID)

属性(PK PropertyID,FK ClientID),它是父(一对多)到

属性详细信息(PK PropDetailID、FK PropertyID)和案例(PK CaseID、FK PropertyID)。

是否应该进一步向下重复父表的外键?也就是说,我的表格应该是这样的:

客户(PK ClientID)

属性(PK PropertyID、FK 客户 ID)

PropertyDetail(PK PropDetailID、FK PropertyID、FK 客户端 ID)

案例(PK CaseID、FK PropertyID、FK ClientID)

反而?如果两个设置都没有标准化,那么标准化的方法是什么?

4

3 回答 3

1

不,不应重复外键,因为您可以通过简单的连接访问此信息。将它添加到孙子会增加冗余,当两者不同步时会出现问题。你的第一个设计看起来比你的第二个更好。

根据该词的含义property,您可能正在使用实体属性值(EAV) 模型来存储客户端属性。在某些情况下,EAV 模型是合适的,但通常您应该尽量避免它。如果可能,请尝试使用固定模式。

进一步阅读:

于 2010-09-17T19:42:34.607 回答
0

您不需要同时拥有 PropertyDetail/Case 的外键。这些可以导航到。

于 2010-09-17T19:42:10.090 回答
0

无需进一步重复外键——您可以通过查看属性的 ClientID 来确定属性详细信息的 ClientID。

您需要的所有信息都可以通过简单的连接来确定。

于 2010-09-17T19:43:01.150 回答