Unique Key, Composite Key, Alternate Key, Candidate Key

찌끅·2024년 9월 23일

Unique Key, Composite Key, Alternate Key, Candidate Key

1. Unique Key (고유 키)

정의

  • Unique Key는 테이블의 특정 열 또는 열들의 집합이 고유한 값을 가져야 함을 보장하는 제약 조건이다.
  • 한 테이블에 여러 개의 Unique Key를 설정할 수 있으며, NULL 값을 허용할 수 있다.

특징

  • 고유성: Unique Key로 지정된 컬럼의 값은 중복될 수 없다. 각 행마다 값이 고유해야 한다.
  • NULL 허용: Unique Key는 하나 이상의 NULL 값을 허용할 수 있다. 단, NULL 값은 고유 값으로 취급되지 않는다.
  • Primary Key의 차이점: Unique Key는 여러 개의 컬럼에서 설정할 수 있고 NULL 값을 허용할 수 있지만, Primary Key는 반드시 하나만 존재하며 NULL 값을 허용하지 않는다.

예시

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    email VARCHAR(100),
    phone VARCHAR(20),
    UNIQUE (email),  -- 이메일은 고유해야 함
    UNIQUE (phone)   -- 전화번호도 고유해야 함
);
  • 이 예시에서 emailphone 컬럼은 Unique Key로 설정되어 있으며, 각각의 값은 중복될 수 없다.

2. Composite Key (복합 키)

정의

  • Composite Key두 개 이상의 컬럼을 조합하여 Primary Key또는 Unique Key를 설정한 키이다.
  • 단일 컬럼으로는 고유한 값을 만들 수 없을 때, 여러 컬럼을 결합해 고유성을 보장하는 경우에 사용된다.

특징

  • 여러 개의 컬럼을 조합해 고유성을 보장
  • Primary Key 또는 Unique Key로 사용할 수 있다.

예시

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id)  -- 복합 Primary Key
);
  • order_idproduct_id를 결합해 고유한 키로 설정한 복합 Primary Key이다. 이 조합으로 각 주문 내의 상품을 고유하게 식별할 수 있다.

3. Alternate Key (대체 키)

정의

  • Alternate Key는 Primary Key가 아닌, Unique Key로 사용할 수 있는 잠재적인 후보 키이다.
  • 테이블에서 여러 컬럼이 고유성을 가질 수 있을 때, Primary key로 선택되지 않은 다른 컬럼들을 Alternate Key라고 부른다.

특징

  • Unique Key로 간주할 수 있다.
  • Alternate Key는 테이블의 Primary Key로 선택되지 않은 다른 후보 키이다.

예시

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE  -- Primary Key가 아닌 고유 키
);
  • employee_id가 Primary Key로 선택되었지만, email도 고유하므로 Alternate Key로 사용할 수 있다.

4. Candidate Key (후보 키)

정의

  • Candidate Key는 테이블에서 고유성을 가진 컬럼 또는 컬럼 집합으로, 이론적으로 Primary Key로 사용될 수 있는 모든 키를 의미한다.
  • 테이블에 여러 후보 키가 있을 수 있으며, 그 중 하나를 Primary Key로 선택하고 나머지는 Alternate Key가 된다.

특징

  • Primary Key로 사용될 수 있는 모든 컬럼 또는 컬럼 조합
  • 각 Candidate Key는 고유성을 만족해야 함

예시

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE,  -- Candidate Key
    national_id VARCHAR(20) UNIQUE  -- Candidate Key
);
  • student_id, email, national_id는 모두 고유한 값으로 식별할 수 있으므로 Candidate Key로 간주된다. student_id는 Primary Key로 선택되고, 나머지는 Alternate Key가 된다.

0개의 댓글