SQL - Should I use a junction table or not?

这一生的挚爱 提交于 2019-12-29 06:29:10

问题


I am creating a new SQL Server 2008 database. I have two two tables that are related.

The first table looks like this:

 BRANDS // table name
 BrandID // pk
 BrandName // varchar

The second table looks like this:

 MODELS // table name
 ModelID // pk
 ModelDescription // varchar

Every brand will have at least one model and every model will belong to only one brand.

The question is, should I create a junction table like this

 BRANDS_MODELS // table name
 RecordID // pk
 BrandID
 ModelID

Or should I modify the MODELS table to include the BrandID like this

 MODELS // table name
 BrandID // 
 ModelID // pk
 ModelDescription // varchar

Thanks!


回答1:


If a model belongs to only one brand then you can put the FK to brand on the model table (your second approach). The first way, with the junction table, is for a many-to-many relation.




回答2:


Based on what you've said so far, I would leave out the junction table and use an ordinary foreign key in the MODELS table.

But if a model could move brands and you needed to maintain a current junction and history, a junction table has advantages over keeping history of the entire MODELS row when just a foreign key changes. Also if other things exist which might be associated with the relationship "entity" more than the MODEL entity it might make more sense to have a junction table. You can always make a unique constraint on ModelID in the junction table to ensure that the same model is not linked to multiple brands. So although a junction table is required to effectively implement a many-to-many relationship, it can also be useful for one-to-many relationships where that relationship itself has attributes.




回答3:


Junction tables are used for many-to-many relationships which does not seem to be a good fit here.

For example, you would not want to enable the creation of a Honda Civic and a Toyota Civic. That's an example of car's make/model relationship but should fit your brand/model relationship.



来源:https://stackoverflow.com/questions/7113295/sql-should-i-use-a-junction-table-or-not

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!