Part3. 데이터베이스 설계자
Chapter 06. 데이터 모델링
데이터 모델링의 개념
데이터베이스 생명주기
- 요구사항 수집 및 분석 : 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계이다. 마당 서점의 경우 고객, 운영자, 경영자 등 사용자의 범위와 서비스 수준을 정하는 것을 말한다.
- 설계 : 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)한다.
- 구현 : 설계단계에서 생성한 스키마를 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)를 만든다. 또한 관련 소프트웨어에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성한다.
- 운영 : 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공한다.
- 감시 및 개선 : 데이터베이스 운영에 따른 시스템의 문제를 간찰하고 데이터베이스 자체의 문제점을 파악항 개선한다. 이 단계에서는 데이터베이스가 지속적으로 운영될 수 있도록 변경 및 유지보수를 한다.
개념적 모델링
개념적 모델링은 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정이다. 여기서 핵심적인 개념을 구분한다는 것은 개체를 추출하고 각 개체 간의 관계를 정의하여 ER다이어그램을 만드는 과정까지를 말한다.
논리적 모델링
논리적 모델링은 개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 사상(매핑)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다.
- 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출한다.
- 정규화를 수행한다. : 여러 개체가 데이터를 중복 저장하는 문제를 해결하기 위해 정규화를 수행한다.
- 데이터의 표준화를 수행한다. : 데이터 용어 사전과 도메인을 정의하여 동일하게 사용되는 용어를 정리하고 데이터의 형태 및 크기 등을 확정한다.
물리적 모델링
물리적 모델링은 작성된 논리적 모델을 실제 컴퓨터 저장 장치에 저장하기 위해 데이터 타입과 길이 등 물리적 구조를 정의하고 구현하는 과정이다.
다음은 물리적 모델링을 할 때 트랜잭션, 저장공간 설계 측면에서 고려해야 할 사항이다.
- 응답시간을 최소화해야한다.
- 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다.
- 데이터가 저장될 공간을 효율적으로 배치해야한다.
ER 모델
ER 모델은 세상의 사물을 개체와 개체간의 관계로 표현한다. 개체는 독립적인 의미를 지닌 유무형의 사람 또는 사물을 말하며, 개체의 특성을 나타내는 속성으로 식별한다. 또한 개체끼리는 서로 관계를 맺는다. 이처럼 개체, 속성, 관계를 규명하는 것이 ER 모델의 기본이다.
개체와 개체 타입
개체는 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체를 말한다. 개체는 비슷한 속성을 가진 개체 타입을 구성하며, 개체 집합으로 묶인다.
개체 타입 : 개체 집합은 공통된 속성을 가진 개체들의 모임이며, 개체 타입은 개체 집합의 이러한 동일한 특징을 나타내는 용어이다.
개체는 다음과 같은 특징을 가진다.
- 유일한 식별자에 의해 식별할 수 있다.
- 꾸준한 관리를 필요로 하는 정보이다.
- 두 개 이상 영송적으로 존재해야 한다.
- 업무 프로세스에 이용된다.
- 반드시 자신의 특징을 나타내는 속성을 포함한다.
- 다른 개체와 최소한 한 개 이상의 관계를 맺고 있다.
개체 타입의 ER 다이어그램 표현
ER 다이어그램상에서 개체 타입은 직사각형으로 나타낸다. 강한 개체 타입은 직사각형으로, 약한 개체 타입은 이중 직사각형으로 나타낸다. 보통 개체 타입이라고 하면 강한 개체 타입을 말한다.
강한 개체 타입은 다른 개체의 도움 없이 독자적으로 존재 할 수 있다. 반면 약한 개체 타입은 독자적으로 존재할 수 없고 반드시 상위 개체 타입을 가진다. 예를 들어 회사 데이터베이스에서 직원의 부양가족은 직원이 존재해야 존재할 수 있다. 따라서 직원은 강한 개체 타입이되고, 부양가족은 약한 개체 타입이 된다.
속성
속성은 개체가 가진 성질을 말한다.
속성의 ER 다이어그램 표현
속성은 기본적으로 타원으로 표현하며 개체 타입을 나타내는 직사각형과 실선으로 연결된다. 속성이 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 긋는다. 약한 개체의 식별자는 키를 갖지 못하고 대신 식별자를 가지며, 식별자 아래에 점선을 긋는다.
속성의 유형
단순 속성과 복합 속성
속성은 더 작은 단위로 분해할 수 있는지에 따라 단순 속성과 복합속성으로 구분할 수 있다. 단순속성은 더이상 분해가 불가능한 속성이고, 복합속성은 독립적인 의미를 가진 속성으로 분해할 수 있는 속성이다. 복합속성은 큰 타원 아래 작은 타원으로 연결한다.
예를들어 주소의 경우 시, 동 단위로 분해할 수 있는 복합속성이다. 분해된 시, 동의 경우 더 작게 분해할 수 없으므로 단순속성이다.
단일값 속성과 다중값 속성
속성은 속성값의 개수에 따라 단일값 속성과 다중값 속성으로 구분할 수 있다. 단일값 속성은 하나의 값만을 가지는 속성이고, 다중값 속성은 여러 개의 값을 가지는 속성이다. 다중값 속성은 이중타원으로 표현한다.
예를 들어 학생번호나 성명의 경우 한 사람이 하나의 값밖에 가지지 못하므로 단일값 속성이다. 그러나 학위의 경우 한 사람이 학사를 취득한 후 석사를 취득하는 등 여러 개의 학위를 가질 수 있으므로 다중값 속성으로 볼 수 있다.
저장 속성과 유도 속성
속성값이 다른 속성으로부터 유도될 수 있는 지에 따라 저장 속성과 유도 속성으로 구분할 수 있다. 저장속성은 다른 속성의 영향 없이 단독으로 저장되는 속성이고, 유도 속성은 다른 저장 속성으로부터 유도된(계산된) 속성이다. 유도속성은 점선타원으로 표현한다.
예를들어 생년월일의 경우 학생 개개인이 가지고 있는 고유한 값으로 저장속성이며, 나이는 생년월일로부터 계산될 수 있는 값이므로 유도 속성이다.
관계와 관계 타입
ER 모델은 개체와 개체 사이의 관계를 표현한다. 관계는 개체 사이의 연관성을 나타내는 개념이다. 예를 들어 ‘고객이 도서를 구입한다’라고 할 때 ‘고객’ 개체타입과 ‘도서’ 개체타입은 ‘구입한다’라는 개념으로 연결된다. 이러한 개체 간의 연관성을 관계라고 한다. 관계타입은 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의(주문)한 것이며, 관계 집합은 관계로 연결된 집합을 의미한다.
관계 타입의 ER 다이어그램 표현
관계 타입은 마름모로 표현한다.
차수에 따른 관계 타입의 유형
관계 집합에 참여하는 개체 타입의 수를 관계 타입의 차수라고 한다.
- 1진 관계(순환적 관계)는 한 개의 개체가 자기 자신과 관계를 맺는다. 예를들어 학생 개체에서 학생들 간에 멘토링 관계를 맺으면 관계를 맺는 멘토와 멘티 모두 학생 개체가 된다.
- 2진 관계는 두 개의 개체가 관계를 맺는다. 예를 들어 학생 개체 타입과 학과 개체 타입은 ‘소속’이라는 관계를 맺고 있다.
- 3진 관계는 세 개의 개체가 관계를 맺는다. 예를 들어 자동차 회사 직원은 부품을 조립하여 하나의 자동차를 만드는 프로젝트를 ‘수행’하는 관계를 맺고 있다.
관계 대응 수에 따른 관계 타입의 유형
두 개체 타입의 관계에 실제로 참여하는 개별 개체들의 수를 말한다.
일대일 관계, 일대다 관계, 다대일 관계, 다대다 관계가 있다.
일대일 관계(1:1) 예를들어 회사에서 사원이 개인별로 한 대의 컴퓨터만 사용한다면 사우너과 컴퓨터는 일대일 관계이다.
일대다(1:N), 다대일(N:1) 관계 실제 일상생활에서 가장 많이 볼 수 있는 관계이다. 예를들어 학과와 학생의 소속 관계를 보면 하나의 학과에는 여러 명의 학생이 소속되어 있어 일대다 관계로 표현할 수 있다.
다대다(N:M) 관계 서로 복합 관계를 맺는다. 예를들어 학생과 강좌의 수강 관계를 보면, 한 학생은 여러 강좌를 수강할 수 있고, 한 강좌 역시 여러 학생들이 들을 수 있다.
관계 대응 수의 최솟값과 최댓값
min은 관계에 참여하는 개체의 수가 적어도 min값이상이 되어야 한다는 뜻이며, max는 관계에 참여하는 개체의 수가 max 값을 넘을 수 없다는 뜻이다. 예를들어 min값이 0일 경우 관계에 참여하는 개체의 수가 0 이상이므로 반드시 참여할 필요가 없다는 뜻이고, max 값이 10일 경우는 10개의 개체까지 참여할 수 있다는 뜻이다. max 값을 *로 표시하면 임의의 수만큼 참여할 수 있다는 뜻이다.
| 관계 | (min1, max1) | (min2, max2) |
|---|---|---|
| 1:1 | (0, 1) | (0, 1) |
| 1:N | (0, *) | (0, 1) |
| N:M | (0, *) | (0, *) |
is-a 관계
일부 개체 집합들이 맺고 있는 관계중에는 상하관계가 있다. 상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태 is-a관계라고 한다. 이때 상위 개체 타입을 슈퍼 클래스라고 하며, 하위 개체 타입을 서브 클래스라고 한다. is-a 관계는 역삼각형으로 표현하며, 역삼각형 위에는 슈퍼클래스 아래에는 서브 클래스를 관계실선으로 연결한다.
예를들어 상위 개체인 학생 개체 타입은 슈퍼클래스로, 학생이면 기본으로 가지는 공통 속성(학생번호 ,이름, 성별)을 가진다. 학생을 휴학생(속성은 휴학일자, 사유), 재학생(등록학기, 지도교수), 졸업생(학위번호, 졸업일자)의 서브 클래스로 나누고 각 개체 타입에는 자신만이 가지고 있는 고유 속성을 부여한다. 재학생의 경우 슈퍼클래스의 속성인 (학생번호, 이름, 성별)을 상속받고, (등록학기, 지도교수) 속성을 포함하여 모두 다섯개의 속성을 가지게 된다.
참여 제약조건
참여 제약조건은 개체 집합 내 모든 개체가 관계에 참여하는지에 따라 전체 참여와 부분 참여로 구분할 수 있다. 전체 참여는 개체 타입과 관계를 두 줄 실선으로 표현하고, 부분 참여는 일반적인 관계 표현과 같이 단일 실선으로 표현한다. 전체 참여를 (최솟값, 최댓값)으로 표현하면 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상이다.
예를들어 학생의 경우 교환학생이나 휴학 등의 이유로 수강을 하지 않는 학생도 있으므로 수강 관계와 부분 참여를 맺는다. 그러나 강좌의 경우 폐강되는 과목 없이 수강신청을 하는 학생이 반드시 있다고 가정하면 수강 관계와 전체 참여를 맺는다.
역할
개체타입 간의 관계를 표현할 때 각 개체는 고유한 역할을 담당한다.
예를들어 학생 개체 타입과 교수 개체 타입이 지도 관계를 맺을 때, 교수 개체 타입은 ‘지도한다’, 학생 개체 타입은 ‘지도받는다’라는 역할을 한다. 일반적으로 역할은 관계만으로 알 수 있으면 생략한다.
순환적 관계
하나의 개체 타입이 동일한 개체 타입(자기자신)과 순환적으로 관계를 맺는 형태를 말한다. 순환적 관계는 관계선을 개체 타입과 관계타입 양쪽에 두개를 그린다.
예를들어 a는 학생들 간에 멘토링 관계를 맺어 맨토와 멘티 모두 학생 개체인 경우이며 b는 사원 개체는 자기보다 직위가 낮은 사원에게는 업무 지시를 내리고, 자기보다 직위가 높은 사원에게는 업무 지시를 받아 순환 관계를 맺는다.
약한 개체 타입과 식별자
직원 개체 타입처럼 독립적을 식별할 수 있는 개체를 가지고 있는 개체 타입을 개체 혹은 강한 개체 타입이라고 한다. 이와 반대로 가족 개체 타입처럼 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입을 약한 개체 타입(이중 직사각형으로 표현, 강한 개체 타입이 있어야 존재 가능)이라고 한다.
강한 개체 타입은 직원 개체 타입의 ‘직원번호’와 같이 각 개체를 식별할 수 있는 기본키를 가진다. 약한 개체 타입은 자신의 기본키만으로 식별이 어려우므로 강한 개체 타입의 기본키를 상속받아 사용(점선 밑줄로 표현)한다. 이를 식별자 혹은 부분키라고 한다.
거의 총정리?

