【发布时间】:2011-03-29 21:38:01
【问题描述】:
假设我有一个Products 表、ProductsCategory 表和一个Category 表。
ProductsCategory 表有两列:ProductID 和 CategoryID。我应该在两列上使用复合主键还是唯一索引?
此外,如果我使用索引,我可以将其设为唯一索引或键。
【问题讨论】:
标签: sql-server database-design
假设我有一个Products 表、ProductsCategory 表和一个Category 表。
ProductsCategory 表有两列:ProductID 和 CategoryID。我应该在两列上使用复合主键还是唯一索引?
此外,如果我使用索引,我可以将其设为唯一索引或键。
【问题讨论】:
标签: sql-server database-design
也可以使用复合键 - 当您已经拥有复合主键的唯一性语义时,无需添加唯一索引。
【讨论】:
您必须使用 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;
【讨论】: