我正在阅读PerformanceDBA对此SQL Question提供的精彩回复。
在PerformanceDBA 'Full Example' 中,表 'user' 和 'sport' 显示每个表的两个 PRIMARY KEY 。 笔记; 如果您仔细查看PerformanceDBA响应,您会注意到主键一由一个字段组成,而主键二由三个字段组成;复合键。
鉴于Microsoft T-SQL Server 不支持每个表多个主键(我不知道 SQL ANSI 也支持),我们如何实现PerformanceDBA提出的概念作为可行的Microsoft T-SQL解决方案(即,遵循Microsoft T -SQL语法)?
PerformanceDBA提供的信息是否有可能只是包含一个错字?他忽略了一个错误?
我最初的想法是(PerformanceDBA对SQL 问题的回答中的表定义,稍作修改以适应 T-SQL):
CREATE TABLE [User] ( -- Typical Identifying Table
[user_name] CHAR(16) NOT NULL, -- Short PK
name_first CHAR(30) NOT NULL, -- Alt Key.1
name_last CHAR(30) NOT NULL, -- Alt Key.2
birth_date DATE NOT NULL , -- Alt Key.3
--Create a unique CONSTRAINT and assign a Foreign Key (
CONSTRAINT User_PK PRIMARY KEY ( [user_name] ),
-- Will this 'do'?
CONSTRAINT User_AK UNIQUE ( name_last, name_first, birth_date ),
CONSTRAINT user_FK -- unique person identification
FOREIGN KEY (name_last, name_first, birth_date)
REFERENCES [Person] ( name_last, name_first, birth_date)
)
感谢您的时间。