본문 바로가기
DB

기본키 (Primary Key)

by JobKea 2020. 3. 23.
반응형

개발이 어느정도 끝날 무렵

DB Table도 모두 확정되고 화면도 개발이 완료되어서

테스트를 하고 DB 오브젝트를 확인 하는 과정 중에

테이블간 Key 설정이 안되어 있는걸 확인했다.

 

아마도 개발하느라 못보고 개발했겠지..

그나마 서비스나 화면에서 정합성 확인(Validation Check)을 잘해서 그런지 데이터가 꼬인건 없으나

운영하다보면 충분히 중복 데이터가 나올수 있는 상황이다.

 

이를 막기위해서 늦게 나마 Key를 추가하려다 보니 가물가물해서 기억할겸 써본다.

 

기본키(Primary Key)는 테이블에 유일(unique)하고 Null 이 아닌 컬럼을 말한다.

 

예를 들어 동사무소에서 사용하는 시스템에서는 주민을 정확하게 1명을 검색할떄는 주민등록번호를 사용할텐데

주민등록 번호는 전국민이 중복되지 않고 개인한명마다 1개씩 가지고 있으며 출생신고를 했다면 모두 가지고 있다.

만약 프로그램 실수 혹은 사람의 실수로 이미 등록된 주민번호를 입력하려고 할때 기본키로 설정되어 있다면

Error 가 발생하여 중복된 데이터가 입력되지 않도록 한다.

 

기본 키는 여러개의 컬럼을 묶어서 설정할 수 있다.

 

예를 들자면 테이블에 주민번호라는 값이 없을경우 한명의 사람을 특정하기 위하여 이름/주소/나이를 묶어서 Primary Key를 설정하는 것이다. 하나의 주소에 같은 이름을 가진 같은 나이의 사람이 있을 수는 없으니까 말이다.

 

기본키는 인덱스 설정이 된다.

 

 인덱스란 테이터베이스에서 검색(Select)를 빠르게 하기위한 하나의 기법이라고 할 수 있다.

 이러한 인덱스는 B-트리 인덱스 형태로 생성된다.

 인덱스 / B-트리에 대한 설명을 현재 이 글만큼 길어질수 있으니 "여기"에서 확인 하길 바란다.

 

위에서 설명한 주민정보가 테이블을 간략과 하면 이런 모양 일것이다.

매우 간략하였으나 내가 말하고자 하는 것은 표시 될거라 예상된다.

 

 

 

 

 

 

 

 

반응형

댓글