2008. 9. 13. 01:55ㆍStudy/Database
1. 키는 왜 중요한가
1) 테이블 내의 각 레코드가 정확하게 식별되도록 보장한다.
2) 다양한 종류의 무결성을 설정하고 강화하는 것을 도와준다.
키들은 테이블 수준의 무결성과 관계 수준의 무결성의 주요 구성 요소이다.
3) 테이블 관계를 설정하도록 해 준다.
2. 각 테이블에 키 설정하기
키는 후보(candidate) 키, 주(primary) 키, 외래(foreign) 키, 비(non-keys) 키라는 네 종류가 있고, 키의 종류는 테이블 내에서의 기능을 결정한다.
1) 후보 키
테이블 주제의 단일 인스턴스를 유일하게 식별해 주는 하나의 필드 또는 필드 집합이다. 각 테이블은 하나 이상의 후보 키를 가져야한다.
- 후보 키의 요소들
a) 다중 부분 필드일 수 없다.
b) 유일한 값들을 포함해야 한다.
c) 널 값을 포함할 수 없다.
d) 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
e) 그 값이 전체 또는 부분적으로 선택적이지 않다.
f) 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
g) 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 식별해야만 한다.
h) 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다.
i) 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.
- 인위적인 후보키
테이블이 후보 키를 포함하지 않을 때, 인위적인 후보 키를 만들고 사용할 수 있다.
2) 주 키
- 주 키 필드는 데이터베이스 구조 전체에 걸쳐 테이블을 배타적으로 식별하고, 다른 테이블들과의 관계를 설정하는 것을 도와 준다.
- 주 키 값을 테이블 내의 주어진 레코드를 유일하게 식별하고, 전체 데이터베이스에 걸쳐 이 레코드를 배타적으로 나타낸다. 이것은 또 이중 레코드들로부터 보호해 준다.
- 주 키를 선택하기 위한 지침
a) 후보 키와 복합 후보 키를 가지고 있다면, 단순한 후보 키를 선택한다.
b) 자신의 이름에 테이블의 이름 일부를 포함하는 후보 키를 선택한다.
- 명확성을 위한 주 키의 요소
a) 다중 부분 필드일 수 없다.
b) 유일한 값들을 포함해야한다.
c) 널 값을 포함할 수 없다.
d) 그 값이 조직의 보안 또는 비밀 규칙을 깨뜨리도록 할 수 없다.
e) 그 값이 전체 또는 부분적으로 선택적이지 않다.
f) 유일성을 정의하기 위해 필요한 최소 개수의 필드들을 포함한다.
g) 그 값들이 테이블 내의 각 레코드들을 유일하게 그리고 배타적으로 실별해야만 한다.
h) 그 값이 주어진 레코드 내의 각 필드의 값을 구체적으로 식별해야만 한다.
i) 그 값은 아주 드물고 극단적인 경우에만 수정될 수 있다.
3) 대체 키
주키를 제외한 나머지 후보키는 레코드를 유일하게 식별하는 대체 수단을 제공해준다. 따라서 이들은 AK 또는 CAK(Composite Alternate Key)로 표시한다.
4) 비 키
비 키는 후보, 주 대체 또는 외래 키로 지정되지 않는 필드이다. 비 키의 목적은 테이블 주제의 특성을 나타 내고 주 키에 의해 결정된다.
3. 테이블 수준의 무결성
테이블 수준의 무결성은 전반적인 데이터 무결성의 주요 구성 요소이고 다음을 보장한다.
- 테이블 내에 이중 레코드들이 없다.
- 주 키는 테이블 내의 각 레코드들을 배타적으로 식별한다.
- 모든 주 키 값은 유일하다.
- 주 키 값은 널이 아니다.
4. 초기 테이블 구조 검토하기
진행된 작업을 검토하기 위해 사용자 및 관리자 면담을 수행한다.
- 적절한 주제들이 데이터베이스에 표현되는 것을 확인한다.
- 테이블 이름과 테이블 설명이 모든 사람에게 의미가 있도록 한다.
- 필드 이름들이 모든 사람에게 적합하고 의미가 있도록 한다.
- 모든 적절한 필드들이 각 테이블에 할당되었는지 검증한다.
--------------------------
출처 - 위 글은 byung8lim의 다음블로그 Blog.daum.net/byung8lim에서 가져온 것입니다.