我正在创建一个新的sql server 2008数据库。我有两张相关的table。
第一个表如下所示:
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
谢谢!
3条答案
按热度按时间niknxzdl1#
如果一个模型只属于一个品牌,那么你可以把fk-to-brand放在模型表上(你的第二种方法)。第一种方法是连接表,用于多对多关系。
p3rjfoxz2#
根据您到目前为止所说的,我将省略连接表,而在models表中使用普通外键。
但是,如果一个模型可以移动品牌,并且您需要维护当前连接和历史记录,那么当外键更改时,连接表比保留整个模型行的历史记录更有优势。此外,如果存在其他可能与关系“实体”相关联的事物,而不是与模型实体相关联的事物,那么使用连接表可能更有意义。您始终可以在连接表中对modelid进行唯一的约束,以确保同一个模型不会链接到多个品牌。因此,尽管需要连接表来有效地实现多对多关系,但它对于一对多关系(该关系本身具有属性)也很有用。
0yg35tkg3#
连接表用于多对多关系,这在这里似乎不太合适。
例如,您不希望启用本田思域和丰田思域的创建。这是一个汽车品牌/型号关系的例子,但应该适合你的品牌/型号关系。