데이타베이스 - ER Modeling

Alpha, Orderly·2023년 10월 3일
0

데이터베이스

목록 보기
3/13

ER Relationship model ( ER MODEL )

  • 데이터를 엔티티, 관계, 속성으로 설명한다.

엔티티

  • ER MODEL 의 기본
  • DB의 가장 작은 단위

속성 ( Attribute )

  • 엔티티를 설명하는 특성
  • 엔티티는 각각의 속성에 값을 가지고 있다.
  • 각각의 속성은 관련된 데이터 타입을 가진다.

속성의 종류

  • Simple / Atomic

    • 속성 하나가 단일 값을 가진다.
    • 속성이 가질수 있는 값들의 집합 ( Value set ) 을 가진다.
      • Ex. 나이가 15 ~ 70 사이여야 한다.
      • Ex. 이름은 16자리가 최대여야 한다.
  • Composite

    • 여러 속성이 하나의 속성을 이룬다.
    • 각각의 속성이 계층을 구성할수도 있다.
    • 소괄호를 통해 표현한다. (Zip code, Address)
    • Ex. 여러 정보로 구성된 주소
  • Multi-valued

    • 속성에 여러개의 값을 가질수 있다.
    • 중괄호를 통해 표현한다 {Color}
    • EX. 차의 색상 ( 여러개 있을수 있다 )
  • Composite과 Multi-valued가 같이 쓰일수 있다. ( Complex Attribute )

    • Ex. {PrevDegree(College, Year)}
  • Stored Attribute

    • 저장된 데이터
  • Derived attribute

    • 저장된 데이터로 추측할수 있는 정보
    • 생년월일을 통해 나이를 추측할수 있다.
  • Key attribution

    • 각각의 엔티티가 고유한 값을 가지는 속성
    • 단일 엔티티 타입에 여러개의 키를 가질수 있다.
    • 반드시 하나는 필요하다.


타입

엔티티 타입

  • 같은 속성을 가진 엔티티들의 타입, 엔티티의 구분을 위해 사용한다.
  • EMPLOYEE, COMPANY

엔티티 셋

  • 특정 엔티티 타입을 가지는 모든 엔티티들의 컬렉션

ER Diagram

  • Relationship이 없는 ER model

관계

  • 두개 혹은 그 이상의 엔티티들의 관계
    • 단일 : unary
      • 자기 자신
    • 두개 : binary
      • 부서와 직원
    • 세개 : tertiary
      • 공급자, 프로젝트, 부서

역할

  • 관계에서 엔티티는 역할을 가진다.
  • 역할은 이름을 가진다.
    • EMPLOYEE : employee / worker
    • DEPARTMENT : department / employer

자기참조관계 / Recursive relationship

  • 같은 엔티티를 참조하는 관계
    • Ex: 슈퍼바이저와 직원

Cardinality ratio ( of binary relationship )

  • 1:1, 1:N, N:1, N:M
  • 관계는 별도로 표기한다.

    1:1 Relationship

M:N Relationship

Participation Constraints

  • 참여 제약 조건

Total participation

  • 관계에 대해 최소한 한개 이상이 참여해야 하는 경우
    • EX. 주문 <> 물품
    • 주문이 있으려면 관련된 물품이 하나는 있어야 한다.
  • 두줄로 표현

Partial participation

  • 관계에 대해 참여하지 않아도 되는 경우
    • EX. 고객 <> 주문
    • 어떤 고객은 주문을 아예 안할수도 있다.
  • 한줄로 표현

  • 학생은 수업을 안들을수 있지만, 수업은 학생이 있어야 한다.

Relationship Attribute

  • 관계에 대해 특정 속성을 가질수 있다.
    • Ex. 직원이 특정부서에서 일한 시간
  • 대부분의 M:N 관계에서 사용된다.

Weak entity types

  • 자기 자신을 위한 key값을 가지지 않는 엔티티 타입, Key를 가지면 Strong entity type
  • 자식 엔티티 타입으로도 불린다.
  • 다른 엔티티 ( 부모 엔티티 ) 와 관련됨으로서 식별될수 있다.
  • 두개의 사각형으로 표기한다.

