3
SQL에서 외래 키는 기본 키만 참조합니다. 클러스터되지 않은 고유 한 인덱스가없는 고유 한 열을 참조 할 수없는 이유는 무엇입니까?외래 키가 기본 키와 관련이 있어야하는 이유는 무엇입니까?
SQL에서 외래 키는 기본 키만 참조합니다. 클러스터되지 않은 고유 한 인덱스가없는 고유 한 열을 참조 할 수없는 이유는 무엇입니까?외래 키가 기본 키와 관련이 있어야하는 이유는 무엇입니까?
모든 RDBMS에서 해당되는 것은 아닙니다. SQL Server (2008/R2)은 고유 키 제약 조건 또는 UNIQUE 인덱스 (즉, 후보 키가 클러스터 인덱스 일 필요조차 없음) 인 null이 아닌 열에 외래 키를 허용합니다. 예 :
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)
);
그리고 SQL 표준도 마찬가지입니다. –
왜 필요합니까? – smilledge
또는 다른 방법. 제한해야하는 이유는 무엇입니까? – Rohit