An ER Schema for COMPANY
The Relational Schema for COMPANY
Goals During ER-to-Relational Mapping
1) 모든 정보를 유지 (모든 attributes 포함)
2) 최대한 constraints를 유지 (모든 constraints를 relational model에서 유지될 수는 없음)
3) NULL 값들을 최소화 (이것이 logical에서 physical schema로 mapping하는 데 도움)
The ER-Relational Mapping Algorithm
Step 1: Mapping of Regular Entity Types
- ER schema에서 각 strong entity type E에 대해, 새로운 relation R을 생성하고, E의 모든 simple attributes를 포함시킨다.
- E의 key attributes 중 하나를 R의 primary key로 선택 (나머지는 SK(unique))
- 선택한 key가 composite한 경우, 선택한 key의 simple attributes의 set이 R의 primary key를 구성
- Example: The EMPLOYEE, DEPARTMENT, and PROJECT relations (mapped from the regular entities in the ER schema)
Step 2: Mapping of Weak Entity Types
- ER schema에서 각 weak entity type W에 대해, 새로운 relation R을 생성하고, W의 모든 simple attributes를 R의 attributes로 포함시킨다.
- 또한, owner entity type의 PK를 R의 FK로 포함시킨다.
- owner의 PK와 weak entity type W의 partial key의 조합이 R의 PK가 된다.
- Example: The DEPENDENT relation
- PK: {Essn(FK), Dependent_name(Partial key)}
Step 3: Mapping of Binary 1:1 Relationship Types
- ER schema에 있는 각 binary 1:1 relationship type R에 대해, 해당 relationship에 참여하는 relations S & T를 식별
3개의 가능한 options:
1) Foreign key approach (2 relations) option:
- 한 relation S를 선택 (R에서 total participation으로 참여하고 있는 entity type을 선택하는 것이 good)
- 다른 relation T의 PK를 S의 FK로 포함
- Example: The MANAGES relationship type in the ER schema
- Relation S: The DEPARTMENT entity type (total participation으로 참여하기 때문)
- Relation T: The EMPLOYEE entity type
- EMPLOYEE의 PK인 Ssn을 DEPARTMENT의 SK인 Mgr_ssn으로 가진다. (Mgr_ssn이 Ssn을 참조)
2) Merged relation (1 relation) option:
- 1:1 relationship type에 대한 mapping을 two entity types와 relationship을 single relation으로 합침으로써 수행
- entities가 서로 total participation인 경우 적절
3) Cross-reference or relationship relation (3 relation) option:
- relation S & T의 PKs를 cross-referencing하기 위해 새로운 relation U를 생성
- U의 PK는 S & T로부터의 FKs 중 하나
- 또 다른 FK는 U의 unique key
- 추가적인 join이 필요 -> 추가 정보를 얻기 위해 수행, overhead!
Step 4: Mapping of Binary 1:N Relationship Types
- 각 binary 1:N relationship type R에 대해, N-side에 있는 relation S를 선택
- relation T의 primary key를 S의 FK로서 포함
- 1:N relation type의 simple attributes를 S의 attribute로 포함
- Example: The WORKS_FOR relationship type in the ER schema
- Relation S: The EMPLOYEE entity type (N-side)
- Relation T: The DEPARTMENT entity type (1-side)
- EMPLOYEE가 DEPARTMENT의 Dnumber(PK)를 참조하기 위해 Dno(FK)를 가짐
Step 5: Mapping of Binary M:N Relationsihp Types
- 각 binary M:N relationship type R에 대해, 이를 표현할 새로운 relation U를 생성 (called relationship relation)
- relationship에 참여하는 entity types의 PKs를 U의 FK attributes로 포함하고, 포함한 FKs의 combination이 U의 PK를 구성
- M:N relationship type의 simple attributes를 U의 attributes로 포함
- Example: The WORKS_ON relationship type in ER
- FKs (Essn and Pno) -> EMPLOYEE & PROJECT relations으로부터 가져옴
- PK: {Essn, Pno}
- One attribute: Hours (WORKS_ON의 Hours attribute)
Step 6: Mapping of Multivalued Attributes
- 각 multivalued attribute A에 대해, 이를 표현할 새로운 relation U를 생성
- relation U는
- A에 해당하는 attribute,
- A를 attribute로서 가지는 entity type의 PK를 FK로,
- {A, K}를 PK로
가진다.
- Example: The Locations multi-valued attribute of Department
- Relation U: the DEPT_LOCATIONS relation
- A: DEPARTMENT entity type의 Locations로부터 가져온 Dlocation
- FK: DEPARTMENT entity type의 PK를 가져온 Dnumber
- PK: {Dlocation, Dnumber}
Step 7: Mapping of N-ary Relationship Types
- 각 n-ary relationship type R에 대해(n>2), 이를 표현할 새로운 relationship relation U를 생성
- 참여하는 entity types를 표현하는 relations의 primary keys를 U의 foreign key attributes로 가진다.
- M:N relationship types를 mapping하는 과정과 유사
- Example:
- Relation U: The SUPPLY relation
- PKs/FKs: {Sname, Partno, ProjName}
- The other attribute: Quantity
Correspondence between ER and Relation Models