이번 글에서는 두 엔티티가 맺는 관계에 걸 수 있는 다양한 제약조건에 대해 정리해본다.
Key Constraints
키 제약조건은 다른 엔티티와의 관계에 참여함에 있어서 최대 하나의 엔티티와만 관계를 맺을 수 있음을 나타내는 제약조건이다.
즉, 지금 현재 엔티티의 키가 다른 엔티티의 키와 관계를 맺을 때 하나의 엔티티하고만 관계를 맺을 수 있다는 것이다.
키 제약조건은 관계를 그을 때 화살표로 나타냄으로써 명시할 수 있다.
그림과 같은 관게를 보자.
그림은 직원이 부서를 관리하는 관계를 나타내고 있다.
이때 부서는 Manage 라는 관계에 대해 키 제약조건이 걸려있다.
이는 부서가 Manage 관계에 참여함에 있어서 최대 1개의 엔티티하고만 Manage 관계를 맺는다는 것을 의미한다.
자연어로 표현한다면, 부서 입장에서는 다른 직원에 의해 '관리되므로',
하나의 부서를 관리하는 사람은 최대 1명이라고 해석할 수 있다.
이때 직원 입장에서는 별다른 제약 조건이 없으므로, 하나의 직원이 여러 부서를 관리할 수도, 하나의 부서를 관리할 수도 있다.
두 엔티티 사이의 관계는 키 제약조건을 어떻게 거는지에 따라 위와 같이 4가지 종류의 관계가 형성될 수 있다.
첫 번째 관계는 1:1 관계로, 두 엔티티 모두에 키 제약조건이 걸린 상황이다.
두 번째 관계는 1:N 관계로, 왼쪽 엔티티에만 키 제약조건이 걸린 상황이다.
세 번째 관계는 N:1 관계로, 오른쪽 엔티티에만 키 제약조건이 걸린 상황이다.
네 번째 관게는 N:M 관계로, 두 엔티티 모두 제약조건이 없는 상황이다.
위에서 본 예시 다이어그램은 의미상으로는 1 : N 관계를 나타낸다.
지금 보이는 4가지 관계의 예시 그림만 놓고 보았을 때는 첫번째, 두번째 그림이 모두 위 그림 상황에 맞는 상황이다.
왼쪽이 직원, 오른쪽이 부서라고 했을 때, 부서에는 부서를 관리하는 사람이 없거나 1명만 존재하는 상황이다.
이 상황을 만족하는 그림은 첫번째, 두번째 그림이다.
Participation Constraints
한국어로는 '전체 참여 조건' 이라고도 한다.
말 그대로, 이 엔티티 셋에 있는 모든 엔티티들이 관계에 참여해야 하는지를 나타내는 제약 조건이다.
이 그림에서 '굵은선' 으로 표시한 것이 전체 참여조건을 나타낸다.
전체 참여조건은 모든 엔티티가 관계에 참여해야 함을 의미하기 때문에, 만약 '최대 하나'와만 관계를 맺는 키 제약조건과 함께 사용된다면, 그 엔티티는 반드시 1개의 관계를 갖는다는 것을 명시하게 된다. (이때는 '최소 하나' 와 같은 표현은 사용할 수 없다.)
다이어그램을 보면 모든 Departments 는 Manages 관계에 참여하고 있으므로, 모든 부서에는 관리자가 존재해야 한다.
모든 Employees, Departments 는 Works_In 관계에 참여하고 있으므로, 모든 직원은 하나 이상의 부서에서 일을 해야 하고, 모든 부서는 한 명 이상의 일하는 사람이 필요하다.
이 다이어그램을 자연어로 표현해보자.
Manage 라는 관계를 두고 보는 경우,
직원은 부서를 관리할 수도 있고 관리하지 않을 수도 있지만 (부분 참여)
모든 부서는 반드시 관리자가 필요하고 (전체 참여), 이때 관리자는 최대 1명만 존재할 수 있다. (키 제약조건)
이 두 조건을 합치면 모든 부서에는 1명의 관리자가 존재한다는 것을 의미하게 된다.
따라서 Manages 테이블에는 반드시 모든 종류의 did 값을 갖도록 부서의 개수만큼의 '관계 데이터'가 들어있어야 한다. (전체 참여)
이때 (null, 1) 과 같은 관계라면 1번 부서에는 관리자가 없다는 것이고, 이런 관계 데이터는 들어갈 수 없다.
(직원 - 부서) 의 실제로 '관리'가 일어나는 관계만 존재해야 하는 것이 전체 참여 조건의 특징이다.
Works_In 이라는 관계를 두고 보는 경우,
모든 직원은 부서에서 일을 해야 하고 (전체 참여), 이때 여러 부서에서 일할 수도 있다.
모든 부서는 반드시 최소 1명의 직원이 존재해야 하고 (전체 참여), 여러 명의 직원이 존재할 수 있다.
따라서 다시 이 그림으로 돌아온다면, Total Participation 조건에 맞는 그림은 (오른쪽 엔티티 기준) 2번째 그림이다.
만약 왼쪽 employees 에 가는 화살표 실선이 있고, 오른쪽 departments 에는 가는 실선만 있다고 해보자.
이때는 직원은 관계를 맺지 않거나, 최대 1개만 맺고 부서는 자유롭게 관계를 여러 명과 맺어도 되고 안맺어도 된다.
이때는 1, 3 그림이 해당하는 관계일 것이다.
'CS > 기초데이터베이스' 카테고리의 다른 글
[데이터베이스] 6. 개념적 데이터베이스 설계 (0) | 2024.10.14 |
---|---|
[데이터베이스] 5. 다양한 관계 (동일 엔티티 셋 내 관계, 약개체, ISA 계층, 집단화) (0) | 2024.10.14 |
[데이터베이스] 3. ER-Model (Entity, Relationship, Key) (0) | 2024.10.08 |
[데이터베이스] 2. 트랜잭션 (4) | 2024.10.04 |
[데이터베이스] 1. 데이터베이스와 DBMS 개념 (0) | 2024.09.28 |