본문 바로가기
서버구축 (WEB,DB)

데이터베이스 키 종류와 활용: 데이터 무결성과 관계 설계의 핵심

by 날으는물고기 2025. 1. 4.

데이터베이스 키 종류와 활용: 데이터 무결성과 관계 설계의 핵심

데이터베이스에서 사용하는 주요 키에는 프라이머리 키(Primary Key), 외래 키(Foreign Key), 유니크 키(Unique Key), 슈퍼 키(Super Key), 대체 키(Alternate Key), 그리고 복합 키(Composite Key) 등이 있습니다. 각각의 키는 데이터 무결성 유지와 참조 관계 형성 등의 용도로 사용되며, 각 키의 목적과 예시입니다.

1. 프라이머리 키 (Primary Key)

프라이머리 키는 데이터베이스 테이블에서 각 레코드를 고유하게 식별할 수 있는 키입니다. 한 테이블에 하나의 프라이머리 키만 존재할 수 있으며, 널 값을 가질 수 없습니다.

  • 용도: 각 행을 유일하게 식별하여 데이터의 중복을 방지하고 검색 시 특정 레코드를 빠르게 찾을 수 있도록 합니다.
  • 예시: 직원 테이블(Employees)에서 직원 ID(employee_id)를 프라이머리 키로 설정하여 각 직원의 정보를 고유하게 식별합니다.
CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    department VARCHAR(50),
    salary DECIMAL(10, 2)
);

2. 외래 키 (Foreign Key)

외래 키는 다른 테이블의 프라이머리 키를 참조하여 두 테이블 간의 관계를 정의하는 키입니다. 이로 인해 참조 무결성이 유지되며, 외래 키는 여러 개 존재할 수 있습니다.

  • 용도: 두 테이블 간의 관계를 정의하고 데이터의 무결성을 유지하여, 참조된 데이터가 삭제되거나 변경되는 것을 방지합니다.
  • 예시: Employees 테이블의 department_idDepartments 테이블의 department_id를 참조하여 각 직원이 속한 부서를 나타내도록 설정할 수 있습니다.
CREATE TABLE Departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(50)
);

CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    department_id INT,
    salary DECIMAL(10, 2),
    FOREIGN KEY (department_id) REFERENCES Departments(department_id)
);

3. 유니크 키 (Unique Key)

유니크 키는 프라이머리 키와 유사하게 각 행을 고유하게 식별하지만, 한 테이블에 여러 개의 유니크 키를 둘 수 있으며 널 값을 허용합니다.

  • 용도: 특정 열의 값이 중복되지 않도록 하여 데이터 무결성을 유지합니다.
  • 예시: Employees 테이블에서 직원의 이메일(email)에 대해 유니크 키를 설정하여 이메일이 중복되지 않도록 할 수 있습니다.
CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE,
    department_id INT,
    salary DECIMAL(10, 2)
);

4. 슈퍼 키 (Super Key)

슈퍼 키는 테이블 내에서 각 레코드를 고유하게 식별할 수 있는 하나 이상의 열로 구성된 키입니다. 프라이머리 키와 유니크 키 모두 슈퍼 키의 일종입니다.

  • 용도: 각 행을 고유하게 식별하는 데 사용할 수 있는 키입니다.
  • 예시: employee_id, (employee_id, name), (employee_id, department_id) 등은 모두 슈퍼 키가 될 수 있습니다.

5. 대체 키 (Alternate Key)

대체 키는 프라이머리 키로 선택되지 않은 슈퍼 키입니다. 즉, 고유한 속성을 가지지만 프라이머리 키로 사용되지 않는 키입니다.

  • 용도: 프라이머리 키 외에 다른 유니크한 열을 대체 키로 사용할 수 있습니다.
  • 예시: email 열이 유니크하면서도 프라이머리 키가 아니므로 대체 키가 될 수 있습니다.

6. 복합 키 (Composite Key)

복합 키는 두 개 이상의 열을 조합하여 고유한 값을 만들고 각 행을 고유하게 식별하는 데 사용되는 키입니다. 프라이머리 키와 외래 키 모두 복합 키로 설정할 수 있습니다.

  • 용도: 개별적으로는 고유하지 않지만, 여러 열을 결합하여 고유한 식별자를 만들어야 할 때 사용합니다.
  • 예시: Orders 테이블에서 order_idproduct_id를 조합하여 복합 키로 사용하여 주문 내역을 고유하게 식별할 수 있습니다.
CREATE TABLE Orders (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);

활용 예시

고객 주문 관리 시스템을 구축한다고 가정해 보겠습니다.

  • 고객 테이블 (Customers): 고객의 고유 ID(customer_id)를 프라이머리 키로 사용하여 각 고객을 고유하게 식별합니다.
  • 제품 테이블 (Products): 제품의 고유 ID(product_id)를 프라이머리 키로 사용하고, 바코드(barcode)에 유니크 키를 설정하여 각 제품을 고유하게 식별합니다.
  • 주문 테이블 (Orders): order_idcustomer_id를 복합 키로 사용하여 한 고객이 여러 번 주문한 내용을 고유하게 식별합니다.
  • 주문 항목 테이블 (OrderItems): order_idproduct_id를 복합 키로 설정하여 각 주문 항목을 고유하게 구분합니다. product_idProducts 테이블의 프라이머리 키를 참조하는 외래 키로 설정합니다.

이러한 방식으로 각 키를 적절히 활용하면 데이터 무결성을 유지하고, 데이터베이스 관계를 명확히 정의할 수 있습니다.

728x90

댓글