정보 처리/데이터베이스

데이터 모델링 - 모델의 검토

본클라쓰 2012. 4. 12. 09:13

 

엔티티타입 검토

 

 

1. 선정된 PK가 업무적으로 발생하는 자료의 유일성을 보장하는가?

 

PK는 엔티티타입 내에 저장/관리되는 자료의 유일성을 식별하기 위한 것이다. 선정된 PK의 오류는 업무 분석이 구체화되면서 초기에 예측했던 주식별자가 유일성의 요건을 충족하지 못할 때 주로 발생한다.

 

또한, 필요 이상의 항목을 PK로 선정하는 경우도 오류이다.

 

 

2. 선정된 PK는 효율적인 모습인가?

 

PK는 SQL 등을 통해 데이터의 입력, 수정, 조회, 삭제 등을 처리할 때 SQL 전반에 걸쳐 매우 비번히 사용되는 속성이다. 보통 PK를 복잡하게 선정함으로써 업무 전체적으로 엔티티타입에 PK가 복잡해지는 경우이다. PK가 단순해지면 복잡한 SQL 문장이 훨씬 더 단순해질 수 있다.

 

 

3. 독립된 엔티티타입이나 엔티티타입의 그룹은 없는가?

 

독립된 엔티티타입이나 엔티티타입 그룹의 존재는 업무 분석이 미흡한 것으로 의심할 수 있다. 예외로 코드 엔티티와 통계 엔티티, 시스템 관리 엔티티타입이 있다.

 

 

4. 병합 또는 분리되어야 하거나 불필요한 엔티티타입은 없는가?

 

연속적인 업무 절차가 갖는 엔티티타입의 병합으로 인해 발생하는 문제이다. 연속적인 업무 절차를 갖는 엔티티타입은 분리하여 관리하는 것이 효율적이다.

 

 

5. 추가적으로 도출되어야 하거나 불필요한 엔티티타입은 없는가?

 

중복된 엔티티타입은 제거하고, 업무적으로 상호 M:N의 관계를 가지는 엔티티타입간의 관계는 추가 관계 엔티티가 필요하다.

 

 

6. 엔티티타입이 주변 여러 엔티티타입의 공통 엔티티타입인 경우 자료 원천이 어느 엔티티타입인지 추적할 수 있는가?

 

주로 공통 엔티티타입과 주변 엔티티타입과의 관계가 수퍼타입/서브타입 관계일 때 발생한다. 수퍼타임/서브 타입 모델에서 자료 원천 구분 표시가 없는 경우이다.

 

 

7. PK의 순서는 시스템의 성능을 고려하여 적절한 순서로 정의되어 있는가?

 

PK 조합 우선순위는 대체로 다음 규칙을 따라야 한다.

 

첫째, 모든 SQL에서 항상 사용되는 속성은 우선순위를 제일 높게 해야한다.

둘째, 분포도가 좋은 속성은 PK 선정에서 우선순위가 높다.

셋째, '='조회를 하는 컬럼은 PK 조합 시 우선순위가 높다.

 

 

 

속성 검토

 

 

1. 반정규화된 속성은 식별되는가?

 

속성의 명명은 정규화 시점을 기준으로 이루어진다. 정규화가 완성되면 모든 속성은 전체 ERD에 걸처 하나만 존재하게 되며, 이 시점을 기준으로 속성이 명명된다.

 

 

2. 반정규화는 시스템 복잡도와 성능을 고려하여 적절하게 이루어졌는가?

 

반정규화를 하는 이유는 검색 시 데이터베이스의 성능을 빠르게 하기 위함이다.