3강. 데이터베이스 기초 3: Key란 무엇인가? #3
기본키(Primary Key)는 꼭 만들어야 하는가?
기본 키가 없는 테이블은 관계에 사용할 수 없고 정렬과 검색할 때 처리속도가 늦습니다. 따라서 가능하면 기본 키를 만들어 두시는 것이 좋겠습니다. |
관계 설정에 사용되는 고유키를 기본키라고 부른다고 했습니다.
때문에 '관계에 쓰이지 않을 테이블인데도 기본키가 필요한가'
라고 질문한 경우가 있더군요. 기본키도 역시 고유키입니다. 기본키와 고유키는 이름상의 차이일 뿐 구조적으로 아무런 차이가 없습니다. 관계에 쓰이지 않더라도 기본키를 만들어 두시는 것이 좋습니다.
그러나 기본키로 만들어 두면…
첫째 > 테이블 디자인 창이나 관계설정 창에서 바로
눈에 띄기 때문에 고유성을 나타낼 수 있는 키가 있는지의 여부를 확연히 알 수 있습니다.
바로 이것 때문에 관계에 사용되지 않을 테이블이더라도 인덱스를 만들고 고유속성을 설정해서 고유키로 만들어 두는 것 보다 기본키가 없을 때 기본 속성을 설정하여 기본키로 만들어 두는 것이 테이블의
관리에 중요합니다.
둘쨰 > 더 중요한 것은 이렇게 기본키를 만들어 두면 액세스에서 찾기할 때나
DAO 개체를 이용하여 자료를 찾기를 할 때나 레코드셋 클론(RecordsetClone)을 이용할 때, 하나의 테이블에 2개의 폼을 만들어 사용할 때 등 등 이러한
기본키/고유키를 이용하는 작업이 비일비재하게 있기 때문에 기본키는 가능하면 만들어 두도록 합니다.
기본키 찾기
이전 강의의 [고유 키 찾기]에서 언급한 예제 테이블을 다시 한번 보면서 기본키 설정에 대해서 몇 가지만 얘기하도록 하겠습니다.
이 예제의 테이블에는 주민등록번호가 단일 필드로는 유일한 고유키입니다. 그러나 그 크기가 상당히 큰 편에 속합니다. 그리고 주민등록번호가 꼭 필요한 정보가 아닌 경우도 있을 겁니다. 이런 경우 13자리의 정보를 얻어내고 입력하는 것은 상당히 불편합니다. 이러한 이유 때문에 고유키로는 사용하지만 기본키로는 잘 사용하지 않습니다.
따라서 기본키로 쓸만한 고유키가 없을 때 고유한 값을 갖도록 새로운 텍스트나 숫자 필드를 추가하여 기본키로 운영하는 것이 바람직합니다. 이 예에서는 고객마다 고유 코드를 영문자로 부여하였군요 여기서 생각해야 할 것이 한가지 더 있습니다. 고유 코드는 문자로 할 것인가 숫자로 할 것인가를 고려해야 합니다.
문자로 키를 만들 때는 키가 의미를 가지고 있도록 합니다. 또 하나 몇 글자 내로 입력 길이가 제한되므로 그 길이로 모든 많은 고객에게 고유한 키를 만들어 줄 수 있는가를 계산해야 합니다. 따라서 고유키로 쓸 필드는 가능하면 최소로 하는데 충분한 길이로 설정하고 고객 이름의 약자를 쓴다든가 해서 의미있는 고객번호를 만들도록 합니다.(이 예제 테이블에서 한글화 하면서 이름만 한글로 바꾸고 고객번호는 그대로 두어 의미가 없는 고객코드같이 보입니다. 그러나 원래에는 이름 필드에는 영문 이름이 들어 있고 이 영문 이름의 약자를 고유하게 만들었던 것으로 의미를 둔 코드입니다.)
그러나 고객이 많고 굳이 의미있는 문자코드가 아니어도 되는 경우는 그냥 일련번호 기본키를 만들어 주는 것이 자료관리나 속도 면에서 가장 효율적입니다.
하여간 키는 데이터베이스의 연산속도에 영향을 주므로 가능하면
간단해야 하고 값이 바뀌지 않는 것을 기본키로 사용하도록 합니다.
|