만족

[Database] Data Modeling (Crow Foot Notation) 본문

[Database] Data Modeling (Crow Foot Notation)

DataBase/이론 Satisfaction 2021. 6. 11. 02:47

Data Modeling을 위한 기본 개념에 무지하다면 아래 포스트를 읽어보고 오는 것을 추천한다.

 

https://satisfactoryplace.tistory.com/232

 

[Database] Data Modeling (ER Modeling)

관계형 DB를 설계할 때 가장 많이 사용되는 기법으로 ER Modeling이 있다. ER Modeling은 이름에서부터 알 수 있듯이, Entity와 Relation을 이용해 현실 세계를 묘사한다. Entity Entity는 개체라고도 하며, 단독

satisfactoryplace.tistory.com

Attribute

ER 다이어그램이 Entity를 위와 같이 표현한 것과 달리,

Crow Foot Notation에서는 아래와 같이 표현한다.

 

개체 표현이 더 간소화된 모습을 볼 수 있다.

 

Key Attribute(Identifier)

PK나 FK와 같은 특수한 Attribute는 속성 이름 앞에 *을 붙이거나,

볼드처리, 밑줄, 직접 키 종류 명시 등을 통해 일반 애트리뷰트와 구분할 수 있다.

 

위 다이어그램에서 STUDENT 개체의 student_id가 identifier임을 알 수 있다.

 

하나의 개체는 반드시 하나 이상의 identifier를 가져야 하며,

반드시 identifier에 명시된 속성들로 객체 인스턴스를 구별할 수 있어야 한다.

(= identifier가 다르다면 대상 개체 인스턴스 역시 달라야 하고, 같다면 개체 인스턴스도 같아야 한다)

 

Relation

ER Diagram과 마찬가지로 선을 이용해 개체를 연결하는 방식이지만, 

선에 약간의 기호를 포함해 관계 타입(1:1, 1:N, N:M)을 표시한다.

 

관계 타입을 표시하는 기호가 마치 까마귀의 발 같다고 해서, 이름도 Crow Foot Notation이다.

 

가령 개체 A,B가 있을 때 관계가

A ----Ol-B처럼 되어 있다면, 개체 A 하나에 개체 B가 한개가 연결되어 있거나 아예 연결되지 않는 관계를 의미한다.

 

이렇게 놓고 보면 도대체 이걸 어떻게 외워야 하나 할 수도 있지만,

가로줄과 네모를 빼고 본다면 직관적이다.

 

위의 자료의 경우 위에서부터

1 : 1개 연결됨

11 :  1과 동일하고, 연결관계가 불변함

0< : 연결되지 않거나 1개 이상 연결됨

1< : 1개 이상 연결됨

<: 2개 이상 연결됨

을 의미한다는 것을 직관적으로 알 수 있다.

 

실제로는 한쪽만 표기하는 것이 아니라 릴레이션으로 연결된 양쪽 개체 모두에 위와 같이 표기하여 사용한다.

 

ID Dependent Entity

ID Depndent Entity은 두 개체의 식별자를 모두 PK로 가지고 있으며

child가 parent entity의 논리적 확장 또는 서브 유닛인 개체를 말한다.

 

이게 무슨 말이냐...

이 관계에서 예술 작품과 그 작품의 인쇄본이 있다고 했을 때,

인쇄본은 독립적으로 존재할 수 없고, 어떤 예술 작품 정보에 의존적임을 알 수 있다.

(=>예술 작품 복사본은 어떤 예술 작품의 복사본인지에 관한 정보가 필수적이다)

 

또한 PaintingName이라는 애트리뷰트가 두 개체 모두에서 PK로 나타나는 모습을 볼 수 있다.

 

따라서 PRINT는 ID-Dependent entity이고, 이 관계는 실선으로 표시한다.

 

Weak Entity

Weak Entity는 개체의 존재 여부가 다른 개체에 의존적인 개체를 말한다.

 

따라서 모든 ID-Dependent Entity는 Weak Entity이다.

 

그러나 ID-Independent Entity 역시 Weak Entity인 경우가 있다.

 

예를 들어 은행 개체와 계좌 개체가 있을 때,

서로 다른 은행 간에는 동일한 계좌번호가 존재할 수 있으므로(아닌가? 아무튼 그렇다고 하자)

계좌 개체에서 계좌번호는 PK가 아니고, 또한 은행 정보가 유효하지 않거나 존재하지 않는 계좌번호는 존재할 수 없다.

 

따라서 계좌 개체는 Weak Entity라고 할 수 있다.

 

Weak Entity를 다이어그램에 표현할 때 각진 사각형이 아닌 둥근 사각형으로 표현하기도 한다.

Strong Entity

 

Strong Entity는 Weak Entity의 반대로, 개체의 존재가 다른 개체에 의존하지 않는 개체를 말한다.

 

은행 개체와 계좌 개체가 있을 때, 계좌 개체는 은행 개체의 존재에 의존하는 Weak Entity이지만,

은행 개체는 계좌 개체 없이도 존재할 수 있는, 즉 다른 개체의 존재와 무관하게 존재할 수 있는 Strong Entity이다.

 

Strong Entity와 Weak Entity의 Relation은 점선으로 표시한다.

(점선으로 표시할 때 한쪽은 반드시 Strong, 한쪽은 Weak여야 한다)



Comments