SQL 기본키 PRIMARY KEY 와 외래키 FOREIGN KEY 특징 및 설정

기본키 PRIMARY KEY 란?

SQL에서 기본키(Primary Key)는 테이블 내의 각 행을 고유하게 식별하는 역할을 합니다. 기본키는 테이블의 중복된 데이터를 방지하고, 데이터의 무결성을 보장하는 데 중요한 역할을 합니다.

외래키 FOREIGN KEY 란?

외래키(Foreign Key)는 관계형 데이터베이스에서 하나의 테이블의 필드(또는 필드 집합)가 다른 테이블의 기본키를 참조하는데 사용되는 키입니다. 이는 테이블 간의 관계를 설정하고 데이터의 무결성을 유지하는 데 도움이 됩니다.

기본키와 외래키 특징

기본키 (Primary Key)

  1. 고유성 (Uniqueness):
    • 각 행은 기본키 값을 가지며 고유하게 식별됩니다.
    • 중복된 값이 허용되지 않습니다.
  2. NULL 값 금지 (Non-null):
    • 기본키 값은 NULL이 될 수 없습니다.
    • 각 행은 반드시 기본키 값을 가져야 합니다.
  3. 불변성 (Immutability):
    • 기본키 값은 변경할 수 없습니다.
    • 다른 행으로 이동하거나 변경되지 않습니다.
  4. 테이블의 기본 정렬:
    • 물리적으로 테이블을 정렬하는 데 사용될 수 있습니다.

외래키 (Foreign Key)

  1. 참조 무결성 (Referential Integrity):
    • 외래키 값은 참조하는 테이블의 기본키와 관련이 있어야 합니다.
    • 참조된 데이터의 일관성을 유지합니다.
  2. NULL 값 허용:
    • 외래키 값은 NULL일 수 있습니다.
    • 어떤 레코드가 참조 관계를 가질 필요가 없을 때 사용됩니다.
  3. 다 대 일 관계 (Many-to-One Relationship):
    • 하나의 테이블의 외래키 값은 다른 테이블의 여러 행을 참조할 수 있습니다.
    • 다수의 행이 하나의 행을 참조할 수 있도록 합니다.
  4. 제약 조건 설정:
    • 외래키는 제약 조건으로 사용되어 데이터베이스 시스템이 제약 위반을 방지합니다.
    • 참조된 키가 없는 삽입 또는 갱신을 거부합니다.
  5. 다양한 작업에 사용:
    • 테이블 간의 관계 설정 및 데이터의 무결성을 유지합니다.
    • 조인 연산을 통해 연결된 테이블 간의 정보 검색에 사용됩니다.

기본키 (Primary Key) 사용법

기본키(Primary Key)는 데이터베이스 테이블의 각 행을 고유하게 식별하는 데 사용되며, 데이터의 정확성과 무결성을 유지하는 데 중요한 역할을 합니다.

테이블 생성 시 기본키 정의

테이블을 생성할 때, CREATE TABLE 문을 사용하여 기본키를 정의합니다. 기본키는 해당 테이블의 주요 식별자가 되며 다음과 같은 예시로 정의할 수 있습니다.

SQL
CREATE TABLE 사용자 (
    사용자ID INT PRIMARY KEY,
    이름 VARCHAR(50),
    이메일 VARCHAR(100)
);
SQL

AUTO_INCREMENT를 사용한 자동 증가 기능

일반적으로 숫자로 된 기본키는 AUTO_INCREMENT 속성을 사용하여 자동으로 증가하도록 설정합니다. 이렇게 하면 데이터베이스가 새로운 레코드를 삽입할 때 자동으로 기본키 값을 증가시킵니다.

SQL
CREATE TABLE 주문 (
    주문ID INT AUTO_INCREMENT PRIMARY KEY,
    날짜 DATE,
    사용자ID INT
);
SQL

기존 테이블에 ALTER 문을 사용한 기본키 추가

이미 존재하는 테이블에 기본키를 추가하려면 ALTER TABLE 문을 사용할 수 있습니다.

SQL
ALTER TABLE 주문
ADD PRIMARY KEY (주문ID);
SQL

복합 기본키 정의

두 개 이상의 열을 결합하여 복합 기본키를 정의할 수 있습니다.

SQL
CREATE TABLE 주문_상세 (
    주문ID INT,
    상품ID INT,
    PRIMARY KEY (주문ID, 상품ID)
);
SQL

기본키 삭제 및 수정

  • 기존 기본키 삭제
SQL
ALTER TABLE 사용자
DROP PRIMARY KEY;
SQL

  • 기존 기본키 수정
