Entity Relationship Model

youngwiki

상위 문서: Database Design

개요

Entity Relationship Model(ER model)은 enterprise를 entity와 relationship으로 모델링하여 DB 설계를 명확하게 정의한다. 즉, ER model은 실제 enterprise의 meanings와 interactions를 개념적인 schema로 mapping하는데 유용하다. 이 모델은 데이터 구조와 그들 간의 관계를 entity-relationship diagram을 통해 시각적으로 표현하여, DB 설계 과정을 이해하기 쉽게 만든다.

개념

Entity Set

  • Entity: object들로부터 구분되는 enterprise의 object나 thing으로, attribute의 집합으로 표현된다.
    • 예를 들면 준영, 삼성, 현대 등이 있다,
  • Entity Set: 동일한 attribute를 공유하는 동일한 유형의 entity의 집합이다.
    • 예를 들면 서강대에서 재직하는 교수의 집합이 있다.
    • entity는 attribute의 집합으로 표현된다. 예를 들어 학생이라는 entity는 이름, 학번, 전공등으로 표현된다.
    • attribute의 부분집합은 entity set의 primary key를 구성한다. 이는 해당 집합의 각각의 원소들을 구분하는 역할을 한다. 학생 entity 집합에서는 학번이 그 역할을 할 수 있다.
Entity set을 시각적으로 나타낸 예시이다.

이러한 entity set은 아래와 같이 시각적으로 표현된다.

  • 각각의 entity set들은 직사각형으로 표현된다.
  • Attribute들은 entity ractangle 안에 열거된다.
  • 밑줄쳐진 attribute는 해당 attribute가 primary key임을 나타낸다.

Relationship Sets

  • Relationship: 몇몇 entity들 사이의 연관을 나타내는 집합이다.
    • 예를 들어서 학생 junyoung과 교수 junho 사이에는 advisor라는 relationship을 정의할 수 있다.
  • Relationship Set: entity set으로 부터의 두개 이상의 entity사이로 나타나는 수학적인 relation[1]이다. 이는 수학적으로 다음과 같이 나타낼 수 있다.
    • {(e1,e2,...,en)|e1E1,e2E2,...,enEn}where(e1,e2,...,en)isarelationship.
    • (junyoung,junho)advisor 에서 (junyoung, junho)는 relationship instance에 해당하며, {E1,E2,...,En}[2]은 relationship set에 속한다.

또한 instructor, student entity set의 각 사이의 relation을 위와 같이 표현할 수 있다.

또한 Relationship Set은 각 entity set 사이에서 위와 같이 다이아몬드 모양 박스 형태로 표시된다.

E-R model에서 relationship set의 attribute은 두 개 이상의 entity set 간의 관계를 설명하는 데 사용된다. relationship set은 entity 간의 relation을 나타내며, 이 relation에 대한 attribute을 추가할 수 있다. 예를 들어, 학생과 전공 과목이 relation을 맺고 있다고 할 때, 이 relation의 attribute는 "등록일"이나 "성적" 등이 될 수 있다. relationship의 attribute는 해당 relation에 대한 추가적인 정보를 제공한다. 이는 다음과 같은 특성을 가진다.

  • relationship attribute은 단일 값[3] 또는 다중 값[4]을 가질 수 있습니다.
  • relationship attribute은 multivalued attributes[5]이나 composite attributes[6]이 될 수 있다.
role 예시

role