위의 이미지를 보면 회사에서 직원 개체타입과 가족 개체 타입이 ‘부양’관계를 맺고 있다. 직원 개체 타입은 자기 자신만으로 존재 할 수 있고, 각각의 개체를 ‘직원번호’로 구분할 수 있다. 그러나 가족 개체 타입의 경우 직원번호 없이는 누구의 가족인지 알 수 없다. 또 ‘이름’ 속성의 경우 직원 자녀 간에 같은 이름을 가진 사람이 있을 수 있으므로 직원번호와 함께 사용해야 한다.
IE 표기법
ER 모델 표기법은 지금까지 살펴본 표기법 외에도 여러 표기법이 존재한다. 대표적으로 IE표기법과 바커 표기법이 있다.
ER 다이어그램을 그리는 대표 프로그램인 erwin에서 사용하는 표기법 중 하나이다.
IE 표기법은 관계 대응수를 새발 모양의 기호로 표현하여 새발 표기법이라고도 부른다.
IE 표기법에서 개체 타입과 속성은 직사각형으로 표현한다.
관계는 마름모꼴 대신 개체 타입인 직사각형을 관계실선으로 연결하고 표와 같은 모양의 기호를 이용하여 관계 대응 수 등을 표현한다.
관계실선에서 개체 쪽의 기호는 반대쪽 개체의 최대참여(1 혹은 N)를 나타내며, ‘O’, ‘|’ 기호는 최소참여(참여 제약조건)로 선택하여 선택참여(O) 혹은 필수참여(|)를 나타낸다.

