Map each Regular Entity to a Relation with all simple attributes
Unpack composite attribute
A primary key can also be a composite key
ex : country code, car number
Mapping of one-one Relation
3 possible ways
Foreign key : Better to choose an entity with total participation
→ 위 예시의 경우에는 department쪽이 foreign key를 가지는 것이 유리하다는 것이다. 왜냐하면 mandatory이기 때문이다.
Merge relation: This may be appropriate if both participations are total. Might lose the context for a logical entity.
→ But in this case, the employee entity partially participated so it is not appropriate for the above example.
Build a cross reference table: However, FK option is efficient
Mapping of one-many Relation
2 possible ways
Foreign key : Choose an entity having one-sided of the relationship
Build a cross reference table: Rarely used
만약 Department에서 employee 정보를 저장하려고 하면 여러 값을 저장해야한다는 문제가 발생한다.
→ relational model은 single value만 허용하므로 이러한 방식으로 처리할 수 없다.
Mapping of many-many Relation
양 방향에서 문제가 발생한다. 왜냐하면 relational model의 경우에는 single value만을 허용하기 때문이다.
→ 그래서 이 경우에는 mapping table 만 가능하다.
SSN
N
1
{p1, p2}
2
p2
3
p1
N
SSN
p1
1
p2
{1, 2}
이 경우에는 employee와 project가 합해져야 unique가 된다.
→ 즉 combinational key인 것이다. 그래서 위 사진에서 works_on table에 underline이 2개 존재하는 것이다.
Mapping of Multivalued Attribute
Create a new table. This table will have:
attribute itself
PK of the original table as a FK in the new table
Weak Entity Mapping
Create a new table having all the attributes. Add a FK attribute of the PK of the owner entity to this new table.
N-ary Relationship
→ 흔한 경우는 아니지만 가능하기는 하다.
Recursive Relationship Mapping
In this case, the supervision relationship is not a many-to-many relationship. Therefore, we can convert it to the relational model by adding one column.
Procedures to ER to DBMS Table
EER to Relational Database Design
In this example, specialization is based on the attribute “Job Type”
Specialization
어느 것이 정답일지에 대한 것은 data의 특성에 따라 다르다.
예를 들어 disjoint한 경우에는 redundant한 data를 추가로 저장해야한다는 단점이 있다.
→ 만약 table을 다르게 저장한 경우에는 query를 날리는 과정에서 서로 다른 table를 joint해야하는데 이게 overhead가 크다.
Generalization
Disjoint participation
Overlapping participation
MFlag와 PFlag를 일종의 boolean flag 처럼 쓰는 것이다.
→ 이러한 flag가 없으면 나머지 field가 NULL인 경우 어떤 것에 속하는지 판단할 수 없게 된다.