>데이터 베이스 >MySQL 튜토리얼 >기본 키가 아닌 열에 외래 키를 언제 사용해야 합니까?

기본 키가 아닌 열에 외래 키를 언제 사용해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-15 10:56:44200검색

When Should You Use a Foreign Key to a Non-Primary Key Column?

외래 키 제약 조건 및 기본 키가 아닌 열

관계형 데이터베이스는 외래 키 제약 조건을 활용하여 테이블 간의 참조 무결성을 유지합니다. 외래 키는 일반적으로 기본 키를 참조하지만 기본 키가 아닌 열을 참조해야 하는 경우도 있습니다.

시나리오 일러스트

두 개의 테이블 table1table2을 살펴보겠습니다.

<code class="language-sql">CREATE TABLE table1 (
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   SomeData VARCHAR(100) NOT NULL
);

CREATE TABLE table2 (
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   AnotherID INT NOT NULL,
   MoreData VARCHAR(30) NOT NULL,

   CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID)
);</code>

여기서는 table2의 기본 키가 아닌 table1 열을 사용하여 AnotherIDtable1 사이에 외래 키 관계를 원합니다.

기본이 아닌 키에 대한 외래 키 설정

빈도는 낮지만 기본 키가 아닌 열을 참조하는 외래 키를 생성하는 것이 가능합니다. 그러나 기본 키가 아닌 열에는 고유 제약 조건을 적용해야 합니다.

<code class="language-sql">ALTER TABLE table1 ADD CONSTRAINT UQ_AnotherID UNIQUE (AnotherID);</code>

이 고유 제약 조건은 AnotherID 내에서 table1 값의 고유성을 보장하여 외래 키 대상으로 사용할 수 있도록 합니다.

권장 대안

이상적으로는 참조 무결성을 강화하기 위해 외래 키가 기본 키를 참조해야 합니다. 가능하다면 table1ID 열을 table2의 외래 키 대상으로 활용하도록 데이터베이스 스키마를 다시 설계하세요. 이렇게 하면 기본 키가 아닌 열에 대한 고유 제약 조건을 관리할 필요가 없습니다.

위 내용은 기본 키가 아닌 열에 외래 키를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.