6. Relational Schema Design: ER to Relational Mapping

코와->코어·2021년 10월 7일
0

데이터베이스

목록 보기
6/6

관계형 DB 구조 설계 : ER에서 관계형으로의 맵핑

ER schema

Relational model

무엇을 바꿀까?
(Regular) Entity Types
Weak Entity Types
Binary 1 : M Relationships
Binary M : N Relationships
Binary 1 : 1 Relationships
Recursive Relationships
Multi-Valued Attributes
Ternary Relationships
Superclass/Subclass : IS-A Relationship

Guidelines

  • 1 : M, M : N, 1 : 1 relationship
  • Total / Partial participation
  • Key Integrity
  • Referential Integrity
  • null 피해라
  • 수행/검색시간 고려 : join 줄이기
  • 중복 피해라

개체형

어떤 개체형 E의 모든 simple attribute들을 포함하는 관계를 만들어라
PK를 골라라. 만약 그 key가 composite key라면, 그것을 형성하는 단순 key들의 집합이 pk가 된다
각각의 개체가 행/튜플에 해당한다
각각의 속성이 열/속성에 해당한다

약한 개체형 W에 대해서, W의 모든 속성들을 포함하는 관계를 만들어라
W의 주인 개체형인 E를 찾고, E의 PK를 FK로 포함해라
W의 key : {PK of owner E, partial key of W}

1:M

Case 1 : 양쪽이 total

FK로 1 쪽의 PK를 M쪽에서 FK로 포함해라
key integrity를 지켜야 하기 때문에-같은 값을 갖는 key가 있으면 안 됨

Case 2 : 양쪽이 Partial

case 1 처럼 했다가는 많은 null값이 발생할 수 있음: partial이라 모든 값이 해당되지는 않기 때문에

새로운 관계를 만들고, 참여하는 개체형들의 PK를 FK로 참조하고 M쪽의 PK를 PK로 삼아라: 이렇게 하면 null값이 없다, 원하는 정보를 얻기 위해 두 개의 join을 해야 해서 비효율적

null값이 별로 없으면 첫 번째, 많으면 두 번째 추천, 설계자의 재량에 따르기

M:N

새로운 관계를 만들어라
참여하는 관계의 PK를 모두 참조해서 FK로 포함하고, 그 두 개의 FK를 합한 것이 PK가 된다

1:1

For 1 : 1 relationship R, create the relations S and T that
correspond to the entity types participating in R.

Case 1. 한 쪽만 total
partial의 PK를 total의 FK로 포함

Case 2. 둘 다 total
하나의 관계로 합치기
양쪽의 PK 중 하나가 PK가 됨. 참조하지 않으므로 FK는 없음
이 경우, 중복되는 이름의 속성이 있으면 바꿔줘야 함

Case 3. 둘 다 partial
새 관계 만들기
양쪽의 PK를 포함하는데, 둘 중에 어느 것이 PK가 되어도 상관 없음

Recursive

Case 1. 1:M
1쪽의 PK를 FK로 포함시키기, 포함시킨 속성은 이름 바꿔야 함

Case 2. 1:1
새로운 관계를 만들어라
양 쪽의 역할의 PK를 FK로 참조하고 이름 바꿔주기
PK는 참조한 두 개의 FK들 중 하나 고르면 된다

Case 3. M:N
새로운 관계를 만들어라
두 역할의 PK를 FK로 참조하고 이름 바꿔주기
두 개의 FK를 합한 것이 PK가 됨

Multi-valued attribute

For each multi-valued attribute A, create a new relation R.

R includes the attribute A, plus the PK K of the relation S that represents the entity type including A. Then, remove A from the relation S.

The PK of R is {A, K} where K is FK.

If the multi-valued attribute is composite, we include its simple components.

Ternary relationship

For each ternary relationship R, create a new relation S;
Include as FK in S the PKs of each relations that represent the participating entity types.
Also, include any simple attributes of ternary relationship (or simple components of composite attributes) as attributes of S.
Relation S의 PK는 m : n : p relationship에서 m, n, p의 값에 따라 달리 설정됨.

We allow at most one arrow out of a ternary (or greater degree) relationship to indicate a cardinality constraint
E.g. an arrow from works_on to job indicates each employee works on at most one job at any branch.
If there is more than one arrow, there are two ways of defining the meaning.
E.g a ternary relationship R between A, B and C with arrows to B and C could mean
1. each A entity is associated with a unique entity from B and C or
2. each pair of entities from (A, B) is associated with a unique C entity, and each pair (A, C) is associated with a unique B
Each alternative has been used in different formalisms
To avoid confusion we outlaw more than one arrow
1.1:m:n
2.1:1:1
3.m:n:p

IS-A relationship

Entity Type
Weak Entity Type
Multi-valued attribute
Composite Attribute
1 : N or 1 : 1 Relationship
M : N Relationship
Recursive Relationship
Ternary Relationship
IS_A Relationship

Total 혹은 Partial?
Foreign Key 설정?
Primary Key 설정?
Name 변경?
Null value 발생?
검색 시간(= Join 회수 등)?

profile
풀스택 웹개발자👩‍💻✨️

0개의 댓글