본문 바로가기
Develop/Database

DB | 데이터 모델링

by Hoya324 2023. 8. 28.

Chapter 06 데이터 모델링

데이터 모델링의 개념

데이터베이스 생명주기

  • 데터베이스는 최초 사용자의 요구에 의해 구축되어 사용되다가 필요에 따라 개선 또는 다시 구축되어 사용된다.
  • 데이터베이스의 생성과 운영에 관련된 특징을 데이터베이스 생명주기라고 한다.

스크린샷 2023-08-02 오후 3 54 01

  1. 요구사항 수집 및 분석
    사용자들의 요구사하을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계
  2. 설계
    분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)를 한다.
  3. 구현
    설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)를 만든다.
  4. 운영
    구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공한다.
  5. 감시 및 개선
    데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선한다.

데이터 모델링 과정

스크린샷 2023-08-02 오후 3 55 19

요구사항 수집 및 분석

  1. 실제 문서를 수집하고 분석한다.
  2. 담당자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수형한다.
  3. 비슷한 업무를 처리하는 기존의 데이터베이스를 분석한다.
  4. 각 업무와 연관된 모든 부분을 살펴본다.

개념적 모델링

  • 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정
  • 개체(entity)를 추출하고 각 객체들 간의 관계를 정의하여 ER다이어그램(ERD, Entity Relationship Diagram)을 만드는 과정까지를 말한다.

스크린샷 2023-08-02 오후 3 58 21

논리적 모델링

  • 논리적 모델링은 개념적 모델링에서 만든 ER 다이어그램을 사용하려는 DBMS에 맞게 사상(매핑, mapping)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다.

스크린샷 2023-08-02 오후 3 59 16

  • 논리적 모델링 과정
  1. 개념적 모델링에서 추출하지 안핬던 상세 속성들을 모두 추출한다.
  2. 정규화를 수행한다.
  3. 데이터 표준화를 수행한다.

물리적 모델링

  • 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
  • DBMS의 특성에 맞게 저장 구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있다.

스크린샷 2023-08-02 오후 4 00 56

  • 물리적 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려할 사항
  1. 응답시간을 최소화해야 한다.
    • 트랜잭션이 시작되어 종료될 때까지 걸리는 시간을 응답시간이라고 한다.
  2. 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다.
  3. 데이터가 저장될 공간을 효율적으로 배치해야 한다.
    • 저장될 데이터의 특성을 파악하여 저장 방법을 결정한다.
    • 데이터의 사용 형태에 따라 검색을 위한 인덱스를 설계하여 최적의 성능을 낼 수 있도록 한다.

트랜잭션 : DBMS가 데이터를 다루는 논리적인 작업의 단위로, 자료의 입력에서부터 처리가 완료될 때까지 일련의 단계를 말한다.

ER 모델

ER(Entity Relationship) 모델

  • 세상의 사물을 개체와 개체 간의 관계로 표현한다.

개체

  • 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물이다.
  • 개체의 특성을 나타내는 속성(attribute)에 의해 식별된다. 개체끼리 서로 관계를 가진다.

ER 다이어그램

  • ER 모델은 개체와 개체 간의 관계를 표준화된 그림으로 나타낸다.

스크린샷 2023-08-02 오후 4 08 36

개체와 개체 타입

개체(entity)란?

  • 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체이다.
  • 데이터베이스에서 주로 다루는 개체는 낱개로 구성된 것, 낱개가 각각 데이터 값을 가지는 것이다.
  • 비슷한 속성의 개체 타입(entity type) 을 구성하며, 개체 집합(entity set) 으로 묶인다.
  • 개체는 요구사항 수집 및 분석 단계에서 만들어진 요구사항 명세서를 통해 도출된다.
    • 일반적으로 개체는 수집된 요구사랑 중 명사인 경우가 많다.
  • 개체는 반드시 데이터베이스화 되어야 한다.

