🔖Contents
🔥학습목표
1. 데이터 모델링의 개념을 이해한다.
2. 개념적 모델링 단계에 사용하는 ER 모델을 이해하고 작성 방법을 알아본다.
3. MySQL Workbench를 사용하여 ER 몯레을 작성해 본다.
4. 마당대학 데이터베이스를 ER 모델로 직접 설계해 본다.
PREVIEW
지금까지 데이터베이스 시스템과 SQL의 개념을 살펴보았다. 함께 언급한 마당서점 데이터베이스는 설명을 위한 예시였지만, 실제 서점에서 사용하는 데이터베이스와 유사하다. 이 장에서는 마당서점 데이터베이스가 어떻게 만들어졌는지를 살펴보자. 건축에 비유하면, 서점의 판매관리 소프트웨어는 건물 설계와 유사하고, 데이터베이스는 지반 설계와 같다. 건물을 지을 때와 마찬가지로 소프트웨어가 사용하는 데이터베이스에도 설계가 필요하다. 이것을 데이터베이스 설계 또는 데이터 모델링이라고 한다.
01 데이터 모델링의 개념
데이터 모델링은 현실 세계의 복잡한 개념을 단순화 · 추상화하여 데이터베이스화하는 과정이다.
최종적으로 구축된 데이터베이스는 현실 시계의 대상이 되었던 개념과 일치한다.


데이터베이스 생명주기
데이터베이스는 최초 사용자의 요구에 의해 구축되고 사용되다가 필요에 따라 개선 또는 재구축되어 사용된다. 이 같은 데이터베이스의 생성과 운영에 관련된 특징을 데이터베이스 생명주기(Database life cycle)라고 한다. [그림 6-3]은 데이터베이스의 생명주기를 나타낸 것이다.
- 요구사항 수집 및 분석
사용자들의 요구사항을 듣고 분석하여 데이터베이스의 구축의 범위를 정하는 단계다. 마당서점의 경우라면 고객, 운영자, 경영자 등 사용자의 범위와 서비스 수준을 정하는 것을 말한다. - 설계
분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별(개념적 설계)하고, 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)한다. - 구현
설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테입르 및 관련 객체(뷰, 인덱스 등)를 만든다. 또한 관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성한다. - 운영
구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공한다. - 감시 및 개선
데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선한다. 이 단계에서는 데이터베이스가 지속적으로 운영될 수 있도록 변경 및 유지 보수를 한다.

개념적 모델링
개념적 모델링conceptual modeling)은 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심 개념을 구분하고 전체적인 뼈대를 만드는 과정이다. 여기서 핵심 개념을 구분한다는 것은 개체(entity)를 추출하고 각 개체 간의 관계(relation)를 정의하여 ER 다이어그램(ERD, Entity, Relationship Diagram)을 만드는 과정까지를 말한다. 간단하게 설명하면 개체는 구체적으로 표현할 수 있는 실체이며, ER 다이어그램은 이러한 실체들의 관계를 표현한 것이다.

설계자는 사용자의 요구사항을 분석하여 가장 핵심적인 개체와 개별 개체를 식별할 수 있는 핵심 속성(PK), 각 개체 간의 관계를 정의하여 데이터베이스화할 수 있는 일반적인 개념으로 표현한다.
개념적 모델링은 건물의 기본 골조를 만드는 과정과 같이 데이터베이스의 큰 골격을 만드는 과정이다. 따라서 완성된 ER 다이어그램이 사용자의 요구사항을 제대로 반영하였는지, 업무 처리 절차에는 문제가 없었는지 등을 점검하여 문제점을 수정한다.
TIP. ER 다이어그램을 너무 구체적으로 작성할 필요는 없다. 모든 속성을 포함하면 오히려 복잡성이 증가하여 사용자들이 보기 어렵고 핵심적인 부분을 놓칠 수도 있기 때문이다.
논리적 모델링
논리적 모델링(logical modeling)은 개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 사상(mapping)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다. ER 다이어그램은 DBMS의 특성에 따라 2장에서 배운 관계 데이터 모델, 네트워크 데이터 모델, 계층 모델 등으로 사상이 이루어진다.

논리적 모델링은 다음과 같은 몇 가지 과정을 거쳐 완성된다.
- 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출한다.
- 정규화를 수행한다.
- 데이터 표준화를 수행한다.
물리적 모델링
물리적 모델링(physical modeling)은 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정이다. 다음은 물리적 모델링을 할 때 트랜잭션, 저장 공간 설계 측면에서 고려할 사항이다.
- 응답시간을 최소화해야 한다.
- 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다.
- 데이터가 저장될 공간을 효율적으로 배치해야 한다.
02 ER 모델
ER(Entity Relationship) 모델은 데이터 모델링 과정 중 개념적 모델링에 사용하는 모델로, 1976년 피터 첸(Peter Chen)이 제안하였다. ER 모델은 세상의 사물을 개체(entity)와 개체 간의 관계(relationshop)로 표현한다. 개체는 독립적인 의미를 지닌 유 · 무형의 사람 또는 사물을 말하며, 개체의 특성을 나타내는 속성(attribute)으로 식별한다. 또한 개체끼리는 서로 관계를 가진다. 이와 같이 개체, 속성, 관계를 규명하는 것이 ER 모델의 기본이다.