SQL
ALTER TABLE 주문
MODIFY PRIMARY KEY (다른ID);
SQL

기본키 활용

  • 데이터 식별 및 검색:
    • 기본키는 각 레코드를 고유하게 식별하므로 특정 레코드에 접근 및 검색하는 데 사용됩니다.
  • 무결성 유지:
    • 중복된 값이 허용되지 않기 때문에 데이터의 무결성을 보장하고, 잘못된 데이터를 방지합니다.
  • 조인 연산:
    • 다른 테이블과의 관계 설정 시, 기본키는 외래키와 매칭되어 조인 연산에 사용됩니다.
  • 정렬 및 인덱스 생성:
    • 기본키는 데이터를 물리적으로 정렬하거나 인덱스를 생성하는 데 사용됩니다.

외래키 (Foreign Key) 사용법

외래키(Foreign Key)는 데이터베이스에서 두 테이블 간의 관계를 설정하고 연결하는 데 사용되며, 데이터의 일관성과 무결성을 유지하는 데 중요한 역할을 합니다. 외래키를 사용하는 방법에 대해 자세히 설명하겠습니다:

테이블 생성 시 외래키 정의

테이블을 생성할 때, CREATE TABLE 문을 사용하여 외래키를 정의합니다. 외래키는 참조할 테이블과 참조할 열을 명시합니다.

SQL
CREATE TABLE 주문 (
    주문ID INT PRIMARY KEY,
    날짜 DATE,
    사용자ID INT,
    FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID)
);
SQL

기존 테이블에 ALTER 문을 사용한 외래키 추가

이미 존재하는 테이블에 외래키를 추가하려면 ALTER TABLE 문을 사용할 수 있습니다.

SQL
ALTER TABLE 주문
ADD FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID);
SQL

외래키의 제약 조건 설정

외래키는 보통 제약 조건(constraint)으로 사용되어 데이터 무결성을 보장합니다.

SQL
CREATE TABLE 주문 (
    주문ID INT PRIMARY KEY,
    날짜 DATE,
    사용자ID INT,
    FOREIGN KEY (사용자ID) REFERENCES 사용자(사용자ID)
    ON DELETE CASCADE
    ON UPDATE NO ACTION
);
SQL

✔️위의 예시에서 ON DELETE CASCADE는 참조된 키가 삭제될 때 주문 테이블의 해당 행도 삭제되도록 설정한 것입니다.

복합 외래키 정의

두 개 이상의 열을 결합하여 복합 외래키를 정의할 수 있습니다.

SQL
CREATE TABLE 주문_상세 (
    주문ID INT,
    상품ID INT,
    PRIMARY KEY (주문ID, 상품ID),
    FOREIGN KEY (주문ID) REFERENCES 주문(주문ID),
    FOREIGN KEY (상품ID) REFERENCES 상품(상품ID)
);
SQL

외래키 삭제 및 수정

  • DELETE 연산 시의 옵션
    • ON DELETE 옵션을 사용하여 참조된 키가 삭제될 때의 동작을 설정할 수 있습니다. (CASCADE, SET NULL, 등)
SQL
ALTER TABLE 주문
DROP FOREIGN KEY 주문_사용자_fk;
SQL

  • UPDATE 연산 시의 옵션
    • ON UPDATE 옵션을 사용하여 참조된 키가 수정될 때의 동작을 설정할 수 있습니다. (CASCADE, SET NULL, 등)
SQL
ALTER TABLE 주문
DROP FOREIGN KEY 주문_사용자_fk;
SQL

외래키 활용

  • 데이터 무결성 유지:
    • 외래키는 참조된 키가 있는 경우만 데이터를 삽입하거나 갱신할 수 있도록 보장하므로 데이터 무결성을 유지합니다.
  • 관계 설정 및 조인 연산:
    • 다른 테이블과의 관계를 설정하고, 조인 연산을 수행할 때 외래키는 주로 기본키와 매칭되어 사용됩니다.
  • 제약 조건 설정:
    • 외래키 제약 조건을 사용하여 데이터베이스 시스템이 제약 위반을 방지합니다.

외래키를 적절하게 활용하면 데이터베이스의 관계를 잘 구성하고 데이터의 일관성을 유지할 수 있습니다.

결론

기본키와 외래키는 데이터베이스의 핵심 원리로, 데이터의 정확성과 무결성을 보장합니다. 기본키는 각 레코드를 식별하고, 외래키는 테이블 간의 관계를 형성하여 데이터 일관성을 유지합니다. 적절한 활용을 통해 데이터베이스의 구조를 명확하게 설계하고 효율적으로 관리할 수 있습니다.

Leave a Comment