我正在使用 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 - MS SQL 使用连接表创建多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676342/