[DataBase]ER 모델

Jihun·2022년 4월 12일
0

데이터베이스

목록 보기
1/4
post-thumbnail
post-custom-banner

ER 모델

개념적 설계를 위한 모델, 실세계를 Entity, Attribute, Relationship로 표현함

엔티티(Entity)

업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것으로 설명할 수 있다.

예) 학생이라는 엔티티는 학번, 이름, 학점, 등록일자, 생일, 전공 등의 속성으로 특징지어질 수 있다.

  • 엔터티가 포함하는 인스턴스에 대해 유일한 식별자로 식별이 가능해야 함

  • 엔터티는 지속적으로 존재하는 두개 이상의 인스턴스들의 조합이어야 함

  • 엔터티는 반드시 속성을 지녀야 함

  • 엔터티는 업무 프로세스에 의해서 이용되어야 함

  • 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 함

  • 강한 엔티티 타입

    • 독자적으로 존재하며 엔티티 타입내에서 자신의 키 속성를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입
  • 약한 엔티티 타입

    • 키를 형성하기에 충분한 속성들을 갖지 못한 엔티티 타입
    • 이 엔티티 타입이 존재하려면 소유 엔티티 타입이 있어야 한다.
    • 소유 엔티티 타입의 키 속성를 결함해야만 고유하게 약한 엔티티타입의 엔티티들을 식별할 수 있음

속성(Attribute)

인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위

  • 하나의 엔티티는 연관된 속성들의 집합으로 설명된다.
    • ex) 사원 엔티티는 사원번호, 이름, 직책, 급여 등의 애트리뷰트를 가짐
  • 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.
  • 다양하게 존재하는 인스턴스들에 대해 유일하게 구별할 수 있는 주식별자를 통해서 식별될 수 있어야 한다.
  • ER 다이어그램에서 기본 키에 속하는 속성는 밑줄을 그어 표시한다.

엔터티, 인스턴스, 속성의 관계

  • 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이다.
  • 한 개의 엔터티는 두 개 이상의 속성을 가진다.
  • 한 개의 속성은 한 개의 속성 값을 가진다.

차수(Degree)

  • 한 엔티티 안에 있는 속성의 수를 차수라고 한다.
  • 유효한 엔티티의 최소 차수는 1이다.

속성의 분류

속성의 특성에 따른 분류

  • 기본 속성(Basic Attribute)
    • 업무 분석을 통해 바로 정의한 속성
    • 엔터티에 있어서 가장 일반적이고 많은 속성을 차지한다.
    • 코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호, 그리고 다른 속성을 계산하거나 영향을 받아 생성된 속성등은 기본속성이 아니다.
    • ex) 이름, 회원ID 등
  • 설계 속성(Designed Attribute)
    • 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 새로 만들어지거나 변형된 속성
    • 일반적으로 코드성 속성은 기존의 속성을 업무상 필요에 의해 변형하여 만든 설계 속성이다.
    • 일련번호와 같은 속성 또한 단일한 식별자를 부여하기 위해 모델 상에서 새롭게 정의하는 설계속성이다.
    • ex) 학생 코드, 상품 코드 등
  • 파생 속성(Derived Attribute)
    • 다른 속성에 영향을 받아 발생하는 속성
    • 일반적으로 계산된 값들이 이에 해당된다.
    • 파생 속성은 가급적 적게 정의하는 것이 좋다.
    • ex) 합계, 평균 등

엔터티 구성방식에 따른 분류

  • PK(Primary Key) 속성
    • 엔터티를 유일하게 구분할 수 있는 속성
  • FK(Foreign Key) 속성
    • 다른 엔터티와의 관계에 있어서 포함된 속성
  • 일반 속성
    • 엔터티에 포함되어 있고, PK 또는 FK에 포함되지 않는 속성

