본문 바로가기

CS/Database

Ch 04. 데이터 모델링

김연희, 『데이터베이스 개론』, 한빛아카데미(2022.07.20), Chpater 04

Ch4. 데이터 모델링

데이터 설계 과정에 필요한 데이터 모델링과 데이터 모델의 개념에 대해 학습한다.

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

4.1.1. 데이터 모델링

데이터 모델링
: 현실 세계의 데이터를 컴퓨터 데이터베이스로 변환 하는 것.

종류 및 절차

  1. 개념적 모델링(추상화)
    : 실제 세계의 다양한 정보 중 유의미한 데이터만을 뽑아 추출하는 것.
  2. 논리적 모델링(구조화)
    : 추상화한 데이터를 데이터베이스에 정형화된 구조로 표현하는 것.

4.1.2. 데이터 모델

데이터 모델
: 데이터 모델리의 결과물을 표현하는 도구.

종류

  • 개념적 데이터 모델
    • 개념적 모델링한 결과를 표현
  • 논리적 데이터 모델
    • 논리적 모델링한 결과를 표현

구성

  • 데이터구조
  • 연산
  • 제약조건

4.2. 개체-관계 모델

개체-관계 모델
: 피터 첸이 176년에 제안한 개체(entity)와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현하는 방법

개체-관계(E-R) 다이어그램
: 개체-관계 모델을 그림으로 표현한 것.

4.2.1. 개체

개체
: 실제 세계를 개념화한 데이터 중, 다른 데이터 묶음들과 구분되는 하나의 데이터 묶음. Django에서 Model

개체 타입(Entity Type)
: 개체를 고유한 이름과 속성들로 정의한 것. Django에서 ModelClass

개체 인스턴스(Entity Occurence)
: 개체 타입을 만족하는 실체화된 개체. Django엣 ModelClass의 인스턴스

4.2.2. 속성

속성(Attribute)
: 개체가 가지고 있는 고유한 특성으로, 데이터의 가장 논리적 단위이다. Django에서 ModelClass의 필드.

속성의 분류

  • 속성 값의 갯수
    • 단일 값 속성(single-valued attribute)
      특정 개체를 구성하는 속성 값이 하나인 것. Ex. 이름, 주소, 제목, ...
    • 다중 값 속성(multi-valued attribute)
      특정 개체를 구성하는 속성 값이 여러개일 수 있는 것. Ex. 전화번호, 전자기기, 세대구성원, ...
  • 의미의 분해 가능성
    • 단순 속성(simple attribute)
      의미를 더 이상 분해할 수 없는 속성. Ex. 제목, 아이디, ...
    • 복합 속성(composite attribute)
      의미를 분해할 수 있는 속성. Ex. 주소(시, 구, 동), 생년월일, ...
  • 기타
    • 키 속성
      개체 인스턴스를 같은 타입의 다른 인스턴스들로부터 구분지을 수 있는 고유한 값.
      때로는 둘 이상의 속상들로 구성할 수도 있다. 예를 들어 고객아이디가 없는 경우 고객의 이름과 주소를 조합하여 키를 구성할 수도 있다.
    • 널 속성
      아직 결정되지 않았거나 모르는 값
      값이 결정되지 않았다는 의미로, 0이나 ''와는 의미가 다르다.
    • 유도 속성
      값이 별도로 저장되는 것이 아니라 기존의 다른 속성 값에서 유도되어 결정되는 속성으로, 보통 실제 속성값으로 모델에 정의되지는 않는다.
      • Ex. 판매가격 = 원가 * 할인율

4.2.3. 관계

개체 타입 간의 대응관계(관계 타입)로, 개체와 개체간의 실제 연관성(관계 인스턴스)을 만든다.
Django에서는 각각 intermediary table과 테이블의 record에 해당한다.

매핑 원소 수에 따른 유형

  • 1:1 관계
    개체 A의 각 개체 인스턴스가 객체 B의 개체 인스턴스 하나와 관계를 맺을 수 있다.
    • Ex. 인스타그램 팔로우
  • 1:n 관계
    개체 A의 각 개체 인스턴스가 객체 B의 개체 인스턴스 여러 개 관계를 맺을 수 있다.
    • Ex. SNS에 사용자 - 게시글
  • n:m 관계
    개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스 또한 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있다.
    • Ex. 학생 - 수강신청 교과목

관계의 참여 특성
개체 인스턴스의 관계 타입에 참여 강제성 여부

  • 필수 참여
    • 모든 게시글은 특정 사용자에 의해 작성되어야 하므로, 게시글 인스턴스는 사용자-게시글 간 1:N 관계에 필수 참여한다.
  • 부분 참여
    • 모든 사용자가 게시글을 작성할 필요는 없으므로, 사용자 인스턴스는 사용자-게시글 간 1:N 관계에 부분 참여한다.

관계의 종속성
개체 B가 개체 A의 존재 여부에 의존적이라면, 개체 B가 개체 A에 종속되어 있다고 한다. 이러한 종속을 특별히 존재종속이라고 한다.
이때 다른 개체의 존재 여부에 의존적인 개체 B를 약한 개체(weak entity)라 하고 다른 개체의 존재 여부를 결정하는 개체 A를 강한 개체(strong entity)라 한다.

  • Ex. 사용자-게시글 간 관계에서, 게시글이 약한 개체이고, 사용자가 강한 개체이다.

4.2.4. E-R 다이어그램

개체-관계(E-R) 다이어그램
: 개체-관계 모델을 그림으로 표현한 것

표기법

  • 개체 타입: 사각셩
  • 개체 필드: 타원
  • 개체 관계: 마름모
  • 관계 유형: 레이블

4.3. 논리적 데이터 모델

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

논리적 데이터 모델링
: DBMS를 이용해 E-R 다이어그램으로 표현된 개념적 구조를 DB에 어떠한 형태로 저장할지(논리적 데이터 모델, 스키마)를 결정

현재는 2차원 테이블 형태의 관계 데이터 모델이 가장 널리 쓰이고 있고, 과거에는 계층 데이터 모델과 네트워크 데이터 모델이 사용되었다.

4.3.2. 계층 데이터 모델

특징

  • 개체 타입 간의 관계가 ==트리== 구조이다.
  • 개체 타입 간의 관계는 항상 1:N 관계이다.
    • 1에 해당하는 것을 부모 개체, N에 해당하는 것을 자식개체라 한다.
    • N:M 관계를 표현하기 위해서는 1:N 개체 관계를 하나 더 생성해야 한다.
  • 부모 개체는 여러 개의 자식 개체를 가질 수 있다.

4.3.3. 네트워크 데이터 모델

특징

  • 개체 타입 간의 관계가 ==방향 그래프== 구조이다.
  • 개체 타입 간의 관계는 항상 1:N 관계이다.
    • 1에 해당하는 것을 오너(owner), N에 해당하는 것을 멤버(member)라 한다.
    • N:M 관계를 표현하기 위해서는 역방향 관계를 하나 더 정의한다.
  • 부모 개체는 여러 개의 자식 개체를 가질 수 있다.

'CS > Database' 카테고리의 다른 글

Ch 06. 관계 데이터 연산  (0) 2022.10.25
Ch 05. 관계 데이터 모델  (0) 2022.10.24
Ch 03. 데이터베이스 시스템  (0) 2022.10.21
Ch 02. 데이터베이스 관리 시스템  (0) 2022.10.19
Ch 01. 데이터베이스 기본 개념  (0) 2022.10.19