Database - 5.2 ER model

Mingi Shin·2023년 6월 11일
0

Database

목록 보기
8/16
post-custom-banner

ER model은 개념적 디자인의 대표적인 모델이다. high-level의 추상화를 제공하고 이해하기 쉽고 표현력이 뛰어나다.

ER model은 real world를 relation, attribute, entity로 표현한다. ERD는 엔티티와 relation, attribute를 그래픽으로 나타낸다. 이는 relation data model로 쉽게 매핑이 가능하다.


📌 Entity

엔티티는 real world의 객체다. 이는 독립적으로 존재하고 고유하게 식별 가능하다.

📙 Entity type

엔티티와 엔티티 타입을 평소에 섞어 쓰는 경향이 있는데 과목은 엔티티 타입, 과목의 예시 데이터베이스는 엔티티라고 이해하자.

📙 Weak entity type

엔티티 자체가 독립적으로 존재할 수 있다면 strong entity type(regular entity type). 그렇지 않으면 Weak entity type이다.

e.g., 회사에 직원이라는 레귤러 엔티티 타입이 있다. 직원들에게는 회사의 복지를 그들의 가족과 함께 누릴 수 있다. 복지 대상을 확인하기 위해 직원에 대한 가족이라는 엔티티 타입이 필요할 것이다. 가족이라는 엔티티 타입은 그 자체로 존재할 수 없다. 가족은 위크 엔티티 타입이 될 것이다.

weak entity type은 자체적으로 키를 형성할 수 없다. 키 역할을 외부에서 구해와야 한다. 그 엔티티를 owner entity type이라고 부른다.

ERD에서 이중 실선 직사각형으로 표시한다.

예시에서 Depname은 그 자체로 키의 역할을 부분적으로만 하기 때문에 partial key 라고 한다. 엔티티 DEPENDENT의 키는 부분키와 owner entity의 기본키를 결합해 그 기능을 수행하게 한다.


📌 Attribute

엔티티는 관련된 애트리뷰트들로 표현된다.

ERD에서 타원으로 표시하고 기본키는 ERD에서 밑줄을 긋는다.

📙 Composite attribute

composite attribute는 두 개 이상의 attributes로 구성되는 속성이다.

1개로 딱 떨어지는 속성은 simple attribute라고 한다.

📙 Multi-valued attribute

여러 값을 가진다.
이중 실선 타원으로 표시한다.

이름처럼 1개의 값을 가지는 속성은 single-valued attribute다.

📙 Derived attribute

다른 애트리뷰트로부터 유도할 수 있다. derived attribute는 이후 database schema로 매핑하지 않는 편이 좋다. 중복이 되기 때문에

ERD에서 점선 타원으로 표시한다.

반대 개념은 stored attribute.


📌 Relation

ER model에서 relation은 엔티티 간의 관계다. relation에는 둘 이상의 엔티티가 매핑이 된다.

ERD에서 relation은 다이아몬드 모양으로 표시된다.

relation에도 애트리뷰트를 가질 수 있다. 그러나 relation은 키를 갖지 않는다.

📙 Degree

한 relation에 연결되어 있는 엔티티 수를 말한다.
(e.g., Degree가 3인 relation, Degree가 2인 relation)

📙 Cadinality

한 엔티티가 참여할 수 있는 relation의 수를 말한다.

relation은 일반적으로 1:1, 1:N, M:N으로 분류된다.

📚 1:1 relationship

두 개의 엔티티 타입이 있다고 했을 때, 서로의 엔티티에 한 개의 엔티티가 연결될 때, 1:1 관계라고 한다.

직원당 PC가 최대 1개고 PC당 직원이 최대 1개인 경우, 1:1 관계라고 말할 수 있다.

📚 1:N relationship

특정 엔티티 타입의 엔티티가 임의의 수의 상대 엔티티에 연결되어 있고 상대 엔티티는 딱 1개 연결되어 있을 때, 1:N 관계라고 한다.

직원당 PC가 최대 1개고 PC당 직원이 N명인 경우, 1:N 관계라고 말할 수 있다.

📚 M:N relationship

특정 엔티티 타입의 엔티티 수가 상대 엔티티 타입의 엔티티 수와 관계가 있을 때, M:N 관계라고 한다.

직원당 PC가 여러 대이고 PC당 직원 수가 여러 명일 경우, M:N 관계라고 말할 수 있다.

📚 cardinality의 2가지 표기

1:N 관계를 예시로 보면, E1 엔티티 입장에서 연결된 E2의 cardinality는 N이다. (0, *)

이 상황에서 (min, max)로 표기할 것이라면 E1의 실선 쪽에 표시한다.
1과 N으로 표기할 것이라면 N을 상대 엔티티의 실선 쪽에 표시한다.

Degree가 3인 relation이 있다.

Car 엔티티 타입의 (0, 1)의 의미
car entity 하나가 참여했을 때,
대응되는 customer와 seller의 수는 0~1의 범위라는 것을 뜻한다.

Customer 엔티티 타입의 (0, m)의 의미
customer 엔티티 하나가 참여했을 때,
대응되는 car와 seller의 수는 0~m의 범위라는 것을 뜻한다.

Seller 엔티티 타입의 (0, n)의 의미
seller 엔티티 하나가 참여했을 때,
대응되는 car와 customer의 수는 0~n의 범위라는 것을 뜻한다.

📚 Role

relation의 의미를 명확히 한다.

ERD에서 relation과 엔티티의 실선에 Role을 명시한다.

위 예시는 1명의 supervisor 직원은 N명의 superbisee를 감독한다는 의미를 Role을 통해 명확히 하고 있다.

📙 전체 참여, 부분 참여

전체 참여는 특정 엔티티 타입의 모든 엔티티가 상대 엔티티와 관계를 가져야 함을 의미한다.

ERD에서 이중 실선으로 표기한다.

부분 참여는 특정 엔티티 타입의 일부 엔티티가 상대 엔티티와 관계를 가짐을 의미한다. 즉, 모든 엔티티가 관계에 참여하지 않아도 된다.

Weak entity type은 owner entity type의 pk로 복합키를 구성하기 때문에 전체 참여를 전제로 한다. (pk의 모든 구성요소는 NULL이 될 수 없기 때문에..)

📙 Multiple relation

두 개의 엔티티 사이에 둘 이상의 relation이 있는 것.

위 예시) 직원과 프로젝트 사이에는 두 개의 relation이 있다.

  • 한 직원은 N개의 프로젝트를 수행할 수 있고 한 프로젝트에는 M명의 직원이 투입될 수 있다.
  • 한 직원은 1개의 프로젝트에 책임자 역할을 수행할 수 있고 한 프로젝트에는 1명의 직원이 책임자를 맡아야 한다.

📙 Cyclical relation

특정 엔티티 타입이 특정 relation에 2번 이상 참여하는 것을 말한다.

relation은 단독으로 존재할 수 없다. 그런데 entity와 relation을 구분하는 게 때로는 어렵다.

공급자가 수량에 따라서 가격을 변동해 똑같은 상품을 제공하는 것이 필요하다고 하면 아래와 같이 수정해야 할 것이다.(대량 구매시 할인 등)


📌 Crow-feet ER notation

해당 방법은 엔티티 타입에 여러 애트리뷰트를 연결해야 하고 부수적인 표기가 많아 불편한 점이 있다.

crow-feet notation은 ERWin과 같은 CASE tools에서 사용된다.

📙 1:1 relationship

📙 1:N relationship

📙 M:N relationship

📙 entity type & attribute

profile
@abcganada123 / git:ABCganada
post-custom-banner

0개의 댓글