이번 글에서는 데이터베이스에서 키에 대해 알아보고 추가로 무결성 제약조건에 대해서 알아보도록 하겠습니다.
키(key)란?
키는 데이터베이스 테이블에서 하나의 튜플(행)을 고유하게 식별하기 위한 속성(컬럼) 또는 소성의 집합을 의미합니다.
데이터베이스 키는 여러 종류가 있는데 각 키는 특정 목적에 맞게 사용되며, 데이터의 무결성 유지와 중복 방지에 중요한 역할을 합니다.
어떤 키가 있는지 알아보도록 합시다.
슈퍼키 (Super Key)
슈퍼키란 릴레이션에서 튜플을 고유하게 식별할 수 있는 하나 이상의 속성 집합입니다.
슈퍼키는 이런 특징을 가지고 있습니다.
- 최소성이 필요하지 않다.
- 여러 속성을 조합하여 슈퍼키가 될 수 있다.
후보키 (Candidate Key)
후보키란 릴레이션의 튜플을 고유하게 식별할 수 있는 최소한의 속성 집합입니다.
후보키는 이런 특징을 가지고 있습니다.
- 테이블에서 하나 이상의 후보키가 있을 수 있다.
- 후보키 중 하나를 기본키로 선택한다.
기본키 (Primary Key)
기본키란 후보키 중에서도 주요 식별자로 선택된 키 입니다.
기본키는 이런 특징을 가지고 있습니다.
- 하나의 릴레이션에 기본키는 단 하나만 존재
- 기본키로 선택된 속성은 데이터베이스 무결성을 유지하는 데 중요한 역할을 한다.
- 중복과 NULL 값이 허용되지 않는다.
대리키 (Surrogate Key)
대리키란 데이터베이스 시스템이 자동으로 생성한 고유 식별자입니다.
대리키는 이런 특징을 가지고 있습니다.
- 사용자가 정의한 속성 대신, 시스템이 생성하여 튜플을 식별
- 데이터 중복과 관계없이 고유성 보장
- 테이블 설계 시 속성이 없는 경우 사용
외래키 (Foreign Key)
외래키란 한 테이블의 속성이 다른 테이블의 기본키(PK)를 참조하는 것입니다.
외래키는 이런 특징을 가지고 있습니다.
- 외래키는 NULL 값을 가질 수 없다.
- 외래키 값은 참조하는 기본키 값과 일치해야 한다.
이렇게 데이터베이스의 키들에 대해 알아보았습니다.
간단하게 한번 정리를 해보도록 하겠습니다.
- 슈퍼키
- 모든 속성 조합 중에서 튜플을 고유하게 식별할 수 있는 키
- 후보키
- 슈퍼키 중 최소성을 만족하는 키
- 기본키
- 후보키 중에서 하나를 선택
- 대리키
- 실제 데이터와는 무관하게 생성된 고유 식별자
- 외래키
- 다른 테이블의 기본키를 참조하여 관계를 형성
데이터베이스는 이러한 키를 이용하여 데이터베이스에서 데이터의 중복 방지, 관계 정의, 무결성 유지를 하게 됩니다.
근데 무결성은 무엇일까요?
무결성이란 데이터베이스에서 데이터의 정확성, 일관성, 신뢰성을 보장하는 특성입니다.
이러한 무결성에는 3가지 제약조건이 있는데요. 한번 알아보도록 하겠습니다.
도메인 무결성
도메인 무결성이란 테이블의 속성 값이 미리 정의된 도메인(값의 범위) 안에 있어야 한다는 제약 조건입니다.
해당 제약조건의 목적은 바로 데이터 값이 규칙에 따라 제한되도록 보장하기 위함입니다.
빠르게 예시로 알아보도록 하겠습니다.
CREATE TABLE 학생 (
학번 INT,
이름 VARCHAR(50),
나이 INT CHECK (나이 >= 0)
);
이 테이블에 데이터를 추가할 때 나이는 반드시 양수여야 한다는 제약조건이 있는데요.
이게 바로 도메인 무결성입니다.
개체 무결성
개체 무결성이란 기본키가 NULL 값을 가질 수 없고, 중복될 수 없다는 제약조건입니다.
위에서 기본키의 특징에 대해서 알아볼 때 언급했었는데요.
그러한 특징이 바로 개체 무결성 제약조건입니다.
해당 제약조건의 목적은 각 튜플이 데이터베이스 내에서 고유하게 식별되도록 보장하기 위함입니다.
이것도 예시로 한번 알아보겠습니다.
CREATE TABLE 학생 (
학번 INT PRIMARY KEY,
이름 VARCHAR(50),
나이 INT
);
학생 테이블에서 {학번}이 기본키임을 알 수 있습니다.
다음 예시는 개체 무결성을 위반한 경우입니다.
학번 이름 나이
----------------------
1 홍길동 20
NULL 김영희 22 -- 기본키가 NULL
1 박철수 21 -- 기본키가 중복
참조 무결성
참조 무결성이란 외래키를 통해 두 테이블 간의 관계를 정의하며, 외래키 값은 참조되는 테이블의 기본키 값과 일치하거나 NULL 이어야 한다는 제약조건입니다.
해당 제약조건의 목적은 관계형 데이터베이스에서 테이블 간의 관계를 유지하고, 잘못된 참조를 방지하기 위함입니다.
예시를 통해 알아보겠습니다.
CREATE TABLE 학생 (
학번 INT PRIMARY KEY,
이름 VARCHAR(50)
);
CREATE TABLE 수강 (
수강번호 INT PRIMARY KEY,
학번 INT,
FOREIGN KEY (학번) REFERENCES 학생(학번)
);
학생과 수강이라는 두 가지 테이블이 존재하며, 수강 테이블은 학생의 학번이라는 기본키를 외래키로 사용 중입니다.
다음은 참조 무결성을 위반한 상황입니다.
학생 테이블
학번 이름
1 홍길동
2 김영희
수강 테이블
수강번호 학번
1 1
2 3 -- 학생 테이블에 학번 3이 존재하지 않음(위반)
3 NULL
이렇듯, 존재하는 기본키이거나 NULL 일 때만 참조 무결성 제약조건을 위반하지 않을 수 있습니다.
'CS > 데이터베이스' 카테고리의 다른 글
SQL 이란? (0) | 2025.01.07 |
---|---|
MySQL과 InnoDB (1) | 2025.01.03 |
데이터베이스를 알아보자 (0) | 2025.01.02 |
DBMS 란 무엇일까? (0) | 2025.01.02 |
파일시스템과 데이터베이스 (0) | 2025.01.01 |