[MySQL] 외래 키
외래키(Foreign Key)의 기본 개념
외래키란 무엇인가?
외래키(Foreign Key)는 한 테이블의 열이 다른 테이블의 행을 참조하는 데 사용되는 키입니다. 이는 두 테이블 간의 관계를 정립하고, 참조되는 테이블의 기본 키(Primary Key) 또는 유니크 키(Unique Key)를 참조합니다.
외래키의 역할과 중요성
외래키는 데이터의 일관성과 무결성을 유지하는 데 중요한 역할을 합니다. 외래키를 사용함으로써 관계형 데이터베이스에서 테이블 간의 관계를 정의할 수 있고, 잘못된 데이터가 입력되는 것을 방지할 수 있습니다.
외래키와 참조 무결성
참조 무결성은 데이터베이스에서 매우 중요한 개념으로, 외래키 제약 조건을 통해 강제됩니다. 이는 외래키가 참조하는 테이블의 기본 키와 일치하는 값을 가져야 하며, 참조하는 데이터가 삭제되거나 변경될 경우 해당 변경이 외래키에도 적절히 반영되어야 함을 의미합니다.
외래키 생성하기
CREATE TABLE 문을 사용하여 외래키 생성
CREATE TABLE
문을 사용하여 테이블을 생성할 때 외래키를 정의할 수 있습니다. 외래키는 다음과 같이 FOREIGN KEY
키워드를 사용하여 생성됩니다:
CREATE TABLE Orders (
OrderID INT AUTO_INCREMENT,
CustomerID INT,
PRIMARY KEY (OrderID),
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
ALTER TABLE 문을 사용하여 기존 테이블에 외래키 추가
기존 테이블에 외래키를 추가할 때는 ALTER TABLE
문을 사용합니다. 다음은 기존 테이블에 외래키를 추가하는 예제입니다:
ALTER TABLE Orders
ADD FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);
외래키 생성 시 고려사항
외래키를 생성할 때는 참조 무결성, 성능 영향, 그리고 삭제 및 업데이트 시의 동작 등을 고려해야 합니다. 이러한 요소들은 데이터의 일관성 유지 및 데이터베이스의 성능에 직접적인 영향을 미칩니다.
외래키 제약 조건
ON DELETE 제약 조건
ON DELETE
제약 조건은 참조된 행이 삭제될 때 외래키를 어떻게 처리할지 정의합니다. CASCADE
, SET NULL
, NO ACTION
, RESTRICT
등의 옵션이 있습니다.
ON UPDATE 제약 조건
ON UPDATE
제약 조건은 참조된 행의 키 값이 변경될 때 외래키의 동작을 정의합니다. 이 역시 CASCADE
, SET NULL
, NO ACTION
, RESTRICT
등의 옵션을 사용할 수 있습니다.
제약 조건의 옵션 (CASCADE, SET NULL 등)
CASCADE
: 참조된 행이 삭제되거나 업데이트될 때, 외래키를 가진 행도 같이 삭제되거나 업데이트됩니다.SET NULL
: 참조된 행이 삭제되거나 업데이트될 때, 외래키를 가진 행의 해당 필드를NULL
로 설정합니다. 이 옵션을 사용하려면 외래키 칼럼이NULL
을 허용하도록 정의되어 있어야 합니다.SET NULL
옵션은 참조 무결성을 유지하면서도 참조된 데이터가 변경되었을 때 외래 키 값을NULL
로 설정하여 연결을 끊는 유연한 방법을 제공합니다.NO ACTION
: 참조된 행에 대한 삭제 또는 업데이트가 시도될 때, 해당 행이 외래키에 의해 참조되고 있으면 그 작업을 거부합니다. 이는 데이터베이스가 참조 무결성을 강제로 유지하도록 하는 엄격한 방법입니다.RESTRICT
:NO ACTION
과 유사하게, 참조된 행에 대한 삭제 또는 업데이트가 시도될 때 해당 행이 외래키에 의해 참조되고 있으면 그 작업을 거부합니다.RESTRICT
는 또한 외래키 제약 조건이 다른 테이블과의 관계에서 동일하게 적용됨을 보장합니다.SET DEFAULT
: 참조된 행이 삭제되거나 업데이트될 때, 외래키를 가진 행의 해당 필드를 개발자가 지정한 기본값으로 설정합니다. 이 옵션을 사용하기 위해서는 외래키 칼럼에 기본값이 명시적으로 정의되어 있어야 합니다.SET DEFAULT
옵션은SET NULL
과 유사하지만, 외래 키 값을NULL
로 설정하는 대신 특정한 기본값으로 설정한다는 점에서 차이가 있습니다.
외래키를 사용한 데이터 무결성 유지
데이터 무결성과 외래키
외래키(Foreign Key)는 데이터 무결성을 유지하는 중요한 데이터베이스 기능입니다. 데이터 무결성이란 데이터의 정확성, 일관성, 그리고 신뢰성을 유지하는 것을 의미합니다. 외래키를 사용함으로써 관계형 데이터베이스에서 테이블 간의 관계를 정의하고, 참조되는 데이터가 항상 존재하도록 보장합니다.
외래키를 통한 데이터 관계 관리
외래키를 통해 데이터베이스 내 테이블 간의 관계를 명확히 정의할 수 있습니다. 이는 관계형 데이터 모델링의 핵심 요소로, 테이블 간의 관계를 통해 데이터의 구조를 이해하고, 데이터 간의 연관성을 관리하는 데 도움을 줍니다.
외래키와 트랜잭션
외래키 제약 조건은 트랜잭션 동안에도 유지되어야 합니다. 트랜잭션은 여러 데이터베이스 연산을 하나의 작업 단위로 묶는 것을 의미합니다. 외래키는 트랜잭션 동안 참조 무결성을 보장함으로써, 데이터베이스의 일관성과 정확성을 유지하는 데 기여합니다.