관련 엔티티

  • Partial key
    • 강한 엔티티 타입의 키와 결합해서 쓰일 때 자신의 엔티티를 고유하게 식별해주는 약한 엔티티 타입이 가진 키
    • 같은 소유 엔티티에 존재하는 다른 약한 엔티티를 구분하기 위해 사용된다.
  • 점선으로 표기한다.
  • 이 외에도 자신을 소유한 엔티티를 식별하기 위한 값을 가진다. ( 대체로 부모 엔티티의 id를 사용 )

관계

  • Strong type과 Weak type 의 관계는 두개의 마름모로 표기
  • Weak entity는 반드시 관계가 필요 ( total participation ) 하다.


  • 참여 제약조건과 같이 적은 버전.

엔티티 명명규칙

  • 단수형
  • 대분자
  • 속성은 첫글자 대문자
  • 역할은 소문자
  • 속성은 추가 명사 사용
  • 관계는 동사 사용


Participation constraint (min, max) notation

  • 관계 타입과 엔티티 타입을 연결하는 실선 위에 (min, max) 형태로 표기한다.
  • 어떤 관계 타입에 참여하는 각 엔티티 타입에 대하여,
    min은 이 엔티티 타입 내의 각 엔티티는 적어도 min 번 관계에 참여함을 의미한다.

    min=0 : 어떤 엔티티가 반드시 관계에 참여해야 할 필요는 없음을 의미한다.

  • 어떤 관계 타입에 참여하는 각 엔티티 타입에 대하여,
    max는 이 엔티티 타입 내의 각 엔티티는 최대 max 번 관계에 참여함을 의미한다.

    max=* : 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미한다.

관계에 참여하는 엔티티의 숫자가 아니라, 하나의 엔티티가 몇 번 관계에 참여하는 가를 나타낸다.


Constraint Violations

UPDATE 연산자

  • 튜플을 삽입/삭제/변경하는 연산자
  • 위 연산들이 적용될때 반드시 Integrity constraint가 위반되어선 안된다.

Integrity violation시 대처법 4가지

  1. Violation을 일으키는 연산자의 실행을 취소한다.
    • RESTRICT, REJECT - 대부분의 DBMS
  2. 연산을 실행하되 사용자에게 Violation 을 알린다.
    • 잘 쓰이지 않음
  3. VIOLATION을 일으키지 않게 추가적인 업데이트를 실행
    • CASCADE, SET NULL SET DEFAULT
  4. 사용자가 지정한 에러 수정 루틴을 실행한다.

INSERT에서 가능한 VIOLATION

  • PK자리에 NULL값을 넣기
    • PK는 Entity Integrity Constraint 에 의해 NULL값이 될수 없다.
  • 중복된 값을 PK로 넣기
    • PK는 튜플을 식별하기 위한 값이기에 반드시 Unique 해야 한다.
  • FK에 해당하는 PK가 없는 값 지정하기
    • Referential Constraint 를 위반한다.

DELETE에서 가능한 VIOLATION

  • 다른 FK가 참조중인 PK를 가지는 튜플을 삭제하려 할때 VIOLATION 이 생길수 있다.
  • 이 경우는 아래와 같이 해결할수 있다.
    1. 참조중인 튜플이 있어 삭제연산을 거부
    2. 참조중인 튜플까지 같이 삭제
    3. 참조중인 튜플의 FK값을 NULL/기본값으로 만듦
  • 위 해결방식은 반드시 테이블 만들때 FK 지정 당시 적어둬야 한다.

UPDATE에서 가능한 VIOLATION

DOMAIN CONSTRAINT

  • Update에서 Attribute에 허용된 값이 아닌 다른 값이 업데이트 되려는 경우

NOT NULL CONSTRAINT

  • NULL값이 될수 없는데 NULL로 업데이트 하는 경우

이외

  • PK가 업데이트 되는 경우
    • 튜플을 하나 삭제하고 새로 넣는것과 동일하다.
  • FK가 업데이트 되는경우
    • Referential constraint 를 어길수도 있다.

Transaction

  • 모두 진행되거나 아니면 아무것도 실행되지 않아야 하는 DB 연산자들의 모임
  • 수많은 상용 어플리케이션에서 사용
profile
만능 컴덕후 겸 번지 팬

0개의 댓글