- Database Relation Type
종류
구분 | 설명 | 예시 |
---|---|---|
관계 차수
(카디널리티) |
두 엔티티간 관계에서 참여자 수를 표현 |
|
선택 관계 | 엔티티간 상호 필수 존재 여부를 표현 |
|
식별 관계 | 한 엔티티의 PK가 다른 엔티티에서 PK/FK여부를 구분 |
|
상속 관계 | 두 엔티티간 상하 상속 관계 |
|
관계 차수
일대일(1:1) 관계
- 하나의 부모 엔티티에 연결된 자식 엔티티는 하나밖에 올 수 없는 관계
- ex) 사원번호 - 주민등록번호
- 사원번호, 주민등록번호 모두 고유한 사원을 가리킨다. 사원번호 하나엔 하나의 주민등록번호만 대응될 수 있다.
- 하나의 테이블로 구성한다.
일대다(1:N) 관계
- 하나의 부모 엔티티에 연결된 자식 엔티티가 여러 개가 될 수 있는 관계
- ex) 부서 - 사원
- 부서에 여러 사원이 속한다. 사원은 여러 부서를 가질 수 없다.
- 두개의 테이블로 구성하고 FK를 이용한다.
다대다(N:M) 관계
- 하나의 부모 엔티티와 연결된 자식 엔티티가 여러 개가 될 수 있고 여러 개의 부모 엔티티와 연결된 자식 엔티티가 하나가 될 수 있는 관계
- ex) 사원 - 업무
- 한명의 사원이 A업무, B업무를 동시에 할 수도 있고, A업무를 여러 사원이 같이 할 수도 있다.
- 두개의 테이블에 관계 테이블이 하나 더 필요하다.(3개)
선택 관계
- 선택적 관계: 한 엔티티가 다른 엔티티에 속할 수도 있고 안 속할 수도 있다.
- ex) 직원 - 파견지: 직원은 파견지에 속할수도 있고 안 속할 수도 있다.
- 강제적 관계:
- ex) 직원 - 부서: 직원은 반드시 하나의 부서에 속하여야 한다.
식별 관계
- 식별 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 주식별자로 상속
- ex) 사원 - 가족관계: 사원의 가족관계는 사원 PK를 주식별자로 이용한다.
- 비식별 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 일반속성으로 상속
- ex) 사원 - 프로젝트: 사원은 프로젝트의 담당자라는 속성으로 이용된다.
상속 관계
- 배타적 관계: 슈퍼타입의 엔티티가 반드시 하나의 서브타입에는 속하는 관계
- ex) 직원 - 정직원/계약직원: 직원은 정직원이거나 계약직원 둘 중 하나이다.
- 포함 관계: 슈타타입의 엔티티가 두 개 이상의 서브타입에 포함될 수 있는 관계
- ex) 직원 - 개발자/기획자: 직원은 개발자이면서 기획자일수도 있다.