앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.10.21 - [Computer Science/데이터 베이스] - [데이터베이스] ER 모델(관계, Relationship)
1. 관계의 제약 조건
- 예를 들어 모든 직원은 정확히 한 부서에서 근무해야 한다. 혹은 몇몇 직원은 그들의 부서를 관리한다. 같은 제약 조건을 ER 모델에서 표시할 수 있을까요?
- 이때 사용되는 것이 Cardinality ratio와 Participation constraint입니다.
2. Cardinality Ratio
- Cardinality Ratio는 엔티티가 참여할 수 있는 최대 관계 인스턴스들의 수를 명시합니다.
- Cardinality Ratio에는 1:1, 1:N, N:M 비율이 존재합니다.
- 1:1은 각 엔티티가 관계에 한 번만 참여한다는 뜻이고, N:M은 각 엔티티가 관계에 제한 없이 참여할 수 있음을 뜻합니다.
- 위의 예시에서 모든 직원은 하나의 부서에서 근무해야 한다의 관계는 WORKS_ON이 됩니다.
- 이때 관계에 참여하는 엔티티는 EMPLOYEE와 DEPARTMENT입니다.
- 따라서 EMPLOYEE : DEPARTMENT의 Cardinality Ratio는 N:1이 됩니다.
- 이는 ER 모델에서 직접 명시함으로써 표현됩니다.
3. Participation Constraint
- 참여 제약 조건인 Participation Constraint는 앞선 Cardinality Ratio와는 반대 개념입니다.
- 위의 Cardinality Ratio는 관계에 참여하는 엔티티의 최대 개수를 명시한다면, 이 Pariticipation Constraint는 최소 조건을 명시합니다.
- Participation Constraint에는 total participation과 partial participation이 존재합니다.
- 모든 직원은 하나의 부서에서 근무해야 한다를 다시 예시로 들어봅시다.
- 이때 전체 직원은 반드시 WORKS_ON 관계에 참여해야 하므로, total participation 제약 조건을 가지고 있습니다.
- ER 모델에서는 total participation은 이중선으로 연결하고, partial participation은 단일선으로 연결하여 나타냅니다.
4. 관계 타입의 애트리뷰트
- 관계 타입도 엔티티 타입처럼 애트리뷰트를 가질 수 있습니다.
- 예를 들어 한 사원이 근무하는 주당 시간을 기록하기 위해 WORKS_ON 관계 타입에 애트리뷰트 Hours를 포함시킬 수 있습니다.
- 하지만 관계 애트리뷰트는 1:1 혹은 1:N 관계 타입은 참여하고 있는 엔티티 타입들 중 하나로 통합될 수 있습니다.
- 왜냐하면 엔티티에 의해 독립적으로 결정될 수 있기 때문입니다.
- 2번 목차의 예시처럼 EMPLOYEE와 DEPARTMENT는 N:1 관계입니다. 이는 N 명의 직원이 1 개의 부서에 근무한다를 의미합니다.
- 1개의 부서는 N명의 직원을 관리하기 때문에 부서 엔티티에는 관계 애트리뷰트가 통합될 수 없습니다.
- 1명의 직원은 오로지 1개의 부서에만 참여하기 때문에 직원 엔티티에 관계 애트리뷰트가 통합될 수 있습니다.
- 하지만 M:N 관계 타입에서는 관계 인스턴스에 참여하는 엔티티들의 조합에 의해 결정되는 애트리뷰트가 존재합니다.
- 따라서 위의 관계 타입은 어느 한쪽의 엔티티에 의해 독립적으로 결정되지 않으므로, 관계 애트리뷰트로 명시해야 합니다.
5. (min, max)
- Cardinality Ratio, Participation Constraint를 통합하여 (min, max)로 표현할 수 있습니다.
- min이 0이면 부분 참여를 의미하고, min이 0보다 크면 전체 참여를 의미합니다.
- 이때 max는 Cardinality Ratio를 바꿔서 적는 방법으로 표시합니다.
- 직원과 부서를 다시 예시로 들면, Carinality Ratio는 N:1이고, 직원은 전체 참여 조건을 가지고 있습니다.
- 이를 (min, max)로 바꾸면, 직원 : 부서 = (1, 1) : (1, N)이 됩니다.
- 따라서 직원과 부서는 전부 관계에 전체 참여를 해야 합니다.
- 또한 직원은 최대 1번 관계에 참여해야 하지만, 부서는 최대 N번 관계에 참여할 수 있습니다.
참고
경북대학교 컴퓨터학부 COMP0322-004 데이타베이스 수업
DATABASE SYSTEMS 7th / Elmasri, Navathe 저 / PEARSON / 2019년
다음 글에서는 약한 엔티티 타입(Weak Entity Type)에 대해 알아보겠습니다.
2023.10.25 - [Computer Science/데이터 베이스] - [데이터베이스] 약한 엔티티 타입(Weak Entity Type)
감사합니다.
지적 환영합니다.
'Computer Science > 데이터 베이스' 카테고리의 다른 글
[데이터베이스] 관계 모델(Relation Model) (0) | 2023.10.25 |
---|---|
[데이터베이스] 약한 엔티티 타입(Weak Entity Type) (0) | 2023.10.25 |
[프로그래머스 - Oracle] 131118 - 서울에 위치한 식당 목록 출력하기 (1) | 2023.10.21 |
[데이터베이스 - Oracle] 164673 - 조건에 부합하는 중고거래 댓글 조회하기 (1) | 2023.10.21 |
[프로그래머스 - Oracle] 133025 - 과일로 만든 아이스크림 고르기 (1) | 2023.10.21 |