본문 바로가기
프로그래밍/sql

[sql] 테이블에 기본키를 만들어야 하는 이유

by ® 2020. 11. 16.
반응형

테이블에 기본키 (primary key)가 있어야 할 이유가 무엇일까요?

가장 중요한 이유는 "특정 로우 (레코드)를 다른 로우들과 구별하기" 위해서입니다.

 

즉, 테이블 내 로우의 유일성을 보장하는 것입니다.

 

 

어떤 컬럼을 기본키로 설정하는 것이 바람직할까요?

1. 유일한 값

2. NULL값을 가질 수 없음

3. 값이 갱신될 일이 없음

4. 가능한 간단한 형태 (문자형보단 정수형, 여러 컬럼보단 단일 컬럼이 나음)

 

 

기본키를 통해 로우의 유일성을 확보하면 어떤 점이 좋을까?

반복적이고 쓸데없는 데이터가 쌓이지 않으므로, 이런 데이터에 의한

 

1) 쿼리 속도 저하 방지

2) 부정확한 정보 방지

 

가 됩니다.

 

 

복합키 (compound primary key)를 사용할 경우 단점이 있을까?

1. 두 개 이상의 컬럼을 인덱스로 만들면 데이터베이스가 할 일이 많아져서 성능 손해

2. 조인 시 쿼리가 좀 더 복잡해질 수 있음

3. 이런 단점에도 불구하고 복합키를 사용하는 것이 효율적이라고 판단되면 복합키를 사용하면 됩니다.

반응형

댓글