2012-09-05 188 views

回答

6

這不是所有關係型數據庫管理系統的情況。 SQL Server(2008/R2)允許在非空列上使用外鍵,這些列是唯一鍵約束或唯一索引(即候選鍵甚至不需要是聚簇索引)。例如:

CREATE TABLE Parent 
(
    ParentUnique1 INT NOT NULL, 
    ParentUnique2 INT NOT NULL, 
    Name NVARCHAR(50) NOT NULL 
); 
-- Some arbitrary PK 
ALTER TABLE Parent ADD CONSTRAINT PK_Parent PRIMARY KEY(Name); 
-- Unique Key Constraint 
ALTER TABLE Parent ADD CONSTRAINT U_Parent UNIQUE(ParentUnique1); 
-- Unique Index (NonClustered) 
CREATE UNIQUE INDEX IX_Parent ON Parent(ParentUnique2); 

CREATE TABLE Child1 
(
    ChildID INT NOT NULL, 
    ParentID INT NOT NULL, 
    CONSTRAINT FK_Child1Parent FOREIGN KEY(ParentID) REFERENCES Parent(ParentUnique1) 
); 

CREATE TABLE Child2 
(
    ChildID INT NOT NULL, 
    ParentID INT NOT NULL, 
    CONSTRAINT FK_Child2Parent FOREIGN KEY(ParentID) REFERENCES Parent(ParentUnique2) 
); 
+2

而且它也不符合SQL標準。 –