_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈 |
FrontPage › 관계에대한이해와4차정규화
|
|
[edit]
1 관계에 대한 이해 #거의 대부분 사용되는 DBMS는 관계형DBMS(이하 RDBMS)다. 물론 오라클이나 PostgreSQL과 같은 경우는 객체관계형DBMS(이하 ORDBMS)이지만 거의 관계형답게 사용되고 있다. 어쨌든 '관계'라는 단어가 들어가는 것을 보면 관계가 매우 중요한 키워드임에는 틀림이 없다. 관계란 개체집합간의 관련이 생기게 되는 업무적인 이유다. 모델링에서는 개체집합 양방향에 대한 업무규칙으로 표현된다. 관계를 가짐으로써 개체집합간의 새로운 정보를 만드는 것이 관계의 존재이유다. 가령 다음과 같은 일상적인 글에서도 관계가 가지는 정보창출 능력을 알 수 있다.
![]() [edit]
2 관계와 4차 정규화 #관계의 중요성은 4차 정규화에서도 나타난다. 4차 정규화는 다치(Multi value)종속을 제거함으로써 없앨 수 있다. 예를 들어 다음과 같은 관계가 있다고 하면..
Multi Valued Dependency(MVD), X ->> Y (X Multi-Determines Y) EX) Relation R(X, Y, Z): X, Y는 다치종속이면서 Y, Z가 서로 독립(관계없음) 이럴 경우는 R(X, Y, Z)를 R1(X, Y), R2(X, Z)로 분해하면 된다. 만약 Y, Z가 독립이 아니면 4차 정규화의 대상이 아니다. 구체적인 예를 들어보자. 다음 그림은 프로그래머, 자격증, 언어(C++ 등)와 관계를 나타내고 있다.
![]() 비정규화된 릴레이션은 다음과 같다. 자격증과 언어(프로그래밍언어)와는 관계가 없다.
그림을 보면 프로그래머, 자격증, 언어의 관계에서 프로그래머와 자격증, 프로그래머와 언어는 관계가 있으나 자격증과 언어는 관계가 없음(서로 독립)을 알 수 있다. 그러므로 다음과 같이 모델링을 해서는 안 된다. ![]() 자격증과 언어는 서로 독립이므로 다음과 같이 해야 한다.
![]() 만약 자격증과 언어가 관계를 가진다면(독립이 아니라면) <그림3>과 같이 모델링하는 것이 맞다. 만약 자격증과 언어가 다:다의 관계를 가진다면 5차 정규화를 해야 한다. (아.. 그림다 지웠는데..하다보니 5차 정규화도 나와버리네요.. 또 그림 그려야 하네요..귀찮아 죽겠습니다.)
![]()
|
어진 이를 알아보는 것은 지(智)요 어진 이를 추천하는 것은 인(仁)이며 어진 이를 끌어들이는 것은 의(義)이다. (공자) |