본문 바로가기

Database

[DB]데이터 모델링

데이터 모델링의 개념

데이터베이스 생명주기

데이터베이스 생명 주기는 데이터베이스 생성과 운영에 관련된 특징을 의미하고, 아래의 5단계로 구성됩니다.

 

  • 요구사항 수집 및 분석
  • 설계
  • 구현
  • 운영
  • 감시 및 개선

요구수항 수집 및 분석의 단계에서는 사용자들의 요구사항을 듣고 분석하여 데이터베이스를 어느 정도의 크기로 구축할지 범위를 정합니다.

설계 단계에서는 분석된 요구사항을 기반으로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계) 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)합니다. 즉, 설계 단계에서 개념적 모델링을 하여 ERD를 도출하고 이를 이용하여 관계 스키마 모델을 도출하고 이를 물리적 모델링을 통해 관계 스키마를 도출합니다.

구현 단계에서는 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰 OR 인덱스)를 만듭니다.

운영 단계에서 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공합니다.

감시 및 개선 단계에서는 데이터베이스 자체의 문제점을 파악하여 개선합니다.

 

 

 

3가지 모델링

  • 개념적 모델링: 개체와 개체들 간의 관계에서 ERD를 만드는 과정입니다.
  • 논리적 모델링: ERD를 통해 관계 스키마 모델을 만드는 과정입니다.
  • 물리적 모델링: 관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정

개념적 모델링(정보 모델링)이란 요구사항을 수집, 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정입니다. 즉, 개체(Entity)를 추출하고 개체들 간의 관계를 정의하여 ERD를 만드는 과정까지를 이야기합니다.

 

논리적 모델링이란 개념적 모델링에서 만든 ERD를 가지고 사용하려는 DBMS에 맞게 사상(=Mapping)하여 실제 데이터베이스로 구현하기 위한 관계 스키마 모델을 만드는 과정입니다. 논리적 모델링을 하는 과정에는 상세속성 추축, 정규화 수행, 데이터 표준화 수행이 있습니다.

 

물리적 모델링이란 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정입니다. DBMS의 특성에 맞게 저장 구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있습니다. 물리적 모델링을 하는 경우에 트랜잭션, 저장공간 설계의 측면에서 3가지를 고려해야 하는데 1. 응답시간을 최소화 해야 합니다. 2.동시에 많은 트랜잭션을 발생시킬 수 있어야 합니다. 3. 데이터가 저장될 공간을 효율적으로 배치해야합니다. 

 

그림으로 보는 모델링

개념적 모델링

 

 

논리적 모델링

 

물리적 모델링


ER 모델

ER 모델

  • ER 모델: 세상의 모든 사물을 개체(Entity)와 개체 간의 관계(Relationship)로 표현
  • 개체: 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물로 개체의 특성을 나타내는 속성(Attribute)에 의해 식별됩니다.
  • 개체끼리 서로 관계를 지닙니다.

간단히 말해, ER 모델은 현실 세계에서 개체들을 도출하고 개체들 사이의 관계를 기술하는 것으로, 아래의 그림을 참고하면 쉽게 이해할 수 있습니다.

 

우리는 ER 모델으로 ERD(ER Diagram)을 만들 수 있습니다. ERD에서 개체는 □, 개체의 속성은 ○, 개체 사이의 관계는 ◇로 표현됩니다.

 

 

개체와 개체타입

  • 개체(Entity): 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체입니다.
  • 데이터베이스에서 주로 다루는 개체: 낱개로 구성된 것으로 각각 데이터 값을 가지며 데이터 값이 변하는 것입니다.
  • 비슷한 속성의 개체 타입을 구성하며 개체 집합으로 묶입니다.

데이터베이스에서 개체란 데이터를 가진 대상이 됩니다. 그리고 데이터들이 가진 공통의 속성이 개체타입(Entity Type)이 되며 여러 개의 개체가 모여있는 것을 개체 집합(Entity Set)이라고 합니다.

예를 들어 '스타크래프트', '피파온라인', '철권'과 같은 개체들이 있다고 하면 이 개체들을 모아둔 집합을 개체 집합이라고 하며 게임이라는 공통된 것이 이 개체타입이 됩니다. 아래에서는 도서에 대한 개체의 예시를 보여주고 있습니다.

 