relation에서 entity가 수행하는 역할을 그 entity의 role이라고 한다. relationship set에 참여하는 entity set들은 일반적으로 구별되므로 role이 명시될 필요가 없고, 실제로도 그러하다. 그러나 relation의 의미를 명확히 해야 할때가 존재하며, 이때 역할이 유용합니다. 그 경우 중 하나가 relationship set에 참여하는 entity set들이 구별되지 않는 경우, 즉 동일한 entity set이 여러 번 relationship set에 참여하는 경우가 있다. 이를 recursive relationship set이라고 하며, 이 경우에는 entity가 relationship instance에서 어떻게 participating하는지 명시하기 위해 role이 필요하다. 예를 들어서 대학에서 제공되는 모든 강좌에 대한 정보를 기록하는 entity set인 course를 고려해보자. 하나의 강좌(C2)가 다른 강좌(C1)의 전제조건인 상황을 나타내기 위해, 우리는 course entity set을 pair을 사용하여 나타내는 관계 집합 prereq를 정의한다. 이 경우, 한 쌍에서 첫 번째 course는 C1(main course)의 role을 하고, 두 번째 course는 C2(prerequest course)의 role을 한다. 이렇게 모든 prereq 관계는 (C1, C2) pair로 구현되며, (C2, C1) pair는 생성될 수 없다. E-R diagram에서는 role을 오른쪽 같이 다이아몬드와 직사각형을 연결하는 선에 레이블을 붙여 표시한다.

Ternary Relationship

Degree of a Relationship Set

  • Binary relationship은 오직 두개의 entity set들만 연관되어 있는 집합이다.
    • 대부분의 DB에 있는 relationship set들은 binary이다.
  • Non-binary relationship은 세 개 이상의 entity set들이 연관되어 있는 집합이다.
    • Degree of a Relationship Set은 연관되어 있는 entity set의 개수에 해당한다. 예를 들어 binary relationship의 degree는 2이다.

Complex Attributes

Representing Complex Attributes in ER Diagram

Attribute는 다음과 같이 구분된다.

  1. Simple and composite attributes
    • Simple attributes: attribute가 나누어지지 않고 단일하다.
    • Composite attributes: attribute가 여러 하위 attribute로 나눠진다.
  2. Single-valued and Multi-valued attributes[7]
  3. Derived attributes: 다른 attribute로부터 계산될 수 있는 attribute
    • 저장되어있지 않지만 요청받을 경우 생성된다.
    • 예를 들어 age attribute는 date_of_birth attribute에 의해서 계산될 수 있다.

위 그림은 composite attribute가 어떻게 하위 attribute로 구성되어 있는지 보여준다.

Mapping Cardinalities

Mapping Cardinalities는 relationship set을 통해 한 entity가 다른 entity가 연관될 수 있는 수를 나타낸다. 주로 이진 관계 집합을 설명하는 데 유용하다. binary relational set R이 entity 집합 A와 B 간에 존재한다고 가정할 때, Mapping Cardinalities는 다음과 같다.

  • one-to-one: A의 한 entity는 B의 최대 하나의 entity와만 연관되며, B의 한 entity도 A의 최대 하나의 entity와만 연관된다.
  • one-to-many: A의 한 entity는 B의 여러[8] entity와 연관된다. 그러나 B의 한 entity는 A의 최대 하나의 entity와만 연관된다.
  • many-to-one: A의 한 entity는 B의 최대 하나의 entity와만 연관된다. 그러나 B의 한 entity는 A의 여러[9] entity와 연관된다.
  • many-to-many: A의 한 entity는 B의 여러[10] entity과 연관될 수 있으며, B의 한 entity도 A의 여러[11] entity와 연관된다.
Represnting Cardinality

Representing Cardinality Constraints in ER Diagram

Cardinality constraints는 "one"을 의미하기 위해서 화살표(<math>\arrow<math>)를 사용하거나, "many"를 의미하기 위해서 방향없는 선(-)을 사용한다. 오른쪽은 각각의 cardinality에 대한 표시 방식이며, 아래는 각각의 cardinality에 대한 해석이다.

  • one-to-one: 강사가 최대 한 명의 학생만 지도할 수 있고, 학생도 최대 한 명의 지도교수만 가질 수 있다.
  • one-to-many: 강사가 여러 학생을 지도할 수 있지만, 학생은 최대 한 명의 지도교수만 가질 수 있다.
  • many-to-one: 강사가 최대 한 명의 학생만 지도할 수 있지만, 학생은 여러 강사에게 지도받을 수 있다.
  • many-to-many: 강사가 여러 학생을 지도할 수 있고, 학생도 여러 명의 강사에게 지도받을 수 있다.

