【发布时间】:2010-08-22 10:01:31
【问题描述】:
观察下表模型:
CREATE TABLE [site].[Permissions] (
[ID] INT REFERENCES [site].[Accounts]( [ID] ) NOT NULL,
[Type] SMALLINT NOT NULL,
[Value] INT NULL
);
site.Accounts->site.Permissions 是一对多的关系,因此由于 PK 强加的唯一性,“ID”不能作为主键。
这些行是使用WHERE [ID] = ? 子句选择的,因此添加一个虚假的 IDENTITY 列并使其成为 PK 不会以额外的磁盘空间为代价产生任何好处。
据我了解,目标平台 - SQL Server (2008) - 不支持复合 PK。这些加起来就是我的问题:如果没有使用主键,那么有什么问题吗?或者还有什么更正确的吗?
【问题讨论】:
标签: sql-server tsql database-design