🤼‍♀️

Entity-Relationship(ER) 모델


DB 디자인 과정을 간단히 하면 다음과 같다.

  1. 요구사항 수집 및 평가
  2. Conceptual design
  3. Logical design(data model mapping)
  4. Physical design

ER 모델은 2번 과정에 해당한다.

ER 모델은 데이터를 entity, relationship 그리고 attribute로 나타낸다.

Entity(엔티티)

구체적인 객체 혹은 물체를 나타낸다.

물리적으로 존재하는 것들(학생, 차, 집 등)이나 개념적을 존재하는 것들(회사, 직업 등)을 예로 들 수 있다.

Entity type and Entity sets

  • Entity type(intension)

    같은 속성을 가지는 entity의 모음이다. 자바의 Class같은 것이라고 생각하면 된다.

  • Entity set(extension)

    실제로 데이터베이스에 저장된 같은 type을 가지는 entity들의 모음을 뜻한다.

Attribute(속성)

Entity를 설명하는 특성을 나타낸다. Attribute는 각각 값과 타입을 가진다.

학생을 예로 들면, 속성으로 이름, 나이, 성별 등이 있겠다.

Types:

  • Simple: Atomic한 값(원자값)
  • Composite: 속성이 여러 구성요소들로 이루어져 있을 수 있다. Ex) Name(First, Last)
  • Multi-valued: 한 속성에 대해 다중 값을 가질 수 있다.
  • Stored attribute: 저장된 값
  • Derived attribute: 저장된 값으로부터 도출될 수 있는 값. 예를 들어, 생년월일을 알면 나이를 알 수 있다.

Key Attributes

각 entity가 고유한 값을 가지는 속성이다. 키 속성으로 각 entity를 유일하게 식별할 수 있다. 대한민국 국민의 키 속성은 주민등록번호라고 할 수 있겠다.

Weak Entity

자기 자신을 식별하기 위한 key attribute를 가지지 않는 entity이다. 따라서, 자기 자체로는 존재가 불가능하고 다른 entity와의 관계로 인해 식별될 수 있다. 이때 관계를 갖는 entity를 부모, 자신을 자식으로 볼 수 있다. 이 관계를 'Identifying Relationship'이라고 한다.

Weak entity type의 entity는 자신의 partial key부모 entity에 의해 식별된다.

Weak entity type은 항상 total participation constraint를 가진다.

Relationship

Relationship은 특정한 의미를 가진 둘 이상의 별개의 entity의 연관을 나타낸다.

e.g. EMPLOYEE 홍길동 'works on' the SpaceX PROJECT

  • Relationship type R (관계 유형) :

    관계의 스키마에 대한 설명. 관계의 이름, 참여하는 entity 타입, 제약조건등을 나타낸다. ex) WORKS_ON

    '관계의 degree': 관계에 참여하는 entity의 타입 수

  • Relationship set R (관계 집합) among nn entity types E1,E2,...,EnE_1, E_2, ..., E_n:

    실제 DB에 있는 관계 인스턴스들의 집합

Relationship도 속성을 가질 수 있다. 보통 M:NM:N 관계에서 사용된다.

1:N1:N 관계에서는 NN에 해당하는 entity에 relationship의 속성을 합칠 수 있다.

Role Name (역할 이름)

어떤 관계에 참여하고 있는 entity에게 이 관계에서의 역할에 따라 이름을 부여하는 것이다. 보통은 'entity type name = role name'이다. 하지만 하나의 entity가 둘 이상의 역할로 관계에 참여한다면 이름을 붙일 필요가 있다.

예를 들어, 종업원은 주 역할인 '종업원'과 부 역할인 '매니저'를 가질 수 있다.

Recursive Relationship

같은 entity 타입에 있는 entity와 관계가 있는 것. 관계의 참여자는 같은 entity type이지만 다른 역할을 한다.

Structual Constraints on Binary Relationship Types(이진 관계 유형의 구조적 제약 조건)

  1. Cardinality ratio

    관계에 참여할 수 있는 relation instance의 최대 수를 명시한다.

    • 1:11 : 1
    • 1:N1 : N
    • N:MN : M
  2. Participation constraint

    어떤 관계 타입에 대해 어떤 entity가 존재하려면, 또 다른 엔티티와(전체적으로/부분적으로) 관계되어야 한다. Cardinality ratio가 관계에 참여하는 인스턴스의 최대 수를 나타냈다면, participation constraint는 최소 수를 나타낸다.

    • Total participation: ER 다이어그램에서 두 줄로 나타낸다.
    • Partial participation: ER 다이어그램에서 직선으로 나타낸다.

Notation

er notation