배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - 3강. 데이터베이스 기초 3: Key란 무엇인가? #1, Access 2000
  


3강. 데이터베이스 기초 3: Key란 무엇인가? #1

Q :
기본키란 레코드의 유일성을 알려주는 키라고 그러던데 그렇다면 만일 기본키를 지정하지 않으면 관계설정을 할 수 없나요?
기본키와 인덱스에 대한 내용을 그냥 책을 보며 따라는 해봤는데 언제 어떤 경우에 확실하게 사용해야 되는지에 대한 감이 없어서요... 무척 중요한 것 같은데 좀 알려주세요..
초보자가...

A :
기본키
관계형 데이타베이스에서는 기본키를 꼭 설정해두어야 합니다.
주민등록번호은 버스 탈 때는 필요없지만 검문이라도 걸리면 필요하지요? 그래서 항상 가지고 다니지요? 또 책가방에 '내것'하고 써 놓으면 그것이 내것입니까? 내 것임을 증명할 수 있는 표시가 필요할 겁니다. 이러한 구분이 불명확한 상태에서는 오해를 받을 겁니다.
하물며 수많은 중요한 자료가 전혀 관련이 없는 레코드와 서로 관계가 만들어지면 어떻게 하시겠습니까?

인덱스
인덱스는 자주 검색을 하는 필드에 만들어 두시면 됩니다. 
인덱스를 만들어 두면 빨리 찾거든요.

지금까지 데이터베이스의 일반적인 구성요소들과 자료의 형식에 대해 알아보았습니다. 이제부터 관계형 데이터베이스의 중요한 요소를 알아보겠습니다. 제일 중요한 개념이므로 좀 더 많은 시간을 투자하여 반드시 이해해야 되겠습니다.

앞으로는 관계형 데이터베이스를 그냥 데이터베이스라고 줄여 말하겠습니다.
데이터베이스 운영에 있어서 중요한 것은 다음과 같습니다.

  1. 데이터베이스란 고객 주문 관리나 음악 수집 관리와 같이 특정 주제나 목적과 관련된 정보를 체계적으로 모아 놓은 것을 말합니다. 
    여기서 '특정'이란 말과 '체계적' 이란 말이 중요합니다. 
  2. 데이터베이스가 시스템에 저장되지 않거나 일부만 저장된 경우에는 갖고 있는 다양한 원본을 직접 조합하고 구성하여 정보를 추적할 수 있습니다.

좀더 쉽게 얘기하면 흩어져 있는 관련 정보를 모아 볼 수 있다는 말입니다. 이때 중요한 것이 자료의 고유성입니다. 고유성이 있어야 어떤 것이 서로 관련된 자료인가를 확인할 수 있습니다.

자료의 고유성을 유지하고 정보를 검색하는 관점에서 Key란 무엇인가 알아 봅시다.


말 그대로 정보를 찾는 열쇠입니다. 
파일에 있는 레코드들 중 조건에 맞는 레코드들을 찾거나, 이들을 순서대로 정렬 할 때 기준이 되는 필드를 key라고 부릅니다. 예를 들어 파일을 이름의 가나다 순으로 정렬한다면 이름이 키가 되는 겁니다. 

인덱스키
검색 작업을 빠르게 처리하려면 검색을 하려는 키 필드에 색인(Index)을 만들어 두면 좋을 겁니다.  인덱스에 사용되는 필드를 인덱스 키(index key)라고 이름합니다. 일반적으로 키는 인덱스를 만들어 두고 사용하므로 <인덱스키>라고도 말합니다. 인덱스에 대해서는 뒤에서 따로 설명을 하겠습니다.

고유키
키 중에는 키에 들어 있는 값들이 전체 자료에 걸쳐 전혀 중복되지 않도록 되어 있는 경우가 있는데 이를 <고유키>라고 부릅니다. 이것은 말 그대로 각각의 레코드를 식별할 수 있는 성질을 가지고 있습니다. 액세스에서 고유키를 만들기 위해서는 인덱스를 이용합니다. 인덱스 속성을 '인덱스(중복 불가능)'으로 설정해 두면 고유키가 됩니다. 고유키 중에 테이블의 관계에 사용되는 고유키를 기본키라고 부릅니다.

참고]
아래 그림은 액세스에서 인덱스 설정 창의 모습입니다.
인덱스의 속성 설정 : 인덱스의 이름, 인덱스에 포함된 필드이름, 정렬순서, 기본 키 설정, 고유 키 설정, Null값 무시 등을 설정할 수 있습니다. 인덱스에 대해서는 뒤에서 설명합니다.

고유 키 찾기

이 테이블에서 고유키는 무엇이겠습니까? 

고객정보를 가지는 이 테이블에서는 주민등록번호가 고유할 것이라고 바로 아실 겁니다.

이름(담당자 이름)은 일상생활에서 사람을 구분하는 정보로 사용됩니다. 따라서 많은 초급자들은 이름을 고유한 값으로 생각하더군요. 그러나 큰 집단을 대상으로 하면 동명이인이 있으므로 고유 키로 사용하기는 매우 부적절한 겁니다. 

전화번호 또한 바뀔 수 있으므로 고유하지 않습니다. 주소도 그렇습니다. 추가로 설령 주소가 고유 값으로 적용될 수 있는 상황이더라도 자료가 크기가 커서 때문에 속도저하를 초래합니다.

회사이름, 우편번호, 담당자 직위는 당연히 해당되지 않겠지요. 

단일 필드만으로 고유한 값을 가질 수 없을 때 어려 필드를 조합하여 고유한 값을 만들 수 있습니다. 이 테이블에서는 담당자 이름과 전화를 조합하면 제일 좋을 듯 합니다. 그렇지만 그것은 속도에 많은 영향을 줍니다. 따라서 가능하면 여러 필드를 조합하여 만든 고유키를 만들지 않도록 합니다. 이러한 복합 키에 대해서는 [인덱스]에 대한 강좌에서 설명이 됩니다.

고유키와 검색

자료 검색에 있어서 다음 내용은 꼭 알아두셔야 합니다.
     1) 고유키인 경우는 그 값이 찾아지는 순간 찾기를 멈춥니다. 
     2) 그러나 고유키가 아닌 경우는 다른 키 값이 나올 때까지 찾게 됩니다. 

예를 들어 주민등록 번호가 '77####-#####81'을 찾으라고 하면 이 주민등록 번호를 찾는 순간 찾기를 멈춥니다. 그러나 이름으로 찾기를 할 때 만약 '조자룡' 다음의 이름이 '최영희'라고 하면 '조자룡'을 찾으라고 하면 '조자룡'을 지나 '최영희'라는 이름이 나타나면 찾기를 멈추게 됩니다. 이렇듯 고유키는 작업의 효율성과 정확성에 매우 중요합니다. 

 

 

  목차 | 이전 | 다음