DEV/DB & SQL

[SQL] Primary Key 설정 이유, 효과, 방법

무사뎀벨레 2025. 4. 28. 17:23

 

 

 

 

Primary Key의 존재, 설정 이유


Primary Key혹은 PK라고 부르는 기본키는 레코드를 고유하게 식별하기 위해

즉, 한 테이블 안에서 각각의 행을 확실하게 구분할수있도록 고유한 값을 가져야 하기 때문에 설정한다.

 

또한 데이터 무결성이라고 부르는 정확하고 일관된 데이터를 유지하기 위해 PK 설정이 필요하다.

 

 

 

 

Primary Key를 설정했을 때 나타나는 효과


1. 고유성(Unique) 보장

PK로 지정된 컬럼은 DB에서 중복되는 값을 강제로 막기 때문에 중복값이 절대 들어올수 없다.

 

2. NOT NULL 제약 조건

PK컬럼은 무조건 값이 존재해야 한다. NULL(빈 값)은 허용되지 않는다.

 

3. 빠른검색(Index 자동 생성)

대부분의 DBMS는 PK를 설정하면 자동으로 인덱스(Index)를 만든다. 그렇기 때문에 검색 속도 또한 빨라진다.

 

4. 관계 설정에 유리(Foreign Key)

다른 테이블에서 이 PK를 참조할수있어, 테이블간 관계(연관)를 쉽게 만들수 있다.

 

5. 데이터 무결성 보장

테이블 안에서 중복이나 잘못된 데이터가 들어오는것을 방지한다.

 

 

 

 

 

Primary Key의 조건


PK(기본키)는 다음과 같은 조건을 가져야 한다.

 

- 유일한 값을 가져야 함

- NULL 값을 가질수 없음

- 변경될수있는 경우가 없어야 함

 

 

 

 

PK설정 간단 예시


CREATE TABLE users (
    user_id INT PRIMARY KEY,
    user_name VARCHAR(100),
    user_email VARCHAR(100)
);

 

user_idPK로 설정되어 있어 각 사용자를 고유하게 구분한다.

같은 user_id를 가진 다른 유저절대 생길수 없고 항상 NULL이 아닌 값이 있어야 한다.

 

 

 

PK없이 테이블을 설계했을 때


PK없이 테이블을 설계했을 때 다음과 같은 문제가 생길 수 있다.

 

1. 행을 고유하게 구분할수 없음

특정 데이터를 정확하게 찾거나 수정, 삭제할때 대상을 특정할 방법이 없다. 비슷한 데이터가 여러개 있으면 어떤 데이터를 수정, 삭제할지 혼란스럽다.

 

2. 데이터 중복 허용

똑같은 데이터가 테이블에 여러 번 들어가도 막을 수 없다. 예를 들어 같은 회원정보가 여러 줄 있을수 있다.

 

3. 성능 저하

인덱스 없이 검색해야 하니, 테이블 크기가 커질수록 조회 속도가 느려진다.

 

4. 외래키(Foreign Key) 설정 불가

다른 테이블이 이 테이블을 참조하고 싶어도, 기준이 되는 데이터(PK)가 없어서 참조 무결성을 유지할수 없다.

 

5. 데이터 무결성 문제

시스템이 중복, 누락을 자동으로 막지 못해 데이터 신뢰성이 낮아진다. 예를 들어 회원가입 시 같은 이메일을 가진 사람이 여러명 있을수도 있다.

반응형