소프트웨어 공부/데이터베이스

[데이터베이스] 키

야곰야곰+책벌레 2021. 8. 23. 16:10
728x90
반응형

키는 왜 중요한가


  다음과 같은 이유 때문에 키들이 테이블 구조에 있어 결정적으로 중요하다.

 

  • 테이블 내의 각 레코드가 정확하게 식별되도록 보장한다.
  • 다양한 종류의 무결성을 설정하고 강화하는 것을 도와준다.
  • 테이블 관계를 설정하도록 해준다.

  항상 각 테이블을 위해 적절한 키들을 정의하도록 한다. 그렇게 하면 테이블 구조가 정상적이고, 각 테이블 내의 중복 데이터가 최소화되고, 테이블들 사이의 관계가 튼튼해지도록 보장하는데 도움이 된다.

 

각 테이블에 키 설정하기


키는 후보(candidate) 키, 주(primary) 키, 외래(foreign) 키, 그리고 비 키(non-keys)라는 네 개의 주요 키 종류가 있다. 키의 종류는 테이블 내에서의 기능을 결정한다.

 

후보 키

  후보 키는 테이블 주제의 단일 인스턴스를 유일하게 식별해 주는 하나의 필드 또는 필드 집합이다. 각 테이블은 적어도 하나의 후보 키를 가져야만 한다. 궁극적으로 테이블의 사용 가능한 후보 키들의 풀(pool)을 검사하고 그 중 하나를 테이블의 공식적인 주 키로 지정한다.

 

후보 키의 요소들

  • 다중 부분 필드일 수 없다.
  • 유일한 값들을 포함해야만 한다.
  • 널 값을 포함할 수 없다.
  • 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
  • 그 값이 전체 또는 부분적으로 선택적이지 않다.
  • 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
  • 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 식별해야만 한다.
  • 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다. 
  • 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.

  후보 키로 지정하는 각 필드의 이름 옆에 'CK'라는 글자들을 적음으로써, 테이블 구조 내의 후보 키들을 표시한다. 두 개 이상의 필드들로 구성되는 후보 키는 복합 후보 키(composite candidate key)로 알려져 있는데, 이 키를 구성하는 필드들의 이름 옆에 'CCK'라고 적는다.

 

인위적인 후보 키

  테이블이 후기 키를 포함하지 않는다고 판단될 때는 인위적인(또는 대리) 후보 키를 만들고 사용할 수 있다. 후보 키의 요소들을 모두 따르는 새 필드를 만들고, 테이블에 추가함으로써 인위적인 후보 키를 설정하는데, 이 필드는 공식적인 후보 키가 된다.

 

주 키

  주 키는 모든 키들 중에서 가장 중요한 키다.

1. 주 키 필드는 데이터베이스 구조 전체에 걸쳐 테이블을 배타적으로 식별하고, 다른 테이블들과의 관계를 설정하는 것을 도와준다.
2. 주 키 값은 테이블 내의 주어진 레코드를 유일하게 식별하고, 전체 데이터베이스에 걸쳐 이 레코드를 배타적으로 나타낸다. 이것은 또 이중 레코드들로부터 보호해준다.

  주 키는 후보 키와 정확하게 같은 요소들을 따라야만 한다.

 

주 키의 요소들

  • 다중 부분 필드일 수 없다.
  • 유일한 값들을 포함해야만 한다.
  • 널 값을 포함할 수 없다.
  • 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
  • 그 값이 전체 또는 부분적으로 선택적이지 않다.
  • 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
  • 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 식별해야만 한다.
  • 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다. 
  • 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.

주 키의 선택을 끝내기 전에, 주 키가 다음의 특별한 요소를 완전히 따르도록 확인하는 것이 반드시 필요하다.

 

  • 그 값은 주어진 레코드 내의 각 필드의 값을 배타적으로 식별해야만 한다.

주 키를 설정하기 위한 규칙들

  • 각 테이블은 단지 하나의 주 키를 가져야만 한다.
  • 데이터베이스 내의 각각의 주 키는 반드시 유일해야만 한다.

대체 키

  주 키로 사용하기 위한 하나의 후보 키를 선택했다면 나머지 키들은 대체(alternate) 키들로 지정할 수 있다. 이 키들은 RDBMS 프로그램에서 유용할 수 있는데, 이들이 테이블 내의 특정 레코드를 유일하게 식별하는 대체 수단을 제공하기 때문이다. 설계 작업에서는 대체 키에 관심이 없겠지만 RBDMS프로그램에서 데이터베이스를 구현하면서 한 번 더 그것들과 작업하게 될 것이다.

 

비 키

  비 키(non-key)는 후보, 주, 대체 또는 외래 키로 지정되지 않은 필드다. 이것의 유일한 목적은 테이블 주제의 특성을 나타내는 것이고, 그 값은 주 키에 의해 결정된다. 비 키를 위해서는 특별한 지정이 없으므로, 테이블 구조에서 이것을 특별히 표시할 필요는 없다.

 

테이블 수준의 무결성


이 종류의 무결성은 전반적인 데이터 무결성의 주요 구성 요소이고, 다음과 같은 것들을 보장한다.

 

  • 테이블 내에 이중 레코드들이 없다.
  • 주 키는 테이블 내의 각 레코드들을 배타적으로 식별한다.
  • 모든 주 키 값은 유일하다.
  • 주 키 값은 널이 아니다.

 

초기 테이블 구조 검토하기


  기초적인 테이블 정의가 완료되면 진행된 작업을 검토하기 위해 사용자 및 관리자들과 면담을 수행할 필요가 있다. 면담에서는 다음과 같은 작업을 수행한다.

 

  • 적절한 주제들이 데이터베이스에 표현되는 것을 확인한다.
  • 테이블 이름과 테이블 설명이 모든 사람에게 의미가 있도록 한다.
  • 필드 이름들이 모든 사람에게 적합하고 의미가 있도록 한다.
  • 모든 적절한 필드들이 각 테이블에 할당되었는지 검증한다.
728x90
반응형