키는 왜 중요한가
다음과 같은 이유 때문에 키들이 테이블 구조에 있어 결정적으로 중요하다.
- 테이블 내의 각 레코드가 정확하게 식별되도록 보장한다.
- 다양한 종류의 무결성을 설정하고 강화하는 것을 도와준다.
- 테이블 관계를 설정하도록 해준다.
항상 각 테이블을 위해 적절한 키들을 정의하도록 한다. 그렇게 하면 테이블 구조가 정상적이고, 각 테이블 내의 중복 데이터가 최소화되고, 테이블들 사이의 관계가 튼튼해지도록 보장하는데 도움이 된다.
각 테이블에 키 설정하기
키는 후보(candidate) 키, 주(primary) 키, 외래(foreign) 키, 그리고 비 키(non-keys)라는 네 개의 주요 키 종류가 있다. 키의 종류는 테이블 내에서의 기능을 결정한다.
후보 키
후보 키는 테이블 주제의 단일 인스턴스를 유일하게 식별해 주는 하나의 필드 또는 필드 집합이다. 각 테이블은 적어도 하나의 후보 키를 가져야만 한다. 궁극적으로 테이블의 사용 가능한 후보 키들의 풀(pool)을 검사하고 그 중 하나를 테이블의 공식적인 주 키로 지정한다.
후보 키의 요소들
- 다중 부분 필드일 수 없다.
- 유일한 값들을 포함해야만 한다.
- 널 값을 포함할 수 없다.
- 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
- 그 값이 전체 또는 부분적으로 선택적이지 않다.
- 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
- 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 식별해야만 한다.
- 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다.
- 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.
후보 키로 지정하는 각 필드의 이름 옆에 'CK'라는 글자들을 적음으로써, 테이블 구조 내의 후보 키들을 표시한다. 두 개 이상의 필드들로 구성되는 후보 키는 복합 후보 키(composite candidate key)로 알려져 있는데, 이 키를 구성하는 필드들의 이름 옆에 'CCK'라고 적는다.
인위적인 후보 키
테이블이 후기 키를 포함하지 않는다고 판단될 때는 인위적인(또는 대리) 후보 키를 만들고 사용할 수 있다. 후보 키의 요소들을 모두 따르는 새 필드를 만들고, 테이블에 추가함으로써 인위적인 후보 키를 설정하는데, 이 필드는 공식적인 후보 키가 된다.
주 키
주 키는 모든 키들 중에서 가장 중요한 키다.
1. 주 키 필드는 데이터베이스 구조 전체에 걸쳐 테이블을 배타적으로 식별하고, 다른 테이블들과의 관계를 설정하는 것을 도와준다.
2. 주 키 값은 테이블 내의 주어진 레코드를 유일하게 식별하고, 전체 데이터베이스에 걸쳐 이 레코드를 배타적으로 나타낸다. 이것은 또 이중 레코드들로부터 보호해준다.
주 키는 후보 키와 정확하게 같은 요소들을 따라야만 한다.
주 키의 요소들
- 다중 부분 필드일 수 없다.
- 유일한 값들을 포함해야만 한다.
- 널 값을 포함할 수 없다.
- 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
- 그 값이 전체 또는 부분적으로 선택적이지 않다.
- 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
- 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 식별해야만 한다.
- 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다.
- 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.
주 키의 선택을 끝내기 전에, 주 키가 다음의 특별한 요소를 완전히 따르도록 확인하는 것이 반드시 필요하다.
- 그 값은 주어진 레코드 내의 각 필드의 값을 배타적으로 식별해야만 한다.
주 키를 설정하기 위한 규칙들
- 각 테이블은 단지 하나의 주 키를 가져야만 한다.
- 데이터베이스 내의 각각의 주 키는 반드시 유일해야만 한다.
대체 키
주 키로 사용하기 위한 하나의 후보 키를 선택했다면 나머지 키들은 대체(alternate) 키들로 지정할 수 있다. 이 키들은 RDBMS 프로그램에서 유용할 수 있는데, 이들이 테이블 내의 특정 레코드를 유일하게 식별하는 대체 수단을 제공하기 때문이다. 설계 작업에서는 대체 키에 관심이 없겠지만 RBDMS프로그램에서 데이터베이스를 구현하면서 한 번 더 그것들과 작업하게 될 것이다.
비 키
비 키(non-key)는 후보, 주, 대체 또는 외래 키로 지정되지 않은 필드다. 이것의 유일한 목적은 테이블 주제의 특성을 나타내는 것이고, 그 값은 주 키에 의해 결정된다. 비 키를 위해서는 특별한 지정이 없으므로, 테이블 구조에서 이것을 특별히 표시할 필요는 없다.
테이블 수준의 무결성
이 종류의 무결성은 전반적인 데이터 무결성의 주요 구성 요소이고, 다음과 같은 것들을 보장한다.
- 테이블 내에 이중 레코드들이 없다.
- 주 키는 테이블 내의 각 레코드들을 배타적으로 식별한다.
- 모든 주 키 값은 유일하다.
- 주 키 값은 널이 아니다.
초기 테이블 구조 검토하기
기초적인 테이블 정의가 완료되면 진행된 작업을 검토하기 위해 사용자 및 관리자들과 면담을 수행할 필요가 있다. 면담에서는 다음과 같은 작업을 수행한다.
- 적절한 주제들이 데이터베이스에 표현되는 것을 확인한다.
- 테이블 이름과 테이블 설명이 모든 사람에게 의미가 있도록 한다.
- 필드 이름들이 모든 사람에게 적합하고 의미가 있도록 한다.
- 모든 적절한 필드들이 각 테이블에 할당되었는지 검증한다.
'소프트웨어 공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 테이블 관계는 왜 중요한가 (0) | 2021.08.23 |
---|---|
[데이터베이스] 필드 명세 (0) | 2021.08.23 |
[데이터베이스] 필드 정하기 (0) | 2021.08.23 |
[데이터베이스] 테이블 정하기 (0) | 2021.08.23 |
[데이터베이스] 임무 목표 정의하기 (0) | 2021.08.23 |