我正在创建一个新的SQL Server 2008数据库。我有两个相关的表。
第一个表格如下:
BRANDS // table name
BrandID // pk
BrandName // varchar
第二个表格如下:
MODELS // table name
ModelID // pk
ModelDescription // varchar
每个品牌至少有一个型号,每个型号只属于一个品牌。
问题是,我应该像这样创建一个联结表吗
BRANDS_MODELS // table name
RecordID // pk
BrandID
ModelID
或者我应该修改MODELS表以包含像这样的BrandID
MODELS // table name
BrandID //
ModelID // pk
ModelDescription // varchar
谢谢!
答案 0 :(得分:10)
如果模型只属于一个品牌,那么您可以将FK放在模型表(第二种方法)上。使用联结表的第一种方式是多对多关系。
答案 1 :(得分:3)
根据您到目前为止所说的内容,我将省略联结表并在MODELS表中使用普通的外键。
但是,如果模型可以移动品牌并且您需要维护当前的交汇点和历史记录,那么只有外键更改时,联结表才能保留整个MODELS行的历史记录。此外,如果存在可能与关系“实体”相关联的其他事物而不是MODEL实体,则可能更有意义地建立联结表。您始终可以在联结表中对ModelID进行唯一约束,以确保相同模型未链接到多个品牌。因此,虽然需要联结表来有效地实现多对多关系,但它对于一对多关系本身也具有属性也很有用。
答案 2 :(得分:1)
连接表用于多对多关系,这似乎不太合适。
例如,您不希望创建本田思域和丰田思域。这是汽车制造/车型关系的一个例子,但应该适合您的品牌/车型关系。