ER 모델은 개념적 모델링 단계에서 사용하기 때문에 특정 데이터 모델이나 DBMS와 무관하게 설계할 수 있다. 이 절에서는 개체, 관계, 속성별로 ER 다이어그램을 작성하는 방법을 알아보고, 그 과정을 통해 ER 모델을 학습한다.
개체와 개체 타입
개체는 사람, 사물, 장소, 개념, 사건과 같이 유 · 무형의 정보를 가지고 있는 독립적인 실체를 말한다. 개체는 비슷한 속성을 가진 개체 타입(entity type)을 구성하며, 개체 집합(entity set)으로 묶인다. 즉, 개체 집합은 공통된 속성을 가진 개체들의 모임이며 개체 타입은 개체 집합의 동일한 특징을 나타내는 용어다. 꼭 같은 의미는 아니지만 개체 타입을 프로그래밍 언어의 데이터 타입으로 생각하면 된다.

개체는 요구사항 수집 및 분석 단계에서 만들어진 요구사항 명세서를 통해 도출된다. 일반적으로 개체는 수집된 요구사항 중 명사인 경우가 많다. 이렇게 도출된 개체들을 개체 집합으로 분류하고 공통된 속성을 추출하여, 의미를 가장 잘 표현할 수 있는 개체 타입을 찾는다.
개체는 업무의 가장 핵심적인 요소로, 반드시 데이터베이스화되어야 한다. 만약 데이터베이스 개발 초기에 개체 도출과 개체 타입의 구분이 잘못되면 최종적으로 사용자의 요구와 동떨어진 데이터베이스가 만들어진다.
개체는 다음과 같은 특징을 지닌다.
- 유일한 식별자에 의해 식별이 가능하다.
- 꾸준한 관리를 필요로 하는 정보다.
- 두 개 이상 영속적으로 존재한다.
- 업무 프로세스에 이용된다.
- 반드시 자신의 특징을 나타내는 속성을 포함한다.
- 다른 개체와 최소 한 개 이상의 관계를 맺고 있다.
개체 타입의 ER 다이어그램 표현
ER 다이어그램상에서 개체 타입은 직사각형으로 나타낸다. 개체 타입은 보통 '개체'라고 부르는 강한 개체(strong entity) 타입과 약한 개체(weak entity) 타입으로 구분할 수 있다. 강한 개체 타입은 직사각형으로, 약한 개체 타입은 이중 직사각형으로 나타낸다.

개체 타입의 유형
강한 개체 타입은 다른 개체의 도움 없이 독자적으로 존재할 수 있다. 반면 약한 개체 타입은 독자적으로 존재할 수 없고 반드시 상위 개체 타입을 가진다. 예를 들어 회사 데이터베이스에서 부양가족이 존재하려면 직원이 먼저 존재해야 한다. 따라서 직원은 강한 개체 타입이 되고, 부양가족은 약한 개체 타입이 된다.
속성
속성은 개체가 가진 성질을 말한다.


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

관계와 관계 타입
관계(relationship)는 개체 사이의 연관성을 나타내는 개념이다. 예를 들어 '고객이 도서를 구입한다'라고 할 때 '고객' 개체 타입과 '도서' 개체 타입은 '구입한다'라는 개념으로 연결된다. 이러한 개체 간의 연관성을 관계라고 한다. 관계 타입(relationship type)은 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합(relationship set)은 관계로 연결된 집합을 의미한다.
관계 타입의 ER 다이어그램 표현
관계 타입은 마름모로 표현하며 관계 타입의 이름은 기호의 중앙에 표시한다.


관계 타입의 유형
관계 타입은 각 타입의 관계를 맺은 형태, 즉 차수와 관계 대응 수에 따라 몇 가지 유형으로 구분할 수 있다.
차수에 따른 유형
관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수(degree)라고 한다. 차수는 [표6-5]와 같이 n진 관계로 표현한다.
관계 대응 수에 따른 유형
관계는 개체 간의 상호작용을 표현한다. 관계 대응 수(cardinality)는 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수를 의미한다. 관계 타입은 관계 대응 수에 따라 [표 6-6]과 같이 구분할 수 있다. 관계 대응 수는 개체 타입과 관계 타입을 연결하는 실선 위에 표기하며, 하나만 참여할 경우 1, 두 개 이상 다중으로 참여할 경우 N 혹은 M으로 표기한다.