Total/Partial participation

entity set E가 어떤 relationship set R에 total participating을 한다면, 이는 E의 모든 entity들이 적어도 R에 속하는 하나의 relation에는 participating 해야한다는 것을 의미한다. 만약 그럴 필요가 없다면, E는 R에 partial participating한다고 한다. Total/Partial participation은 다음 그림과 같이 나타낼 수 있다.

그림과 같이 Total participation은 이중선으로 표시한다. 또한 partial participation은 일반적인 선으로 표시한다. 위 그림을 해석하면, 학생은 최소한 하나의 교수를 지도 교수로 두어야 하지만 교수는 이를 선택할 수 있다는 것을 의미한다.

Notation for Expressing More Complex Constraints

A line may have an associated minimum and maximum cardinality, shown in the form l..h, where l is the minimum and h the maximum cardinality • A minimum value of 1 indicates total participation. • A maximum value of 1 indicates that the entity participates in at most one relationship • A maximum value of * indicates no limit. E-R diagram은 relationship set에서 각 entity가 relation에 참여하는 횟수에 대한 더 복잡한 constraints를 표시할 수 있는 방법을 제공한다. 그 방법이 line에 최소값과 최대값으로 나타내는 cardinality constraints를 표기하는 것이다. 해당 constraint는 l..h와 같이 표기되며, l은 최소, h는 최대 cardinality를 의미한다. 이때 해당 표기법은 다음과 같이 해석된다.

  • l = 1: total participation.
  • h = 1: the entity participates in at most one relationship
  • h = *: 가능한 cardinality는 무제한이다.

예를 들어,

는 학생은 오직 하나의 교수를 지도 교수로 두어야 하지만 교수는 이를 선택할 수 있다는 것을 의미한다.

교재 256페이지 -> reverse한 해석이라고 하는 이유가 궁금하다.

one to one아닌 이유는 명확 -> 최대 하나가 아닌 오직 하나이기 때문이다.

It is easy to misinterpret the 0.. ∗ on the left edge and think that the relationship ad- visor is many-to-one from instructor to student — this is exactly the reverse of the correct interpretation.

If both edges have a maximum value of 1, the relationship is one-to-one. If we had specified a cardinality limit of 1.. ∗ on the left edge, we would be saying that each instructor must advise at least one student....?


Normalization Theory

Normalization Theory[12]는 데이터베이스 설계에서 잘못된 설계를 식별하고 이를 수정할 수 있는 방법을 제공한다.

각주

  1. 두 개 이상의 집합에 대하여 집합 원소들 간의 쌍을 나타낸다.
  2. 방금 예시에서 advisor가 이에 해당한다.
  3. '등록일' 속성은 단일값만 가진다. 학생이 강좌에 등록한 특정 날짜를 가리키기 때문이다.
  4. "성적" 속성은 다중 값을 가질 수 있다. 여러 과목에서의 성적을 나타내야 하는 경우가 있기 때문이다.
  5. 하나의 relation에서 여러 값을 가질 수 있는 attribute이다. 예를 들어, 학생이 여러 강좌를 수강하고 각 강좌에 대해 여러 개의 성적을 가질 수 있으면, "성적"은 multivalued attributes이다.
  6. 여러 attribute가 결합되어 하나의 attribute를 구성하는 경우이다. 예를 들어, "주소"는 "도로명", "시", "우편번호"와 같은 여러 부분으로 구성된다.
  7. 하나의 relation에서 여러 값을 가질 수 있는 attribute이다. 예를 들어, 학생이 여러 강좌를 수강하고 각 강좌에 대해 여러 개의 성적을 가질 수 있으면, "성적"은 multivalued attributes이다.
  8. 0개 이상
  9. 0개 이상
  10. 0개 이상
  11. 0개 이상
  12. 정규화 이론