[#4] 데이터 모델링

Posted by Neph's Blog on October 10, 2021

데이터 모델링과 데이터 모델의 개념

데이터 모델링

  • 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환과정 (가장 중요한 작업)
  • 데이터베이스 설계의 핵심과정
  • 추상화 수행
    • 어떤 관점을 통해 추출한 것
    • 어떤 특정 상황에 필요한 부분만 빼내는 것

2단계 데이터 모델링

  • 개념적 데이터 모델링
    • 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
  • 논리적 데이터 모델링
    • 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업

데이터 모델 (data model)

  • 데이터 모델링의 결과물을 표현하는 도구
  • 개념적 데이터 모델
    • 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
    • 개체-관계 모델
  • 논리적 데이터 모델
    • 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
    • 관계 데이터 모델

데이터 모델의 구성요소

  • 연산 (operation)
    • 개체 인스턴스 처리 작업 명세
  • 데이터 구조 (data structure)
    • 개체 타입과 이들 간의 관계 명세
  • 제약조건 (constraint)
    • 데이터의 논리적 제약 명세

개체 - 관계 모델

개체 - 관계 모델

  • 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현
  • 핵심요소: 개체, 속성, 관계

개체 - 관계 다이어그램 (E-R diagram)

  • 개체 - 관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것

개체 (entity)

  • 저장할 가치가 있는 중요 데이터를 가지고 있고 다른 것과 구별되는 사람, 사물, 개념, 사건 등
    • i.e., 서점에 필요한 개체: 고객, 책
    • i.e., 학교에 필요한 개체: 학과, 과목, 학생
  • E-R 다이어그램에서 사각형으로 표현하고 사각형 안에 이름을 표기

image-20211008093939217

속성 (attribute)

  • 개체나 관계가 가지고 있는 고유의 특성
  • E-R 다이어그램에서 타원으로 표현하고 타원 안에 이름을 표기

image-20211008094924510

개체 타입

  • 개체를 고유의 이름과 속성들로 정의한 것

개체 인스턴스

  • 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체

개체 집합

  • 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것

image-20211008095151056

속성의 분류

image-20211008095354541

단일 값 속성과 다중 값 속성

  • 단일 값 속성
    • 값을 하나만 가질 수 있는 속성
  • 다중 값 속성
    • 값을 여러 개 가질 수 있는 속성
    • E-R 다이어그램에서 이중타원으로 표현

image-20211008095808493

단순 속성과 복합 속성

  • 단순 속성
    • 의미를 더는 분해할 수 없는 속성
    • i.e., 고객 개체의 아이디
    • i.e., 책 개체의 이름 및 가격
  • 복합 속성
    • 의미를 분해할 수 있는 속성
    • i.e., 고객 개체의 주소 속성
      • 도, 시, 동, 우편번호 등으로 의미를 세분화할 수 있음
      • 특정 범위 제한 검색이 의미 있음 (어떤 시에 사는 사람 검색 등)
      • 상황에 따라서는 단순속성이 될수도 있음

image-20211008100103624

유도 속성

  • 기존의 다른 속성의 값에서 유도되어 결정되는 속성
  • 값이 별도로 저장되지 않음
    • i.e., 책 개체의 가격과 할인율 속성으로 계산되는 판매가격 속성
  • E-R 다이어그램에서 점선 타원으로 표현

image-20211008100413593

널 속성

  • 널 값이 허용되는 속성

널(null) 값

  • 속성 값이 그 개체에 “해당되지 않는” (N/A; not applicable) 경우
    • i.e., 학생 개체의 병역 기간 속성 (여학생의 경우 N/A)
  • 속성 값을 “알 수 없는” (unknown) 경우
    • 그 값이 존재하지만 “누락” (missing)인 경우
      • i.e., 이름 속성
    • 그 값이 존재하고 있는지 조차 알 수 없어 “모르는” (not known) 경우
      • i.e., 재직중인 회사

키 속성

  • 각 개체 인스턴스를 식별하는데 사용되는 속성
  • 둘 이상의 속성들로 구성되기도 함
  • E-R 다이어그램에서 밑줄로 표현

image-20211008100943357

관계

  • 개체와 개체가 맺고 있는 의미 있는 연관성
  • 개체 집합들 사이의 대응 관계, 즉 매핑을 의미
  • E-R 다이어그램에서 마름모로 표현

image-20211008101846886

관계의 유형 : 매핑 카디널리티 기준

  • 일대일 (1:1) 관계
  • 일대다 (1:n) 관계
  • 다대다 (n:m) 관계

매핑 카디널리티

  • 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수

일대일 (1:1) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음

일대다 (1:n) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음

다대다 (n:m) 관계

  • 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러개와 관계를 맺을 수 있음

관계의 참여 특성

  • 필수적 참여 (전체 참여)
    • 모든 개체 인스턴스가 관계에 반드시 참여해야 되는 것을 의미
    • i.e., 고객 - 책 (모든 고객은 반드시 책을 구매해야 하도록 구성한 경우 고객은 책과 “구매” 관계를 가져야 함)
    • i.e., 교수 - 단과대학 (교수는 반드시 특정 단과대학과 “소속” 관계를 가져야 함)
  • 선택적 참여 (부분 참여)
    • 개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미
    • i.e., 학생 - 과목 (휴학 등의 사유로 “수강”의 관계가 없을 수 있음)
image-20211008131514926
고객은 반드시 “구매” 관계를 맺어야 하지만 책은 그렇지 않아도 됨. 따라서 고객과 구매 사이에만 이중선을 그은 모습

관계의 종속성

  • 약한 개체
    • 다른 개체의 존재 여부에 의존적인 개체
    • 자기 자신의 속성으로만 키를 명세할 수 없는 개체 타입 (유니크한 키 없음)
    • 부분키(partial key) 를 통해 약한 개체집합 내에서 서로 구별할 수 있음
  • 강한 개체
    • 다른 개체의 존재 여부를 결정하는 개체
  • 특징
    • 강한 개체와 약한 개체는 일반적으로 일대다의 관계가 성립됨
    • 약한 개체는 강한 개체와의 관계에 필수적으로 참여함
    • 약한 개체는 강한 개체의 키를 포함하여 키를 구성함
  • E-R 다이어그램에서 약한 개체는 이중 사각형으로 표현하고, 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현

관계 인스턴스들이 유지해야 할 제약조건

  • 개체 집합간 매핑 카디널리티
  • 전체 참여
  • 관계의 종속성

삽입/삭제/변경 연산 시 제약 조건을 반드시 검토해야함

논리적 데이터 모델

논리적 데이터 모델의 개념과 특성

  • E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 때 표현하는 논리적 구조
    • 데이터베이스의 논리적 구조 = 데이터베이스 스키마(schema)
  • 사용자가 생각하는 데이터베이스의 모습 또는 구조

관계 데이터 모델

  • 일반적으로 많이 사용되는 데이터 모델
  • 데이터베이스의 논리적 구조가 2차원 테이블 형태