我正在使用Microsoft SQL Server Management Studio,并且在创建联结表时是否应该为联结表创建ID列,如果需要,还应将其设为主键和标识列吗?还是为我要加入的多对多关系表保留2列?
例如,如果这将是多对多表:
MOVIE Movie_ID Name etc... CATEGORY Category_ID Name etc...
我应该制作联结表吗:
MOVIE_CATEGORY_JUNCTION Movie_ID Category_ID Movie_Category_Junction_ID
[并将Movie_Category_Junction_ID我的主键用作身份列]?
Movie_Category_Junction_ID
或者:
MOVIE_CATEGORY_JUNCTION Movie_ID Category_ID
[并且只保留它没有主键或身份表]?
我将使用第二个联结表:
主键将是两列的组合。您还将在Movie与andCategory表的每一列中都有一个外键。
Movie
Category
联结表看起来类似于:
create table movie_category_junction ( movie_id int, category_id int, CONSTRAINT movie_cat_pk PRIMARY KEY (movie_id, category_id), CONSTRAINT FK_movie FOREIGN KEY (movie_id) REFERENCES movie (movie_id), CONSTRAINT FK_category FOREIGN KEY (category_id) REFERENCES category (category_id) );
请参阅带有演示的SQL Fiddle。
将这两个字段用作PRIMARY KEY可以防止将重复的影片/类别组合添加到表中。
PRIMARY KEY