sql-我是否应该使用连接表?

qyswt5oh  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(358)

我正在创建一个新的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

谢谢!

niknxzdl

niknxzdl1#

如果一个模型只属于一个品牌,那么你可以把fk-to-brand放在模型表上(你的第二种方法)。第一种方法是连接表,用于多对多关系。

p3rjfoxz

p3rjfoxz2#

根据您到目前为止所说的,我将省略连接表,而在models表中使用普通外键。
但是,如果一个模型可以移动品牌,并且您需要维护当前连接和历史记录,那么当外键更改时,连接表比保留整个模型行的历史记录更有优势。此外,如果存在其他可能与关系“实体”相关联的事物,而不是与模型实体相关联的事物,那么使用连接表可能更有意义。您始终可以在连接表中对modelid进行唯一的约束,以确保同一个模型不会链接到多个品牌。因此,尽管需要连接表来有效地实现多对多关系,但它对于一对多关系(该关系本身具有属性)也很有用。

0yg35tkg

0yg35tkg3#

连接表用于多对多关系,这在这里似乎不太合适。
例如,您不希望启用本田思域和丰田思域的创建。这是一个汽车品牌/型号关系的例子,但应该适合你的品牌/型号关系。

相关问题