관계 대응수의 최솟값과 최댓값
관계 대응 수 1:1, 1:N, N:M에서 1, M, N은 각 개체가 관계에 참여하는 최댓값을 의미한다.

관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 ER 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에 (최솟값, 최댓값)으로 표기한다.
참여 제약조건
관계 특성 중 하나로 참여 제약조건이 있다. 참여 제약조건은 개체 집합 내 모든 개체가 관계에 참여하는지에 따라 전체 참여와 부분 참여로 구분할 수 잇다. 전체 참여는 개체 집합의 모든 개체가 관계에 참여하고, 부분 참여는 일부만 참여한다.

역할
개체 타입 간의 관계를 표현할 때 각 개체는 고유한 역할(role)을 담당한다.

순환적 관계
순환적 관계(recursive relationship)는 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순한적으로 관계를 맺는 형태를 말한다.

약한 개체 타입과 식별자
직원 개체 타입처럼 독립적으로 식별할 수 있는 개체를 가지고 있는 개체 타입을 개체 혹은 강한 개체(strong entity) 타입이라고 한다. 이와 반대로 가족 개체 타입처럼 상위 개체 타입이 결정되지 않으면 개체 자체를 식별할 수 없는 종속된 개체 타입을 약한 개체(weak entity) 타입이라고 한다.


약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분키라고 한다.
IE 표기법
ER 모델 표기법은 지금까지 살펴본 표기법 외에도 여러 표기법이 존재한다. 대표적으로 IE 표기법(Information Engineering Notation)과 바커 표기법(Baker Notation)이 있다.


03 ER 모델을 관계 데이터 모델로 사상하기
ER 모델은 데이터베이스의 생명주기의 개념적 모델리에서 사용하는 모델로, ER 다이어그램을 통해 완성된다. 완성된 ER 모델이 실제 데이터베이스로 구축되려면 논리적 모델링 단계를 거쳐야 하는데, 이 단계에서 사상(Mapping)이 이루어진다. 이 절에서는 논리적 모델링에 가장 많이 사용되는 관계 데이터 모델을 기준으로 ER 모델을 관계 데이터 모델로 사상하는 방법에 대해 살펴본다.


개체 타입의 사상
[1단계] 강한(정규) 개체 타입
정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성한다. 각 개체 타입의 일반 속성은 각각 새로 생성하는 릴레이션 속성으로 표시하고, 기본키와 외래키는 PK나 FK 등으로 표시한다.
[2단계] 약한 개체 타입
약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 넣어 자신의 기본키를 구성한다. 이때 유도된 속성이나 복합 속성 등은 속성의 성격에 맞게 판단하여 사상한다.


[3단계] 이진 1:1 관계 타입
이진 1:1 관계 타입의 경우 [방법1] ~ [방법4]까지 모든 유형으로 사상이 가능하다. 개체가 가진 정보 유형에 따라 판단한다.
[4단계] 이진 1:N 관계 타입
이진 1:N 관계 타입의 경우 N의 위치에 따라 [방법1] 또는 [방법2]의 유형으로 사상된다. N의 위치인 릴레이션에 1의 위치인 릴레이션의 기본키를 외래키(FK)로 사용해야지 반대로 저장하는 것은 불가능하다.
[5단계] 이진 M:N 관계 타입
이진 M:N 관계 타입은 [방법4]의 유형으로 사상된다. 교차 릴레이션을 생성해서 사상한다.

[6단계] N진 관계 타입
ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 [방법4]의 유형으로 사상한다. 생성되는 교차 릴레이션 R의 키는 각 개체 타입의 기본키를 모은 복합키를 사용한다.
[7단계] 다중값 속성
속성의 개수를 알 수 없는 경우 [방법1]을, 속성의 개수가 제한적으로 정해지는 경우 [방법2]를 사용한다.


물리적 모델의 ERD 작성
물리적 모델은 테이블을 만들기 위한 과정으로 논리적 모델과는 별도의 모델로 본다. 실제로 논리적 모델에서는 개체를 엔티티(entity)라고 부르지마 물리적 모델에서는 테이블이라고 부른다.
물리적 모델 단계에서는 기존 논리적 모델에서 생성한 개체의 이름과 속성의 이름을 실제 사용할 테이블 이름, 컬럼 이름으로 바꾸어야 한다. [표6-16]은 마당서점의 개체별로 논리적 모델과 물리적 모델에서 사용한 이름을 정리한 것이다. 기존 테이블 이름과 충돌을 피하기 위하여 각 테이블 이름 앞에 구분자를 작성해도 좋다.

'📚Read' 카테고리의 다른 글
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 08 트랜잭션, 동시성 제어, 회복 (0) | 2025.11.25 |
|---|---|
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 07 정규화 (0) | 2025.11.25 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 05 데이터베이스 프로그래밍 (0) | 2025.11.24 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 04 SQL 고급 (0) | 2025.11.24 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 03 SQL 기초 (0) | 2025.11.24 |