NLP Learner in Switzerland

ER model을 Relational Database schema로 변환하기 예제 본문

Database SQL/Exercise

ER model을 Relational Database schema로 변환하기 예제

초코빵 2021. 4. 21. 10:00
728x90
반응형

 

 

 

 

[풀이 방법] (주의할 부분 : 빨간색)

1. Entity 변환

- 모든 entity는 각각 relation으로 변환한다.

- key attribute가 primary key가 된다.

 

2. Relationship 변환

- 모든 relationship은 각각 relation으로 변환한다.

- 연결된 entity의 key가 primary key가 된다.

- 그런데 entity가 양쪽으로 두개가 연결되어 있기 때문에 primary key는 multiplicity를 보고 판단한다.

(1) N:M인 경우 : 양쪽 entity의 key를 모두 포함

(2) 1:N 또는 N:1인 경우 : N쪽 entity의 key값을 선택

(3) 1:1 : 두가지 entity의 key중 아무거나 하나 선택

*** 1인 쪽 entity의 primary key도 attribute로 가지기는 한다. 다만 primary key가 아닐 뿐이다.

 

3. 전체 schema를 최대한 simplify

- 1,2를 수행한 후 같은 key가 있는 relation이 발견되면 병합한다.

- 결론적으로 N:M이 아닌 이상 relationship은 연결된 entity로 만든 relation에 합쳐지게 된다.

 

 

 

[답]

 

1. Entity 변환

a(v1,v2)

b(v1,v3) FOREIGN KEY (v1) REFERENCES a(v1)

c(v1,v4) FOREIGN KEY (v1) REFERENCES a(v1)

* b와 c entity는 a의 generalization이므로 a의 key를 받아온다.

d(v5,v6)

e(v1,v8, v9) FOREIGN KEY (v1) REFERENCES a(v1)

* e는 weak entity이므로 strong entity b의 key를 받아온다.

f(v10,v11,v12)

 

2. Relationship 변환

r1(v1,v5,v7) FOREIGN KEY (v1) REFERENCES c(v1),

                          FOREIGN KEY (v5) REFERENCES d(v5)

* r1의 multiplicity는 N:M이므로 양쪽 entity의 key를 모두 가져온다.

r2(v1,v8) FOREIGN KEY (v1) REFERENCES b(v1), 

                   FOREIGN KEY (v8) REFERENCES e(v8)

r3(v1,v5,v8,v10) FOREIGN KEY (v1, v8 REFERENCES e(v1, v8),

                                 FOREIGN KEY (v5) REFERENCES d(v5),

                                FOREIGN KEY (v10) REFERENCES f(v10)

* v10은 1쪽 entity의 key이므로 primary key가 될 수 없다.

 

3. 전체 schema를 최대한 simplify

r2(v1,v8)는 e(v1,v8,v9)와 같은 키를 가진다.

따라서 r2 relationship은 e entity에 합쳐져서 e(v1,v8,v9)만 남는다.

 

 

 

 

 

Comments