세부 의미 유무에 따른 분류

  • 단순 속성(Simple Attibute)
    • 더 이상 작은 구성 요소로 분해할 수 없는 속성
    • ex) 회원번호, 이름, 나이 등
  • 복합 속성(Composite Attribute)
    • 독립적인 의미를 갖는 단순 속성들로 분해할 수 있는 속성
    • 주소(도, 시, 군, 구등으로 분해 가능)

도메인(Domain)

  • 속성의 값이 가질 수 있는 범위
  • 속성 값이 가질 수 있는 데이터 타입과 크기, 추가적인 제약사항 등

속성의 명명(Naming)

  • 해당 업무에서 사용하는 이름을 부여한다.
  • 서술식 속성명은 사용하지 않는다.
  • 약어사용은 가급적 피한다.
  • 전체 데이터 모델에서 유일성을 확보하는 것이 좋다.

관계(Relationship)

존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

관계의 종류

  • 존재에 의한 관계
    • 엔티티 간의 존재 여부의 관계가 있는 것
    • ex) 학생 엔티티와 학교 학부 엔티티가 있을 때, 학생 엔티티의 인스턴스는 학과 엔티티의 특정 인스턴스에 속하게 된다. 이것은 특정한 행위에 의한 것이 아닌 단순히 소속되어 있기 때문에 나타나는 관계이다.
  • 행위에 의한 관계
    • 엔티티 간의 어떤 행위에 의해 관련성이 있는 것
    • ex) 유저 엔티티와 장바구니 엔티티가 있을 때 각 엔티티의 인스턴스끼리는 관계가 발생하기 위해서는 유저 엔티티의 인스턴스가 특정 행위를 해야한다.

관계 차수(Cardinality)

https://user-images.githubusercontent.com/59672592/162992147-361e8219-a8d9-4d10-9bee-021f1c3a13a3.png

  • 일대일 관계 (1:1)
    • 완전 1:1
      • 하나의 엔티티에 관계되는 엔티티의 관계가 하나 있는 경우
      • 반드시 존재
    • 선택적 1:1
      • 하나의 엔티티에 관계되는 엔티티의 관계가 하나이거나 없을 수도 있는 경우
  • 일대다 관계(1:N)
    • 한쪽의 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것
    • ex) 부모와 자식의 관계, 부모는 1 ~ N명의 자식을 가질 수 있지만, 자식 입장에서는 부모(어머니, 아버지의 쌍)를 하나만 가질 수 있다.
  • 다대다 관계(N:M)
    • 서로가 서로를 1:N관계를 가지는 것
    • ex) 쇼핑몰에서 유저와 상품의 관계, 한 유저는 여러 상품들을 가질 수 있고, 상품 또한 여러 회원들을 가질 수 있다.

관계명

엔터티가 관계에 참여하는 형태를 지칭

관계는 2개의 엔터티에 의해 발생되므로, 하나의 관계는 2개의 관계명을 가지게 되며, 각각의 관게명에 따라서 하나의 관계가 두가지 관점으로 표현

  • 애매한 동사를 피한다. 예를 들어 '관련이 있다', '관계된다' 등은 구체적이지 않아 두 엔터티간에 어떤 행위/상태가 존재하는지 파악하기 어렵다.
  • 현재형으로 표현한다. 예를 들어, '주문을 했다', '신청할 것이다'라는 식의 표현은 사용하지 않는다. 대신 '주문 한다', '신청 한다' 와 같이 표현한다.

관계선택사양

관계에서 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법따라 필수참여 관계(Mandatory), 선택참여 관계(Optional)로 나뉜다.

학생 엔터티와 수업 엔터티가 있을 때, 학생 엔터티는 수업 엔터티와 관계가 있을수도 있고 없을수도 있기때문에 학생 엔터티를 기준으로 학생-수업 관계는 선택참여가 된다.

반대로 수업 엔터티는 학생 엔터티가 관계가 필수적이기 때문에 수업 엔터티를 기준으로 수업-학생 관계는 필수 참여가 된다.

profile
slow and steady
post-custom-banner

0개의 댓글