我的中间表是否应包含复合PK或唯一索引

时间:2011-03-29 21:38:02

标签: sql-server database-design

假设我有一个Products表,ProductsCategory表和一个Category表。

ProductsCategory表格有两列:ProductIDCategoryID。我应该在两列上使用复合主键还是唯一索引?

此外,如果我使用索引,我可以将其作为唯一索引或密钥。

2 个答案:

答案 0 :(得分:8)

也可以使用复合键 - 当您已经拥有复合主键的唯一性语义时,无需添加唯一索引。

答案 1 :(得分:0)

您必须使用on delete cascade选项创建双向外键。 因为如果删除其中一个类别,则必须删除ProductCategory上的关系行。

我的意思是你可以这样使用:

alter table ProductsCategory add constraint ForeignKey1 foreign key (ProductId) references Products (ID) ON DELETE CASCADE;
alter table ProductsCategory add constraint ForeignKey2 foreign key (CategoryId) references Category (ID) ON DELETE CASCADE;