数据库设计 - 如何构建具有多个父项的子项

时间:2014-04-26 01:43:24

标签: sql-server database-design

给定一个由北方和南方组成的地区的父表,以及与该地区相关的州的子表,假设加利福尼亚州既是北部地区和南部地区的成员。什么是表达这种关系的最佳方式?

我最初的想法是表示交叉引用的第3个表。例如:

Table_Region
ID     Value
1      North
2      South

Table_State
ID     Value
1      California

Table_Xref
Region_ID    State_ID
1            1
2            1

创建第3个表只是为了表示交叉引用似乎是浪费,但它允许状态表只包含每个状态的唯一值。如果我将区域ID添加到状态表,我将不得不重复加利福尼亚状态表中的值,因为它属于两个区域。

1 个答案:

答案 0 :(得分:0)

正如评论中所说,这是设计多对多关系的正常方式。

如果您只有2个(或4个)区域,则可以在Region中避免将Table_Xref表格和商店区域作为enumerated type,而无需为区域设置单独的表格。或者只是将其存储为您的应用/查询占区域代码的int。