SQL
SQL에서 사용하는 모든 키의 정의와 예시
초코너무조코
2025. 1. 21. 10:46
728x90
목차
SQL에서 사용하는 모든 키의 정의와 예시
SQL 데이터베이스에서 키(Key)는 데이터를 고유하게 식별하거나 테이블 간 관계를 정의하는 데 중요한 역할을 합니다. 아래는 주요 키의 정의와 예시를 정리한 내용입니다.
1. Primary Key (기본 키)
- 정의
Primary Key는 테이블에서 각 행(row)을 고유하게 식별하는 데 사용되는 컬럼입니다. 기본 키는 NULL 값을 허용하지 않으며, 중복된 값을 가질 수 없습니다. - 특징
- 고유성을 보장합니다.
- 반드시 하나의 테이블에 하나만 존재합니다.
- 예시 StudentID는 각 학생을 고유하게 식별하는 Primary Key입니다.
- CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(50), Age INT );
2. Foreign Key (외래 키)
- 정의
Foreign Key는 한 테이블의 컬럼이 다른 테이블의 Primary Key를 참조하는 데 사용됩니다. 이를 통해 테이블 간의 관계를 정의합니다. - 특징
- 참조 무결성을 유지합니다.
- 여러 테이블 간 연결을 생성합니다.
- 예시 Orders 테이블의 StudentID는 Students 테이블의 StudentID를 참조하는 Foreign Key입니다.
- CREATE TABLE Orders ( OrderID INT PRIMARY KEY, StudentID INT, FOREIGN KEY (StudentID) REFERENCES Students(StudentID) );
3. Candidate Key (후보 키)
- 정의
Candidate Key는 테이블에서 Primary Key로 선택될 수 있는 모든 컬럼 집합입니다. 고유성과 최소성을 만족해야 합니다. - 특징
- 한 테이블에 여러 개의 후보 키가 존재할 수 있습니다.
- Primary Key는 Candidate Key 중 하나를 선택한 것입니다.
- 예시 Email과 PhoneNumber는 고유성을 가지므로 Candidate Key가 될 수 있습니다.
- CREATE TABLE Employees ( EmployeeID INT, Email VARCHAR(100), PhoneNumber VARCHAR(20), UNIQUE (Email), UNIQUE (PhoneNumber) );
4. Unique Key (유니크 키)
- 정의
Unique Key는 특정 컬럼이 중복된 값을 가지지 않도록 보장합니다. NULL 값을 가질 수 있지만, 각 NULL 값은 서로 고유하다고 간주됩니다. - 특징
- 중복된 값을 허용하지 않습니다.
- 한 테이블에 여러 개의 Unique Key를 정의할 수 있습니다.
- 예시 ProductCode는 Unique Key로 설정되어 중복을 허용하지 않습니다.
- CREATE TABLE Products ( ProductID INT PRIMARY KEY, ProductCode VARCHAR(50) UNIQUE );
5. Super Key (슈퍼 키)
- 정의
Super Key는 테이블의 행을 고유하게 식별할 수 있는 하나 이상의 컬럼 집합입니다. 모든 Primary Key와 Candidate Key는 Super Key에 포함됩니다. - 특징
- 최소성을 만족하지 않을 수 있습니다.
- Super Key는 Candidate Key의 상위 개념입니다.
- 예시 EmployeeID 하나만으로도 고유성을 만족하지만, EmployeeID와 Name을 함께 사용할 수도 있습니다.
- EmployeeID, Name -> Super Key
6. Composite Key (복합 키)
- 정의
Composite Key는 두 개 이상의 컬럼을 조합하여 고유성을 보장하는 키입니다. - 특징
- 단일 컬럼으로 고유성을 보장할 수 없을 때 사용됩니다.
- 예시 StudentID와 CourseID를 함께 사용하여 고유성을 보장합니다.
- CREATE TABLE Enrollments ( StudentID INT, CourseID INT, PRIMARY KEY (StudentID, CourseID) );
7. Alternate Key (대체 키)
- 정의
Candidate Key 중에서 Primary Key로 선택되지 않은 키를 Alternate Key라고 합니다. - 특징
- 대체 키는 고유성과 최소성을 만족합니다.
- 예시 Username과 Email은 Candidate Key이지만, Primary Key로 선택되지 않았기 때문에 Alternate Key가 됩니다.
- CREATE TABLE Users ( UserID INT PRIMARY KEY, Username VARCHAR(50) UNIQUE, Email VARCHAR(100) UNIQUE );
8. Surrogate Key (대리 키)
- 정의
Surrogate Key는 테이블에 인위적으로 추가된 고유 식별자입니다. 주로 숫자나 고유 식별 번호(UUID)를 사용합니다. - 특징
- 비즈니스 로직과 무관한 키입니다.
- 데이터베이스 시스템이 자동 생성합니다.
- 예시 PaymentID는 Surrogate Key로 자동 증가 값입니다.
- CREATE TABLE Payments ( PaymentID INT IDENTITY(1,1) PRIMARY KEY, Amount DECIMAL(10,2) );
9. Natural Key (자연 키)
- 정의
Natural Key는 실제 비즈니스 데이터를 사용하여 고유성을 보장하는 키입니다. - 특징
- 데이터의 의미를 가지고 있습니다.
- Surrogate Key와 반대 개념입니다.
- 예시 ProductCode는 비즈니스 데이터를 기반으로 한 Natural Key입니다.
- CREATE TABLE Products ( ProductCode VARCHAR(50) PRIMARY KEY, Name VARCHAR(100) );
10. Compound Key (복합 키)
- 정의
Compound Key는 Composite Key와 유사하지만, 두 개 이상의 컬럼으로 이루어진 키를 지칭할 때 사용됩니다. - 특징
- Composite Key의 또 다른 용어로 볼 수 있습니다.
- 예시
- CREATE TABLE LibraryLoans ( MemberID INT, BookID INT, PRIMARY KEY (MemberID, BookID) );
정리: 키의 관계 다이어그램
- Super Key: 모든 키를 포함
- Candidate Key: 최소성을 만족하는 키
- Primary Key: 선택된 유일한 키
- Alternate Key: Primary Key가 아닌 Candidate Key
- Composite Key: 여러 컬럼의 조합으로 생성된 키
- Foreign Key: 다른 테이블의 Primary Key를 참조
SQL에서 키는 데이터베이스 설계의 핵심 요소입니다. 각각의 키를 적절히 활용하면 데이터 무결성과 효율적인 데이터 관리가 가능합니다.
728x90