도서명 : 아는 만큼 보이는 데이터베이스 설계와 구축- 이춘식 지음
선정된 PRIMARY KEY가 업무적으로 발생하는 자료의 유일성을 보장하는가?
선정된 PRIMARY KEY는 효율적인 모습을 가지고 있는가?
자료의 발생 유형이 유사한 엔티티는 통합되었는가?
독립된 엔티티타입이나 엔티티타입의 그룹은 존재하지 않는가?
병합 또는 분리되어야 할 엔티티 타입은 존재하지 않는가?
추가적으로 도출되어야 하거나 불필요한 엔티티 타입은 없는가?
엔티티 타입이 주변 여러 엔티티 타입의 공통 엔티티 타입인 경우 자료 원천이 어느 엔티티 타입인지 추적 가능한가?
PRIMARY KEY의 순서는 시스템의 성능을 고려하여 적절한 순서로 정의되어 있는가?
반정규화된 속성은 식별되는가?
반정규화는 시스템 복잡도와 성능을 고려하여 적절하게 이루어졌는가?
동일 명칭을 가지는 속성의 타입과 크기는 동일한가?
내부적인 속성을 가지고 있는 속성은 존재하지 않는가?
병합되어야 할 속성은 존재하지 않는가?
전후 레코드 간 영향을 미칠 수 있는 속성은 없는가?
감사, 통계 등을 고려하여 속성이 정의되었는가?
엔티티타입 간의 관계가 M:N인 속성은 없는가?
엔티티타입 간의 관계는 업무적 흐름과 규약이 일치하는가?
업무적 흐름에 비추어 미도출된 관계는 없는가?
관계에 대한 표현은 적절한 수준에서 이루어졌는가?
도메인이 적절히 정의되어 관리되고 있는가?
도메인의 변경에 따라 속성이 변경되고 있는가?
데이터 모델의 용어가 일관성을 유지하고 있는가?
한 엔티티는 중복과 누락이 있을 수가 없음.
즉, 동일한 PK를 가질 수 없거나, PK의 속성이 Null을 허용할 수 없음
엔티티 무결성 : Primary Key, Unique Index
참조 무결성 : Foreign key
속성 무결성 : CHECK, NULL/NOT NULL, DEFAULT
사용자 정의 무결성 : Trigger, User Define Data Type
1. Primary Key
2. Unique Index
다중의 보조 키 개념을 지원함
Primary Key와 마찬가지로 지정된 컬럼들의 유일성이 위배되지 않음을 보장함
3. Foreign Key
테이블 간의 논리적 관계가 유지됨을 보장함
Foreign Key 값은 반드시 참조하는 테이블의 Primary Key 값으로 나타나야 함
Foreign Key 값은 Null값을 가질 수 있음
Cascaded Option : Master 삭제 시 레코드가 함께 삭제됨
Nullified Option : Master 삭제 시 해당 값을 Null로 세팅함
Restricted Option : Foreign Key가 존재하면 Master 레코드를 삭제할 수 없음.
4. Data Type
5. Check 제약
6. Default
7. Trigger
테이블의 내용을 변경하려는 특정 사건(DB 연산)에 대해서 DBMS가 미리 정의된 일련의 행동(DB 연산)들을 수행하는 연산 메커니즘
DBMS 서버에 의해 자동적으로 호출됨
데이터에 대한 변경을 시도할 때마다 자동적으로 호출됨(데이터의 변경 전 상태와 변경 후의 상태를 사용)
트랜잭션의 철회(Rollback)와 같은 동작을 수행할 수 있음
저장 프로시져의 특별한 형태로서 SQL의 모든 기능을 이용할 수 있음
참조 무결성을 위해 사용될 수도 있음. 참조 무결성이 위배되는 경우에 원하는 동작을 하도록 트리거를 구성하면 됨.