데이터 모델에서 관계는 업무의 흐름을 나타내는 중요한 의미를 가지고 있습니다.
관계를 표현하지 않으면 어떻게 될까요?
- 업무의 구조와 흐름을 파악할 수 없습니다.
- PK의 구조를 정확하게 가져갈 수 없습니다.
- 효율적인 SQL 구문을 작성할 수 없습니다.
- 참조 무결성 제약 조건에 의한 데이터 참조 무결성 유지가 어렵습니다.
모든 엔티티타입은 관계를 가져야 합니다.
모든 엔티티타입은 다른 엔티티타입과 관계를 통해 발생되고 존재의 의미를 가지게 됩니다. 그러므로 데이터 모델링을 수행하였는데 관계가 하나 이상 존재하지 않은 엔티티탕비이 있다면 그 존재 이유를 의심해야 하며 다른 엔티티타입과의 관계가 미도출된 것은 아닌지 검증하여 반드시 관계를 찾아 연결해야 합니다.
관계가 생략되는 경우
- 코드성 엔티티타입을 표현하는 경우입니다.
- 코드성 엔티티타입의 모든 관계를 표현하게 되면 관계가 거미줄처럼 엉키므로 정해진 값만을 처리하는
코드의 특징을 고려하여 관계를 생략하고 물리적인 FK Constraint를 걸지 않더라도 참조 무결성이
깨지지 않습니다.
- 코드성 엔티티타입의 모든 관계를 표현하게 되면 관계가 거미줄처럼 엉키므로 정해진 값만을 처리하는
- 통계성 엔티티타입을 표현하는 경우입니다.
- 통계 엔티티타입은 온라인 시간대에 업무적인 흐름에 의해 변경되는 데이터가 아니라 운영 중인 데이터를 읽어 가공한 데이터이므로, 운영 중인 데이터와 관계를 설정하여 참조 무결성을 유지할 필요가 없습니다.
- 도출된 엔티티타입이 구축하고자 하는 시스템의 경계를 넘어 다른 시스템의 엔티티타입을 참조하거나 참조되는 경우입니다.
- 선택사항) 다른 시스템의 엔티티타입을 구축하고자 하는 데이터 모델의 서브젝트 에어리어를 구분하여 연계성을 표현할 수도 있으며 연관성을 파악하는 것에 도움이 됩니다.
참고 도서
- 아는 만큼 보이는 데이터베이스 설계와 구축
'[개발] 데이터베이스 > 이론' 카테고리의 다른 글
[RDB] 데이터 모델 검증 (0) | 2023.11.27 |
---|---|
[RDB] 용어사전과 도메인 (0) | 2023.11.26 |
[RDB] 엔티티타입 도출하는 방법 (0) | 2023.11.24 |
[RDB] 자기참조관계 모델링 기법 (1) | 2023.11.22 |
[RDB] Primary key와 Unique Index (0) | 2023.11.17 |