E-R Diagram Mapping 이란?
- E-R Diagram을 관계형 스키마로 매핑하는 단계별 알고리즘
• 1단계: 강력한 엔터티 유형 및 단일 값 속성
• 2단계: 약한 엔터티 유형 및 단일 값 속성
• 3단계: 바이너리 1:1 관계 유형
• 4단계: 일반 바이너리 1:N 관계 유형
• 5단계: 이진 M:N 관계 유형
• 6단계: 삼항 이상 관계 유형
• 7단계: 다중 값 속성
1단계 : 강력한 엔터티 유형 및 단일 값 속성
- ER 스키마의 각 강력한 엔터티 유형 E에 대해 관계 R이 생성된다.
- E의 모든 단순 속성을 관계 R에 포함 시킨다.
- 복합 속성의 모든 단순 속성을 포함 (복합 속성 말고 단순 속성을 포함 시킴)
- 다치 속성은 포함X, 유도된 속성도 포함 X
- E의 기본 키는 관계 R의 기본 키가 된다.
예시)
EMPLOYEE(Empno, Empname, Title, City, Ku, Dong, Salary)
PROJECT(Projno, Projname, Budget)
DEPARTMENT(Deptno, Deptname, Floor)
SUPPLIER(Suppno, Suppname, Credit)
PART(Partno, Partname, Price)
2단계 : 약한 엔터티 유형 및 단일 값 속성
- 소유 엔티티 유형 E가 있는 약한 엔티티 유형 W 각각에 대해 관계 R이 생성된다.
- W의 모든 단순 속성을 관계 R에 포함 시킨다.
- 복합 속성의 모든 단순 속성을 포함 (복합 속성 말고 단순 속성을 포함 시킴)
- 관계 R의 기본 키는 약한 엔터티 유형 W의 부분 키와 소유 엔터티 유형 E의 기본 키의 조합입니다.
예시)
DEPENDENT(Empno, Depname, Sex, Salary)
3단계 : 바이너리 1:1 관계 유형
- ER 스키마의 각 이진 1:1 관계 유형에 대해 S 및 T 역할을 수행하는 관계를 찾는다.
- S와 T 중 관계 유형에 완전히 참여하는 관계를 S의 역할을 하는 관계로 선택한다.
예시)
PROJECT(Projno, Projname, Budget, Manager, StartDate)
-> Manager는 역할, StartDate는 Manages 관계 타입의 속성
4단계 : 바이너리 1:N 관계 유형
- 바이너리 1:N 관계 유형의 경우 N 측의 엔터티 유형이 S 관계로 선택된다.
- 선택되지 않은 다른 한쪽의 엔티티 타입의 primary key는 S 관계의 foreign key로 포함된다.
- 관계 유형의 모든 단순 속성은 S 관계에 포함 시킨다.
예시)
EMPLOYEE(Empno, Empname, Title, City, Ku, Dong, Salary, Dno)
-> Dno는 foreign key
PART(Partno, Partname, Price, Subpartno)
-> circular 관계임
5단계 : 이진 M:N 관계 유형
- 관계 R 생성
- 관계에 참여하는 엔터티 타입의 primary key는 관계 R에 외래 키로 포함되며,
- 각 엔티티의 primary key의 조합이 관계 R의 primary key가 된다.
예시)
WORKSFOR(Empno, Projno, Duration, Responsibility)
6단계 : 삼항 이상 관계 유형
- 3항 이상의 각 관계 타입에 대해 관계 R이 생성된다.
- 관계 타입에 참여하는 모든 엔터티 타입의 primary key를 관계 R의 foreign key로 포함시킨다.
- foreign key의 조합이 관계 R의 primary key가 된다.
- 만약 카디날리티가 1:N:N 일 경우, 카디널리티가 1인 관계에 참여하고 있는 엔티티의 pk 만 빼고 나머지 엔티티의 pk가 관계 R의 foreign key가 된다.
예시)
SUPPLY(Suppno, Projno, Partno, Quantity)
-> Quantity는 관계의 속성임
7단계 : 다중 값 속성
- 각 다중 값 속성에 대한 관계 R 을 생성한다.
- 다중값 속성에 대한 관계 R에 다중 값 속성을 속성으로 넣는다.
- 다중 값 속성을 갖는 엔티티 타입의 primary key가 관계 R의 foreign key가 된다.
예시)
PROJLOC(Projno, Location)
최종 스키마
- EMPLOYEE(Empno, Empname, Title, City, Ku, Dong, Salary, Dno)
- PROJECT(Projno, Projname, Budget, Manager, StartDate)
- DEPARTMENT(Deptno, Deptname, Floor)
- SUPPLIER(Suppno, Suppname, Credit)
- WORKS-FOR(Empno, Projno, Duration, Responsibility)
- PART(Partno, Partname, Price, Subpartno)
- SUPPLY(Suppno, Projno, Partno, Quantity)
- PROJLOC(_Projno, Location)