개체의 특징

  • 유일한 식별자에 의해 식별이 가능하다.
  • 꾸준한 관리를 필요로 하는 정보이다.
  • 두 개 이상 영속적으로 존재한다.
  • 업무 프로세스에 이용된다.
  • 반드시 자신의 특징을 나타내는 속성을 포함한다.
  • 다른 개체와 최소 한 개 이상의 관계를 맺고 있다.

개체 타입의 ER 다이어그램 표현 - 개체 타입의 유형

  • 강한 개체: 다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체
  • 약한 개체: 독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가진다.

스크린샷 2023-08-02 오후 7 31 27

속성

  • 속성(attribute): 개체가 가진 성질

속성의 ER 다이어그램 표현

속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결된다.
속성의 이름은 타원의 중앙에 표기한다.
속성이 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 긋는다.

스크린샷 2023-08-02 오후 7 34 39

속성의 유형

스크린샷 2023-08-02 오후 7 42 20

관계와 관계 타입

관계: 개체 사이의 연관성을 나타내는 개념.

관계 타입: 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합은 관계로 연결된 집합을 의미한다. (마름모가 관계 타입을 뜻한다.)

스크린샷 2023-08-02 오후 7 44 48

관계 타입의 ER 다이어그램 표현

스크린샷 2023-08-02 오후 7 49 35

차수에 따른 유형

  • 관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수라고 한다.

스크린샷 2023-08-02 오후 7 52 27스크린샷 2023-08-02 오후 7 53 29

관계 대응 수에 따른 유형

  • 관계 대응수(cardinality): 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수

스크린샷 2023-08-02 오후 7 54 07

  1. 일대일 관계 (1:1)
    좌측 개체 타입에 포함된 개체가 우측 개체 타입에 포함된 개체와 일대일로 대응하는 관계

스크린샷 2023-08-02 오후 7 55 57

  1. 일대다(1:N), 다대일(N:1) 관계
    실제 일상생활에서 가장 많이 볼 수 있는 관계로, 한쪽 개체 타입의 개체 하나가 다른쪽 개체 타입의 여러 개체와 관계를 맺는다.

스크린샷 2023-08-02 오후 8 14 03

  1. 다대다(N:M) 관계
    각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있는 관계를 말함.

스크린샷 2023-08-02 오후 8 15 19

관계 대응수의 최솟값과 최댓값

  • 관계 대응수 1:1, 1:N, M:N에서 1, N, M은 각 개체가 관계에 참여하는 최댓값을 의미한다.
  • 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에 (최솟값, 최댓값)으로 표기한다.

스크린샷 2023-08-02 오후 8 25 25

  • max 값을 *로 표시하면 임의의 수만큼 참여할 수 있다는 뜻이다.

스크린샷 2023-08-02 오후 8 40 06

ISA 관계

  • 상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태
  • 상위 개체 타입을 슈퍼 클래스, 하위 개체 타입을 서브 클래스라고 한다.

스크린샷 2023-08-02 오후 8 42 59

참여 제약 조건

  • 개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분할 수 있다.
  • 전체 참여: 모든 개체가 관계에 참여
  • 부분 참여: 일부만 참여

스크린샷 2023-08-02 오후 8 46 06

역할

  • 개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할을 담당한다.
  • 관계에서 역할이 명확하지 않을 경우에 반드시 표기

스크린샷 2023-08-02 오후 8 46 50

순환적 관계

  • 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 가지는 형태

스크린샷 2023-08-02 오후 11 12 18

약한 개체 타입과 식별자

  • 약한 개체 타입: 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입
  • 약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(discriminator) 혹은 부분키(partial key)라고 한다.

스크린샷 2023-08-02 오후 11 22 51

IE (Informaion Engineering) 표기법

  • ER 다이어그램을 더 축약하여 쉽게 표현하면 Erwin 등 소프트웨어에서 사용한다.
  • IE 표기법에서 개체 타입과 속성은 직사각형으로 표현한다.

