我正在使用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
Movie_ID
Category_ID
[并且只保留它没有主键或身份表]?
最佳答案
我将使用第二个联结表:
MOVIE_CATEGORY_JUNCTION
Movie_ID
Category_ID
主键将是两列的组合。您还将在
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 with Demo。
使用这两个字段作为
PRIMARY KEY
可以防止将重复的影片/类别组合添加到表中。关于sql - MS SQL与联结表创建多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14676342/