위에서 언급하였듯이 ERD에서 개체 타입은 직사각형으로 표현됩니다. 개체에는 약한 개체강한 개체가 있는데 강한 개체란 다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체를 의미하고 우리가 생각하는 일반적인 개체로 이해하면 됩니다. 약한 개체란 독자적으로 존재할 수 없으며 반드시 상위 개체 타입을 가지고 2중 직사각형을 활용하여 그려줍니다.

 

 

속성(Attribute)

  • 속성이란 개체가 가진 성질을 의미합니다.
  • 속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결됩니다.
  • 속성의 이름은 타원의 중앙에 표기합니다.
  • 속성이 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 긋습니다.(기본키)

예를 들어 도서라는 개체 타입이 있다고 가정하면 도서의 속성에는 책 이름, 판매 가격, 출판사 등이 있을 수 있습니다. 그리고 도서의 이름은 개체를 유일하게 식별할 수 있는 키이므로 타원 안에 밑줄을 그어 적어줍니다.

 

 

관계와 관계 타입

  • 관계(Relationship)란 개체 사이의 연관성을 나타내는 개념입니다.
  • 관계 타입(Relationship Type)이란 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것입니다.
  • 관계 집합은 관계로 연결된 집합을 의미합니다.

예를 들어 도서와 고객이라는 개체가 있다고 가정합시다. 고객은 도서를 보고 주문을 하므로 고객과 도서 사이에는 주문이라는 관계가 생길 수 있습니다.

여기서 관계에 묶여있는 개체의 개수에 따라 1진 관계, 2진 관계, 3진 관계 그리고 N진 관계라고 이야기합니다.

아래의 그림과 같은 경우에는 2진 관계라고 할 수 있습니다. 주문은 도서와 고객, 2 개체와 관계가 묶여있습니다.

 

그리고 관계에는 관계 대응수(카디날리티, Cardinality)라는 개념이 있는데, 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수를 관계 대응수라고 정의합니다.

관계 대응수는 일대일 관계, 일대다 관계, 다대일 관계, 다대다 관계가 있습니다. 한 학생이 하나의 학번을 갖는 것을 일대일 관계, 한개의 학과에 여러 명의 학생이 있는 것을 일대다 관계, 여러 명의 학생이 여러 개의 강좌를 듣는 것을 다대다 관계라고 합니다.

 

관계 대응수 에서 1, N, M은 각 개체가 관계에 참여하는 최댓값을 의미합니다. 하지만 개체의 최솟값을 표시하지 않습니다는 단점이 있는데, 이를 보완하기 위해 ERD에서 최솟값과 최댓값을 (최솟값, 최댓값)으로 표기합니다.

 

학과와 학생의 관계는 1개의 학과에 여러 명의 학생이 있을 수 있기 때문에 1:N의 관계입니다. 그리고 이를 (최솟값, 최댓값)으로 표현하면 아래와 같습니다. 학과에는 반대 쪽에 (1, 1)이 있는 것 그리고 학생에는 반대쪽에 (0, *) 있는 것으로 보아 하나의 학과에는 여러 명의 학생이 속할 수 있으며 최솟값이 0인 것을 보아 학과에 학생이 없는 경우도 있음을 알 수 있습니다.

 

 

ISA 관계

자바의 상속에서 배웠듯이 사람은 학생이 될 수 있고, 어떤 학생은 휴학생, 재학생, 졸업생으로 나뉘어 질 수 있습니다.

이러 관계에서 결국 학생 IS A 휴학생 OR 재학생 OR 졸업생과 같은 관계가 성립합니다. 이런 관계를 IS A관계라고 하고 아래와 같이 역삼각형으로 표현할 수 있습니다.

 

 

참여 제약 조건

개체 집합 내에서 모든 개체가 참여할 수도 있지만 그렇지 않은 경우도 있습니다. 그래서 우리는 모든 개체의 참여 유무에 따라 전체 참여구분 참여로 이를 구분합니다.

전체 참여는 관계에 개체 집합의 모든 개체가, 부분 참여는 일부의 개체만 참여하는 것입니다. 즉, 전체 참여는 (최솟값, 최댓값)에서 최솟값이 1 이상으로 모두 참여한다는 것이고, 부분 참여는 최솟값이 0 이상으로 참여하지 않는 개체가 있을 수 있다는 의미입니다. 학생이 강좌를 수강하는 관계에서 모든 강좌는 반드시 수강에 포함되어야 하지만 학생은 수강을 하지 않을 수 있으므로 아래의 그림과 같이 표현할 수 있습니다.

 

