정보 처리/데이터베이스

데이터 모델링 - 모델의 검토(2)

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

 

데이터 모델의 검토란 개념적 설계가 마무리 된 영역별로 작업한 ERD를 통합하여 통합된 모델에 문제가 없는지를 검토하는 단계입니다.

 

 

 

엔티티(개체) 검토

 

엔티티를 검토할 때는 현실 세계의 정보를 효과적으로 관리할 수 있는 구조인가를 살펴보고 중복을 제거합니다.

  

 

비디오라는 개체가 위와 같이 정의되어 있다고 가정하면 비디오는 같은 영화를 다수 보유할 수 있습니다. 이 때 제목, 감독, 장르, 제작사, 국산/외화 구분 속성은 중복이 발생하게 됩니다. 이에 '비디오'라는 엔티티를 효과적으로 관리할 수 있게 엔티티를 재정의합니다. 

 

이렇게 비디오와 작품을 분리하고 관리하면 관리의 효율성을 높일 수 있습니다. 또한, 유사한 내용을 관리하는 엔티티는 없는가를 살펴보고 통합시킵니다. 동일한 내용을 서로 다른 엔티티로 표현했을 경우 엔티티를 하나로 통합시킵니다.  

 

 

위와 같이 나누어진 엔티티가 같은 내용을 포함하고 있을 때는 엔티티를 하나로 통합합니다.  엔티티를 분석하다 보면 통합되거나 분리되어야 할 엔티티를 구분할 필요가 있습니다. 이 때는 주식별자를 기준으로 구분합니다. 주식별자는 주식별자 원칙에 따라 올바르게 선정되었나, 주식별자는 최소한의 애트리뷰트가 포함되어 있지 않는가, 주식별자에 속하는 애트리뷰트가 너무 많지 않은가를 검토하여 주식별자를 조정하며, 주식별자를 통해 엔티티의 관계를 파악하고 통합과 분리를 실시합니다.  엔티티가 1:1 대응관계에 있는 같은 주식별자를 사용할 때는 하나의 테이블로 통합할 수 있습니다.

 

 

사원 엔티티와 사원정보 엔티티는 사원번호를 주식별자로 사용하는 엔티티들입니다. 이 때 엔티티를 통합할 수 있습니다. 통합과 분리는 각각의 장/단점을 가지고 있습니다.

 

통합을 실시하면 데이터베이스의 성능이 향상되며 질의문이 간단해집니다. 하지만, 관리의 비효율성이 발생할 수 있습니다. 분리는 전체 업무를 이해하는데 도움이 되며, 추가적인 사항이 발생하여 속성을 추가할 때 유연하고 모델의 확장성이 좋아집니다. 하지만, 엔티티의 복잡성이 증가하며, 많은 조인이 필요로 하기 때문에 데이터베이스 성능에도 영향을 미칩니다. 분리가 필요한 경우에는 데이터의 접근하는 범위가 서로 다른 경우에 분리하는 것이 좋습니다.

 

 

위와 같은 엔티티는 아래와 같이 분리하는 것이 좋습니다.

 

 

 

 

애트리뷰트 검토

 

각각의 엔티티의 애트리뷰트의 이름은 같은 성격을 가지고 있다고 해도, 같은 애트리뷰트 이름을 사용하지 않습니다. 엔티티의 애트리뷰트의 이름이 중복되는 것이 이다면 다르게 표현해야 합니다.

 

 

위 사원정보, 제품정보 두 엔티티는 '이름'이라는 속성이 같은 이름을 사용하고 있습니다. 이 두 속성을 구별하기 위해 각각의 엔티티의 '이름' 속성명을 다르게 표현합니다.  또한, 애트리뷰트의 날짜 정보를 저장하는 애트리뷰트가 올바른지 확인합니다.

 

 

입고정보의 엔티티에 날짜 정보가 따로 저장되어 있습니다. 날짜 정보를 날짜형으로 변경하여 하나도 통합하여 관리합니다.

 

애트리뷰트들 중에서 값을 직접 저장하는 것보다 코드 엔티티를 만들고 코드 값을 저장하는 것이 바람직하다면 코드화해 엔티티를 구분하여 코드값을 저장해 코드값을 가져와 사용합니다. 

 

 

또한, 검토 단계에서 애트리뷰트를 추가해 사용자에게 추가정보를 알려 줄 수 있게 변경할 수도 있습니다.

 

 

 

 

관계의 검토

 

다른 엔티티와 관계가 없이 독립적으로 존재하는 엔티티가 있다면 관계를 검토해야 한다. 통계 엔티티, 환경 변수 엔티티 등을 제외하고는 엔티티들은 상호 관계를 가져야 한다. 또한, 관계를 너무 복잡하게 맺었다면 관계를 해소시킨다.

 

 

 

  

프로세스 모델과의 통합 검토

 

데이터 모델의 검토가 끝나면 프로세스 모델과 통합하여 검토를 실시한다. 이를 상관 모델링이라고 하며 모든 엔티티를 CRUD 매트릭스를 통해 분석한다. CRUD란 Create, Read, Update, Delete 를 말하며 모든 엔티티는 최소한 생성(C)와 사용(R) 프로세스가 반드시 있어야 한다.