Aug, 2023
01. 데이터베이스 모델링의 개념
1. 데이터베이스 생명주기
- 데이터베이스 생명주기(database life cycle): 데이터베이스의 생성과 운영에 관련된 특징
- 요구사항 수집 및 분석 → 설계 → 구현 → 운영 → 감시 및 개선 (→ 요구사항 수집 및 분석)
- 요구사항 수집 및 분석: 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계
- 설계: 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)하는 단계
- 구현: 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)을 만들고, 관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성하는 단계
- 운영: 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공하는 단계
- 감시 및 개선: 데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선하는 단계로, 이 단계에서는 데이터베이스가 지속적으로 운영될 수 있도록 변경 및 유지 보수를 한다
- 요구사항 수집 및 분석 → 설계 → 구현 → 운영 → 감시 및 개선 (→ 요구사항 수집 및 분석)
2. 데이터 모델링 과정
- 데이터 모델링은 데이터베이스 생명주기 중 요구사항 수집 및 분석부터 설계까지의 과정을 말한다
- 요구사항 수집 및 분석: 현실 세계의 대상 및 사용자의 요구사항을 정리하고 분석
- 설계: 중요 개념을 구분(개념적 모델링) → 각 개념을 구체화함(논리적 모델링) → 데이터베이스 생성 계획에 따라 개체, 인덱스 등을 생성(물리적 모델링)
- 요구사항 수집 및 분석
- 실제 문서를 수집하고 분석한다
- 담장자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수렴한다
- 비슷한 업무를 처리하는 기존의 데이터베이스를 분석한다
- 각 업무와 연관된 모든 부문을 살펴본다
- 개념적 모델링(concentual modeling): 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분(⇒ 개체를 추출하고 각 개체들 간의 관계를 정리하여 ER 다이어그램을 만드는 과정)하고 전체적인 뼈대를 만드는 과정
- 개체: 구체적으로 표현할 수 있는 실체
- ER 다이어그램: 실체들의 관계를 표현한 것
- 설계자는 사용자의 요구사항을 분석하여 가장 핵심적인 개체와 개별 개체를 식별할 수 있는 핵심 속성(PK), 각 개체 간의 관계를 정의하여 데이터베이스화 할 수 있는 일반적인 개념으로 표현한다
- 논리적 모델링(logical modeling): 개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 사상(매핑)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정
- ER 다이어그램은 DBMS의 특성에 따라 관계 데이터 모델, 네트워크 데이터 모델, 계층 데이터 모델 등으로 사상이 이루어진다
- 논리적 모델링의 과정
- 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출한다
- 정규화를 수행한다
- 데이터의 표준화를 수행한다
- 물리적 모델링(physical modeling): 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
- 물리적 모델링을 할 때는 DBMS의 특성에 맞게 저장 구조를 정의하여야 데이터베이스가 최적의 성능을 낼 수 있다
- 물리적 모델링을 할 때 트랜잭션, 저장 공간 설계 측면에서 고려해야 하는 사항
- 응답시간을 최소화해야 한다
- 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다
- 데이터가 저장될 공간을 효율적으로 배치해야 한다
02. ER 모델
- 개념적 모델링에 사용하는 모델로, 세상의 사물을 개체와 개체 관의 관계로 표현한다
- 개체는 독립적인 의미를 지니고 있는 유무형의 사람 또는 사물을 말하고, 개체의 특성을 나타내는 속성으로 식별한다
- 개체끼리는 서로 관계를 가진다
- ER 모델은 개체와 개체 간의 관계를 ER 다이어그램이라는 표준화된 그림으로 표현한다
- ER 모델은 개념적 모델링 단계에서 사용하므로, 특정 데이터 모델이나 DBMS와 무관하게 설계할 수 있다
1. 개체와 개체 타입
- 개체(entity): 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체
- 개체는 비슷한 속성을 가진 개체 타입(entity type)을 구성하며, 개체 집합(entity set)으로 묶인다
- 개체 집합: 공통된 속성을 가진 개체들의 모임
- 개체의 특징
- 유일한 식별자에 의해 식별 가능
- 꾸준한 관리를 필요로 하는 정보
- 두 개 이상 영속적으로 존재함
- 업무 프로세스에 이용됨
- 반드시 자신의 특징을 나타내는 속성을 포함
- 다른 개체와 최소 한 개 이상의 관계를 맺고 있음
개체 타입의 ER 다이어그램 표현
- ER 다이어그램 상에서 객체 타입은 직사각형으로 나타낸다
- 객체 타입은 보통 ‘개체’라고 부르는 강한 개체 타입과, 약한 개체 타입으로 구분할 수 있다
- 강한 개체 타입: 직사각형
- 약한 개체 타입: 이중 직사각형
- 개체 타입의 이름은 기호 중앙에 표시하고, 일반적으로 단수형 명사를 사용한다
개체 타입의 유형
- 강한 개체 타입: 다른 개체의 도움 없이 독자적으로 존재할 수 있다
- 약한 개체 타입: 독자적으로는 존재할 수 없고 반드시 상위 개체 타입을 가진다
2. 속성
- 속성(attribute): 개체가 가진 성질
속성의 ER 다이어그램 표현
- 속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결된다
- 속성의 이름은 타원 중앙에 표기한다
- 속성이 개체를 유일하게 식별할 수 있는 키일 경우, 속성 이름에 밑줄을 긋는다
- 키 속성: 개체 타입에서 각각의 개체를 식별할 수 있는 유일한 값을 가진다
속성의 유형
- 속성은 값의 형태에 따라 여러 유형으로 구분할 수 있다
- 단순 속성과 복합 속성: 더 작은 단위로 분해할 수 있는지에 따라 구분
- 단순 속성(simple attribute): 더 이상 분해가 불가능한 속성
- 복합 속성(composite attribute): 독립적인 의미를 가진 속성으로 분해할 수 있는 속성
- 단일값 속성과 다중값 속성: 속성값의 개수에 따라 구분
- 단일값 속성(single-valued attribute): 하나의 값만 가지는 속성
- 다중값 속성(multi-valued attribute): 여러 개의 값을 가지는 속성
- 저장 속성과 유도 속성: 속성 값이 다른 속성으로부터 유도될 수 있는지에 따라 구분
- 저장 속성(stored attribute): 다른 속성의 영향 없이 단독으로 저장되는 속성
- 유도 속성(derived attribute) 다른 저장 속성으로부터 유도된(계산되어진) 속성
3. 관계와 관계 타입
- 관계: 개체 사이의 연관성을 나타내는 개념
- 관계 타입: 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것
- 관계 집합: 관계로 연결된 집합
관계 타입의 ER 다이어그램 표현
- 관계 타입은 마름모로 표현하며 관계 타입의 이름은 기호의 중앙에 표기한다
관계 타입의 유형
- 각 개체 타입이 관계를 맺은 형태, 즉 차수와 관계 대응수에 따라 몇 가지 유형으로 구분할 수 있다
- 차수(degree: 관계 집합에 참가하는 개체 타입의 수)에 따른 유형
- 1진 관계(recursive relationship): 한 개의 개체가 자기 자신과 관계를 맺는 경우
- 2진 관계(binary relationship): 두 개의 개체가 관계를 맺는 경우
- 3진 관계(ternary relationship): 세 개의 개체가 관계를 맺는 경우
- 관계 대응 수(cardinality: 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수)에 따른 유형
- 일대일(1:1) 관계: 하나의 개체가 하나의 개체에 대응
- 일대다(1:N) 관계: 하나의 개체가 여러 개체에 대응
- 다대일(N:1) 관계: 여러 개체가 하나의 개체에 대응
- 다대다(M:N) 관계: 여러 개체가 여러 개체에 대응→ 관계 대응 수 1:1, 1:N, N:1, M:N에서 1, M, N은 각 개체가 관계에 참여하는 최댓값을 의미한다. 따라서 이 표기법의 문제는 관계에 참여하는 개체의 최솟값을 표시하지 않는다는 것인데, 이를 보완하기 위해 관계실선 위에 ‘(최솟값, 최댓값)’ 형식으로 표기한다
- → 일대다, 다대일이 일상에서 실제로 많이 볼 수 있는 관계이다
ISA 관계
- ISA(is-a) 관계: 일부 개체 집합들이 맺고 있는 관계 중에는 상하 관계를 보이는 관계가 있는데, 이때 상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태를 말한다.
- 상위 개체 타입을 슈퍼클래스, 하위 개체 타입을 서브클래스라고 한다
- ISA 관계는 역삼각형으로 표현하며, 역삼각형 위에는 슈퍼클래스, 아래에는 각각의 서브클래스를 관계 실선으로 연결한다
참여 제약 조건
- 개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분한다
- 전체 참여: 개체 집합의 모든 개체가 관계에 참여한다
- 개체 타입과 관계를 두 줄 실선으로 표현한다
- 부분 참여: 개체 집합의 일부만 관계에 참여한다
- 일반적인 관계 표현과 동일하게 단일 실선으로 표현한다
- 전체 참여를 (최솟값, 최댓값)으로 표현하면 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상이다
역할
- 개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할(role)을 담당한다
- 일반적으로 역할은 관계만으로 알 수 있으면 생략하지만, 관계에서 역할이 명확하지 않으면 표기해야 한다
순환적 관계
- 순환적 관계(recursive relationship): 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태
- 순환적 관계는 개체 타입과 관계 타입 양쪽에 관계선을 두 개를 그린다
4. 약한 개체 타입과 식별자
- 약한 개체 타입은 자신의 기본키만으로 식별이 어려우므로, 상위의 강한 개체 타입의 기본키를 상속받아 사용한다
- 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분키라고 한다
5. IE 표기법
- ER 모델 외에도 여러 표기법이 존재하는데, 그 중 대표적인 것으로 IE 표기법과 바커 표기법이 있다
- IE 표기법은 관계 대응 수를 새발 모양의 기호로 표현하여 새발 표기법이라고도 부른다
03. ER 모델을 관계 데이터 모델로 사상
- 완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데, 이 단계에서 사상이 이루어진다
- 관계 데이터 모델은 릴레이션 하나로 데이터베이스의 논리적 구조를 표현하지만, ER 모델은 개체 타입, 관계 타입, 속성으로 표현한다 → 사상은 각각 개체 타입의 유형과 관계 타입의 유형에 따라 다른 방법으로 진행된다
ER 모델을 관계 데이터 모델로 사상하는 방법
단계 | 사상할 대상 | 구분 |
1단계 | 개체 타입 | 강한 개체 타입 |
2단계 | 개체 타입 | 약한 개체 타입 |
3단계 | 관계 타입 | 이진 1:1 관계 타입 |
4단계 | 관계 타입 | 이진 1:N 관계 타입 |
5단계 | 관계 타입 | 이진 M:N 관계 타입 |
6단계 | 관계 타입 | N진 관계 타입 |
7단계 | 속성 | 다중값 속성 |
개체 타입의 사상
- 강한(정규) 개체 타입
- 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성한다
- 각 개체 타입의 일반 속성은 각각 새로 생성하는 릴레이션의 속성으로 표시하고, 기본키와 외래키는 PK나 FK 등으로 표시한다
- 약한 개체 타입
- 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성한다
- 이때 유도된 속성이나 복합 속성 등은 속성의 성격에 맞게 판단하여 사상한다
관계 타입의 사상
- 책의 관계 타입 예시 참고하기!방법 2) 왼쪽 개체 타입 E1을 기준으로 관계 R을 표현한다방법 4) 개체 타입 E1, E2와 관계 타입 R을 모두 독립된 릴레이션으로 표현한다
- 방법 3) 단일 릴레이션 ER로 모두 통합하여 관계 R을 표현한다
- 방법 1) 오른쪽 개체 타입 E2를 기준으로 관계 R을 표현한다
- 이진 1:1 관계 타입
- 방법 1 ~ 방법 4의 모든 유형으로 사상할 수 있다
- 개체가 가지고 있는 정보의 유형에 따라 판단하면 된다
- 이진 1:N 관계 타입
- 방법 1 또는 방법 2의 유형으로 사상된다
- 이진 M:N 관계 타입
- 방법 4의 유형으로 사상된다
- 양쪽 모두 다수의 대응 수를 가지므로 새로운 릴레이션(=교차 테이블)을 반드시 생성해야 한다
- N진 관계 타입
- ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 방법 4의 유형으로 사상된다
- 생성되는 릴레이션 R의 키는 각 개체 타입의 기본키를 모은 복합키를 사용한다
다중값 속성의 사상
- 다중값 속성
- 다중값 속성은 하나의 속성에 여러 값을 가질 수 있는 속성을 말한다
- 다중값 속성의 경우 직접 사상할 수 없다
- 두 가지 방법으로 다중값 속성을 가진 ER 모델을 관계 데이터 모델로 사상할 수 있다
- 새로운 릴레이션을 생성한다
- 개체 타입은 다중값 속성을 제외하고 모두 R로 사상하고, 다중값 속성은 개체 타입의 키와 함께 새로운 릴레이션 RC를 생성한다(책 예제 참고)
- RC는 기존의 키와 함께 자신의 값이 모두 키로 지정되어야 한다
- 속성을 릴레이션에 같이 포함한다
- 방법 1) 다중값 속성의 개수를 알 수 없는 경우
- 각 방법의 장단점
- 방법 1: 새로 생성된 릴레이션 RC에 값이 계속 저장될 수 있어 효울적이지만, 새로운 릴레이션이 생겨서 모델이 복잡해질 수 있다
- 방법 2: 고려해야 할 속성 값이 많아지면 불필요한 속성이 생겨 비효율적이고, 이후에 처음보다 많은 속성 값을 저장해야 하는 등의 문제가 생길 수 있다
04. ERwin 실습
- 데이터 모델링을 하기 위한 프로그램으로 ERwin과 ER STUDIO, DA# 등이 있는데, ERwin을 가장 많이 사용한다
- ERwin: 미국 CA 테크놀로지사엥서 개발했고, IE 표기법을 지원한다
ERwin 실습
- 기본 화면 및 툴 둘러보기
- 기본 환경 설정하기
- 모델 타입: Logical/Physical
- DBMS: MySQL 5.x
- 표기법: IE 표기법
- 마당서점 실습하기(ER 다이어그램 작성하기)
- 개체 만들기
- 관계 표현하기
- M:N 식별 관계 표현
- M:N 관계 해소하기
- → 또 다른 개체를 생성하거나 논리적 모델을 물리적 모델로 변경해 교차 테이블이 생성되도록 한다
- 식별 관계 및 관계 대응 수 변경하기
- 도메인 정의하기
- 도메인: 속성이 가질 수 있는 값
- 물리적 모델링: 물리적 모델을 작성한 후 실제 테이블로 만든다
- ER 다이어그램 불러오기
- Physical 타입으로 변경하기
- 물리적 모델링
- 논리적 모델에서는 개체를 Entity라고 부르지만 물리적 모델에서는 테이블이라고 부른다
- 논리적 모델에서는 개체 이름에 공백을 넣을 수 있지만, 물리적 모델에서는 불가능하다
- 기존 논리적 모델에서 생성한 개체의 이름과 속성의 이름을 실제 사용할 테이블 이름, 컬럼 이름으로 변경해야 한다
- 컬럼의 속성 확인하기
- DBMS에 접속하여 테이블 생성하기
05. 모델링 연습
p.370~375 참고하기
'Courses > 데이터베이스' 카테고리의 다른 글
데이터베이스 개론과 실습 (MySQL로 배우는) | Chapter 08: 트랜잭션, 동시성 제어, 회복 (0) | 2025.01.16 |
---|---|
데이터베이스 개론과 실습 (MySQL로 배우는) | Chapter 07 정규화 (0) | 2025.01.16 |
데이터베이스 개론과 실습 (MySQL로 배우는) | Chapter 05: 데이터베이스 프로그래밍 (0) | 2025.01.16 |
데이터베이스 개론과 실습 (MySQL로 배우는) | Chapter 04: SQL 고급 (0) | 2025.01.16 |
데이터베이스 개론과 실습 (MySQL로 배우는) | Chapter 03: SQL 기초 (2) | 2025.01.16 |