스크린샷 2023-08-02 오후 11 24 12

  • IE 표기법에서 관계는 실선 혹은 점선으로 표기한다.

스크린샷 2023-08-02 오후 11 24 55스크린샷 2023-08-02 오후 11 28 58

ER 모델을 관계 데이터 모델로 사상

  • ER 모델은 데이터베이스 생명주기의 개념적 모델링에서 사용하는 모델로, ER 다이어그램을 통해 완성된다.
  • 완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데, 이 단게에서 mapping이 이루어진다.

ER 모델과 관계 데이터 모델의 사상(mapping) 알고리즘

스크린샷 2023-08-02 오후 11 32 11

개체 타입의 사상

[1단계] 강한(정규) 개체 타입

  • 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성한다.
  • 각 개체 타입의 일반 속성은 각각 새로 생성하는 릴레이션의 속성으로 표시하고, 기본키와 외래키는 PK나 FK 등으로 표시한다.

[2단계] 약한 개체 타입

  • 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성한다.
  • 이때, 유도된 속성이나 복합 속성 등은 속성의 성격에 맞게 판단하여 mapping한다.

이진 관계 타입

스크린샷 2023-08-02 오후 11 37 19

관계 타입의 사상

  • 관계 타입은 각 관계 타입이 맺고 있는 차수와 관계 대응 수에 따라 mapping 방식을 구분할 수 있다.

스크린샷 2023-08-02 오후 11 38 35스크린샷 2023-08-02 오후 11 41 51

[3단계] 이진 1:1 관계 타입

  • 이진 1:1 관계 타입의 경우 [방법1] ~ [방법4] 까지 모든 유형으로 사상이 가능하다.
  • 개체가 가진 정보 유형에 따라 판단을 하면 된다.
  • [방법1] 또는 [방법2] 중 외래키(FK)에 NULL 값이 덜 발생하는 방법을 사용하면 된다.

스크린샷 2023-08-02 오후 11 46 04

[4단계] 이진 1:N 관계 타입

  • 이진 1:N 관계 타입의 경우 N의 위치에 따라 [방법1] 또는 [방법2]의 유형으로 사상된다.
  • 1:N 관계에서는 N에 외래키를 가지면 된다.

스크린샷 2023-08-02 오후 11 48 53

[5단계] 이진 M:N 관계 타입

  • 이진 M:N 관계 타입은 [방법4]의 유형으로 사상된다.
  • 양쪽 모두 다수의 대응 수를 가지므로 새로운 릴레이션을 반드시 생성해야 한다.
  • 새로운 릴레이션은 교차 테이블이라고 한다.

스크린샷 2023-08-02 오후 11 50 38

[6단계] N진 관계 타입

  • ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 [방법4]의 유형으로 사상된다.

스크린샷 2023-08-02 오후 11 51 28

다중값 속성의 사상

  • 속성의 사상(mapping) 시 단일 값으로 표현된 속성은 특별한 문제 없이 관계 데이터 모델로 직접 mapping 할 수 있다.
  • 하지만, 다중값 속성의 경우 직접 mapping할 수 없다.
    • 다중값 속성: 하나의 속성에 여러 값을 가질 수 잇는 속성을 말한다.

스크린샷 2023-08-02 오후 11 58 40

[7단계] 다중값 속성

  • 속성의 개수를 알 수 없는 경우 [방법1]을, 속성의 개수가 제한적으로 정해지는 경우 [방법2]를 사용한다.

스크린샷 2023-08-03 오전 12 00 08

Reference

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

DB | 트랜잭션, 동시성 제어, 회복  (1) 2023.08.28
DB | 정규화  (0) 2023.08.28
DB | 데이터베이스 프로그래밍  (1) 2023.08.27
DB | SQL 고급  (2) 2023.08.27
DB | SQL 기초  (0) 2023.08.25