위 그림에서 부서-직원 관계는 강한 개체간의 관계이므로 비식별자 관계(점선)으로 표현한다.
직원 개체는 부서 개체 쪽에 표현된 ‘|’ 기호를 통해 ‘직원은 부서에 반드시(필수) 소속되어야 한다.’ 라는 것을 알 수 있다.
도한 부서 개체는 직원 개체 쪽에 표현된 ok기호로 ‘부서는 직원을 0명 이상 포함한다’라는 것을 알 수 있다. 이는 부서가 없는 직원은 없으며, 직원이 없는 부서는 있을 수 있다는 의미이다.
다시한번 강조하지만, 관계 대응 수는 개체의 반대편에 있는 최대에 관한 기홀르 읽으면 된다.
ER 모델을 관계 데이터 모델로 사상
완성된 ER모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거치는데, 이 단계에서 사상(mapping)이 이루어진다.

1. 개체 타입의 사상
(1단계) 강한(정규) 개체 타입
정규 개체 타입 E의 경우대응하는 릴레이션 R을 생성한다.
ex) 사원(사번, 이름)
(2단계) 약한 개체 타입
약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성한다.
ex) 가족(사번(FK), 이름, 출생일)
2. 관계 타입의 사상
p.341 쓰기 힘들다..
erwin 실습
eXERD 프로그램 사용. 사용방법 skip~
Comments