관계에서 각각의 개체는 어떠한 역할을 담당할 수 있기에, 그 역할을 아래와 같이 다이어그램에 표시해주기도 합니다.

 

순환적 관계는 하나의 개체 타입이 동일한 개체 타입과 순환적으로 관계를 가지는 형태를 의미합니다. 1진 관계에서 순환적 관계가 표현될 수 있는데, 어떤 학생은 멘토링이라는 관계에서 멘토가 될 수 있고, 멘티가 될 수도 있습니다.

 

 

약한 개체 타입과 식별자

약한 개체 타입이란 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속적인 개체 타입을 의미합니다.

약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체타입의 개별 개체를 고유하게 식별하는 속성을 식별자(Discriminator) 혹은 부분키(Partial Key)라고 합니다.

 

예를 들어 가족과 직원이라는 두 개체가 부양이라는 관계를 맺고 있다고 합시다. 직원에는 직원번호, 이름, 직책 이라는 속성들이 있으며, 직원번호가 직원의 고유키 입니다. 그런데 그 직원이 부양하는 가족이 있다고 할 때 직원이 없으면 부양가족도 존재할 수 없으므로 가족은 약한 개체가됩니다. 또한, 부양가족의 이름이라는 속성은 직원의 직원번호와 결합하여 약한 개체 타입을 식별할 수 있으므로 식별자가 됩니다.

 

 

IE 표기법

Peter Chen 표기법과 IE 표기법

 

그리고 개체들 사이의 관계를 정의하는 방법은 아래의 표를 참고하면 됩니다. 개체가 강한 개체 타입을 갖는 경우(비 식별자적 관계)에는 점선, 약한 개체 타입(식별자적 관계)을 갖는 경우에는 실선으로 표시합니다.

N 쪽의 관계를 표현하기 위해서는 새발을 그려줍니다. ○을 그려주는 것은 최소 참여가 0인 경우. 즉, 최소 참여이고, | 를 그려주는 것은 최소 참여가 1인 경우. 즉, 필수 참여인 경우입니다.

 

직원이 특정 부서에 소속되어 있는 경우 그리고 직원이 부양가족이 있는 경우에 대한 ERD를 IE표기법으로 나타내면 아래다음과 같습니다. 

직원은 반드시 부서에 소속되어야 하므로 비식별자적 관계. 즉, 점선으로 이어져 있어야 하며 부서에 직원이 없을 수 도 있으므로 부서에 대응하는 직원에 ○ 표시를 넣어주고, 모든 직원은 부서에 포함되어야 하므로 | 을 그려줍니다.

그리고 직원은 부양가족이 있을 수도 있고 없을 수도 있으므로 대응하는 부양가족의 표시에 ○을 넣어주지만 부양가족은 자신들을 부양해주는 사람(직원)이 반드시 있어야 하므로 대응하는 직원의 표시에 | 를 넣어줍니다. 또한, 부양가족은 직원이 없이 부양가족의 이름만으로는 식별이 불가능하므로 (직원번호, 이름)을 식별자로 사용하며 실선으로 표기합니다.


오라클로 배우는 데이터베이스 개론과 실습

1장. [DB]데이터베이스 시스템

2장. [DB]관계 데이터 모델

3장. [DB]SQL 기초

4장. [DB]SQL 고급

5장. [DB]데이터베이스 프로그래밍

6장. [DB]데이터 모델링

7장. [DB]정규화(Normalization)

8장. [DB]트랜잭션, 동시성 제어, 회복

참고

https://mangkyu.tistory.com/27

 

[Database] 6. 데이터 모델링(Data Modeling)

[ 본 사진은 쉽게 배우는 오라클로 배우는 데이터베이스 개론과 실습 ppt에서 캡처했습니다. ]이번 장에서는 데이터 모델링(Data Modeling), ER 모델(ER Model)에 대해 알아보겠습니다. 1. 데이터 모델링

mangkyu.tistory.com

 

 

 

'Database' 카테고리의 다른 글

[DB]정규화(Normalization)  (0) 2024.09.19
[DB]집합 관련 연산자(UNION, INTERSECT, MINUS)  (0) 2024.09.19
[DB]데이터베이스 프로그래밍  (0) 2024.09.12
[DB]SQL 고급  (1) 2024.09.11
[DB]내장 함수  (0) 2024.09.11