[TIL 58일차] 외래키(Foreign key)

이건·2024년 8월 16일

외래 키(Foreign Key)는 관계형 데이터베이스에서 한 테이블의 특정 열이 다른 테이블의 기본 키(Primary Key)를 참조하도록 설정한 제약 조건이다. 외래 키는 두 테이블 간의 관계를 정의하고, 데이터의 무결성을 유지하는 데 중요한 역할을 한다.

외래 키의 주요 기능

  1. 데이터 무결성 보장: 외래 키는 참조된 테이블에 존재하는 값만을 허용하므로, 잘못된 데이터 입력을 방지한다. 예를 들어, 주문 테이블의 고객 ID가 고객 테이블에 존재하지 않는 경우, 해당 주문을 저장할 수 없다.

  2. 관계 정의: 외래 키는 두 테이블 간의 관계를 명확하게 정의한다. 예를 들어, 고객 테이블과 주문 테이블 간의 관계에서는 고객이 여러 개의 주문을 할 수 있지만, 각 주문은 하나의 고객에만 속한다.

  3. Cascade 동작: 외래 키를 설정할 때, 참조된 데이터가 삭제되거나 업데이트될 때의 동작을 정의할 수 있다. 예를 들어, 부모 테이블의 데이터가 삭제될 경우 자식 테이블의 관련 데이터도 함께 삭제되도록 설정할 수 있다.

외래 키 사용 예시

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100)
);

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    OrderDate DATE,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

위의 예에서 Orders 테이블의 CustomerID 열은 Customers 테이블의 CustomerID를 참조하는 외래 키다. 이로 인해 Orders 테이블에 입력되는 CustomerID는 반드시 Customers 테이블에 존재해야 한다.

요약

외래 키는 데이터베이스의 관계를 명확히 하고, 데이터의 무결성을 유지하는 데 중요한 역할을 한다. 이를 통해 데이터베이스의 구조를 더욱 체계적이고 효율적으로 관리할 수 있다.

A라는 사람은 핸드폰에 3개의 정보만 저장할 수 있다고 가정해보자 B, C, D에 해당하는 사람들의 이름, 나이, 성별, 직업을 모두 저장해야 한다면 3*4 = 12로 3개보다 한참 많다.

A는 그래서 핸드폰 번호만 저장한 다음 전화를 통해 B, C, D에게 연락해서 정보를 알아내려고 한다.

전화 번호는 고유하며 중복이 되지 않는다. 따라서 전화 번호는 B, C, D의 Primary Key이다.
또한 전화 번호를 통해 A는 B, C, D의 정보에 접근할 수 있다. 이런 전화 번호의 역할을 하는 것을 Foreign Key라 한다.

이때 Foreign Key를 통해 1 : N의 관계가 되며 이때 연관 관계의 주인은 N쪽에 있다.(외래키는 무조건 N쪽에 있다.)

설계방식은 이렇고 실제로 사용할 때는 외래키와 JOIN을 통해 데이터를 불러와 사용하면 된다.

0개의 댓글