방송대 데이터베이스시스템 - 2강. 데이터베이스 모델링
1. 데이터베이스 모델링의 이해
데이터베이스 모델링의 필요
• 데이터베이스 모델링 과정의 필요성
- 프로그램에서 요구되는 현실 세계의 정보를 모두 반영하면서 데이터에 대한 오류 혹은 왜곡이 존재하지 않아야 함.
- 응용 프로그래머, 데이터베이스 설계자, 의뢰인 등과 상호 의사소통을 위한 단계적 절차를 제공해야 함.
• 두 가지 관점의 모델링
- 비즈니스적 관점 : 어떤 데이터를 저장해야 하는가? (사용자 요구사항 분석, 개념적 데이터 모델링)
- 컴퓨터 프로그래머 관점 : 어떻게 데이터를 저장해야 하는가? (물리적 데이터 모델링)
데이터베이스 시스템 구현 과정
• 일반적인 애플리케이션 구현 과정
- 데이터베이스를 사용하는 프로그램 설계 과정
기능 분석 → 애플리케이션 프로그램 설계 → [ 애플리케이션 아키텍처 ] → 애플리케이션 프로그램 구현 → [ 애플리케이션 ]
• 데이터베이스 시스템 구현 과정
- 실제 데이터베이스 모델링 과정
사용자 요구사항 분석 → 개념적 데이터 모델링 → [ ER 모델 ] → 논리적 데이터 모델링 → [ 개념 스키마 ] → 물리적 데이터 모델링 → [ 내부 스키마 ]
• DBMS 독립적/의존적 단계
- DBMS 독립적 : 기능적 요구사항 분석, 사용자 요구사항 분석, 개념적 데이터 모델링, 논리적 데이터 모델링
- DBMS 의존적 : 애플리케이션 프로그램 설계, 애플리케이션 프로그램 구현, 물리적 데이터 모델링
데이터베이스 모델링의 개념 및 단계
• 데이터 모델
- 필요성 : 사용할 데이터를 선별하여 데이터베이스에 체계적으로 구조화하여 저장, 사용할 방법이 필요
- 정의 : 의미, 데이터 타입, 연산 등을 명시하기 위해 사용할 수 있는 개념들의 집합
• 데이터 모델링(data modeling)
- 데이터에 대한 요구사항을 정의하고 분석하여 추상화하는 과정
- 데이터의 의미를 파악하고 데이터와 관여하는 업무(기능) 프로세스를 개념적으로 정의하고 분석하는 작업
- 실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정
• 데이터 모델링 단계
개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링
개념적 데이터 모델링 |
데이터에 초점을 맞추어 개별적 데이터의 특징을 분리 요구사항의 해석 오류를 방지를 위해 추상화 기법을 사용 추상화 기법 : 실세계의 데이터들을 개념적으로 일반화시켜 데이터 타입, 속성, 관계, 제약조건들을 이끌어 내는 과정 개체와 개체 간의 관계를 통해 표현하는 ER 모델이 대표적임. |
논리적 데이터 모델링 |
특정 DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정 일반적으로 관계형 모델을 사용함. → 데이터 정의 언어(DDL)로 기술된 개념 스키마 생성 |
물리적 데이터 모델링 |
논리적 데이터 모델을 특정 DBMS에 최적화된 물리적 구조로 변환하는 과정 데이터베이스 파일의 내부 저장구조, 파일 구성, 인덱스, 접근 경로 등을 결정하는 과정 → 내부 스키마 생성 |
2. 사용자 요구사항 분석
사용자 요구사항의 필요성
• 사용자의 요구를 명세하지 않고 데이터베이스 설계 및 개발을 진행하는 경우 문제가 발생함.
- 결과물의 완성도 저하 및 사용자 신뢰도 추락
- 개발 후 발생하는 에러 수정에 많은 추가 비용 지출
• 시스템의 대상이 되는 업무를 분석하기 위해 필요함.
- 정보 시스템의 데이터베이스가 신속하고 효과적으로 업무 처리를 지원하기 위해
- 필요한 데이터를 저장 및 운용할 수 있는 구조 개발하기 위해
• 데이터에 대한 충분한 사전분석 없이 적절한 설계가 불가능함.
- 데이터베이스의 활용 범위가 확대됨에 따라 데이터베이스의 효율적 운용에 초점
- 데이터베이스의 구조가 점차 복잡해지고 수명 주기가 단축되고 있기 때문에 신속, 정확성이 요구됨.
사용자 요구사항 분석
[ 제안요청서(RFP) ] → 요구사항 도출 → [ 요구사항 명세서 ] → 요구사항 분석 → [ 요구사항 정의서 ] → 요구사항 기록
요구사항 도출 | - 구축대상, 프로젝트 목표, 범위를 기준으로 조사범위를 결정 - 업무 관계자 인터뷰 - 외부자료 수집 및 분석 |
요구사항 분석 | - 도출된 요구사항의 명확성, 완전성, 모호성 검증 - 불완전한 부분이 존재할 경우 요구사항 도출단계 재수행 - 요구사항을 분류하여 통합 또는 분리 |
요구사항 기록 | - 요구사항 목록 정의 및 관리자 승인 - 정리된 요구사항을 형식에 맞춰 문서화 - 프로젝트 종료 때까지 반영 여부 지속적 관리 |
3. ER 모델
ER 모델의 개념
- 1976년 카네기 멜론 대학의 P. Chen 박사 제안
- 실세계의 속성들로 이루어진 개체(entity)와 개체 사이의 관계(relationship)을 정형화시킨 모델
- 개념적 모델링 단계에서 사용되는 데이터 모델
- 데이터 구조와 관계를 ER 다이어그램(ERD)으로 표현
·구성요소 : 개체 집합, 관계 집합, 속성
- ER 모델에서 기본적인 요소는 개체 집합이며, 개체 집합은 속성의 집합으로 구성됨.
개체 집합
• 개체(entity) : 실세계에 존재하는 다른 객체와 구별되는 유무형의 사물로, 개체를 설명하는 여러 속성들로 구성됨.
• 개체 집합(entity set) : 같은 속성을 공유하는 개체들의 모임
각 개체는 각 속성에 대한 값(value)을 가짐.
- 개체 : 학생, 속성 : 학생번호, 학생이름, 성별, 나이
- 학생 개체는 '학생번호' 값으로 '201934-021216', '이름' 값으로 '유관순', '나이' 값으로 '17'을 가짐.
MySQL 워크벤치에서는 ER 표기법보다는 UML(Unified Modeling Language, 통합 모델링 언어) 표기법을 사용함.
- 키(key) : 개체를 고유하게 식별하기 위해 사용되는 속성
- 속성(attribute) : 개체의 특징이나 특성을 나타내는 정보
- 도메인(domain) : 속성이 가질 수 있는 범위 값으로 데이터 타입과 관련하여 속성에 적용됨(정수형, 실수형, 문자열, 날짜 등)
관계 집합
• 관계 : 개체와 개체 사이의 연관성
• 관계 인스턴스(relationship instance) : 관계에 속하는 개체들의 실제 인스턴스(개체)
• 관계 집합 :
- 개체 집합 간의 전체적 연결 관계
- 같은 유형의 관계 인스턴스들의 집합으로, 2개 이상의 개체 집합 간의 수학적 연결 관계
참가(participate) | 한 개체 집합이 다른 개체 집합과 연관성을 가지는 것 ex. '전공' 은 '학생' 개체 집합과 '학과' 개체 집합이 참가한 관계 집합임. |
차수(degree) | 관계 집합에 참여하는 개체 집합의 수 ex. '전공' 관계 집합의 차수는 2 (학생, 학과) |
역할(role) | 관계에 참가하는 개체의 기능 일반적으로 관계 집합에 참가하는 개체 집합들은 역할 구별이 쉽게 이루어지기 때문에 묵시적으로 정해짐. 재귀적 관계 집합의 경우에는 역할을 명시해 주어야 함. |
속성(Attribute)
• 속성의 개념
- 개체 집합에 속한 개체를 구체적으로 설명하는 특성
- 속성에 포함될 수 있는 값의 특성에 따라 여러 종류로 구분됨.
• 속성의 종류
- 단순 속성과 복합 속성
- 단일값 속성과 다중값 속성
- 유도 속성과 저장 속성
- 널(null) 속성 : 해당 속성에 대한 값이 없음을 의미함.
단순 속성(simple attribute) - 더 이상 작은 구성요소로 나눌 수 없는 속성 복합 속성(composite attribute) - 더 작은 의미단위로 나누어질 수 있는 속성 - 들여쓰기 형태로 표현됨. ex. 생년월일은 연, 월, 일로 나누어질 수 있음. |
![]() |
단일값 속성(single valued attribute) - 하나의 개체에 대해 단 하나의 값만을 갖는 속성 ex. 학생번호, 학생이름 등 다중값 속성(multivalued attribute) - 하나의 개체에 대해 여러 개의 값을 갖는 속성 - 집합기호 '{ }'를 사용하여 표현함. ex. 전화번호 |
![]() |
유도 속성(derived attribute) - 다른 속성의 값으로부터 값이 유추될 수 있는 속성 - 괄호 '( )'를 사용하여 표현함. ex. 나이 - 생일에서 연산할 수 있는 정보 저장 속성(stored attirubute) - 유도 속성을 위해 사용될 수 있는 속성 |
![]() |
제약조건
- 데이터 모델은 데이터, 의미, 구조, 연관성 및 데이터의 조건을 표현하기 위한 도구
- ER 모델은 개체와 관계에 대한 표현의 정확성을 위해 데이터가 항상 준수해야 하는 제약조건을 정의할 수 있는 방법을 제공함.
· 제약조건(constraints)의 종류
- 사상수 : 일대일, 일대다, 다대일, 다대다
- 참가 제약조건 : 전체적 참가, 부분적 참가
- 키 속성 : 각 개체를 구별하는데 사용되는 유일한 값을 가지는 속성의 집합
• 사상수(mapping cardinality)
관계 집합에 참가한 개체 집합들에 대해 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한 수
일대일 사상수 표현 | 일대다 사상수 표현 |
![]() |
![]() |
![]() |
![]() |
학사 시스템에서 학생 중 계좌정보를 연동한 경우 한 학생마다 오직 하나의 계좌 정보를 보유하고, 그 한 계좌는 오직 학생에게만 '보유'됨. → 두 개체 집합 사이에는 일대일 관계가 성립함. = 보유 관계 집합은 일대일 관계 |
학사 시스템에서 교수진이 강의하는 과목 정보 관리 한 과목은 한 명의 교수만 '강의'할 수 있고, 한 명의 교수는 여러 과목을 '강의'할 수 있다고 함. → 두 개체 집합 사이에는 일대다 관계가 성립함. = 강의 관계 집합은 일대다 관계 |
![]() |
![]() |
집합 = 다이아몬드, 속성 = 직사각형 두 객체집합을 각각 화살표가 있는 실선으로 연결함. |
일(1)쪽은 화살표가 있는 실선, 다(N)쪽은 화살표가 없는 실선 |
다대일 사상수 표현 | 다대다 사상수 표현 |
![]() |
![]() |
- | ![]() |
- | 한 학생이 여러 과목을 수강하고, 한 과목은 여러 학생에 의해 수강된다면 → 학생과 과목 사이의 '수강' 관계집합은 다대다 관계 |
- | ![]() |
- | 두 개체 집합을 모두 화살표가 없는 실선으로 관계집합과 연결 |
• 참가 제약조건(participation constraints)
관계에 참여하는 개체 집합의 범위
- 전체적(total) 참가 : 어떤 개체 집합의 모든 개체가 관계 집합에 참여 하는 조건, 이중 실선
- 부분적(partial) 참가 : 어떤 개체 집합의 일부 개체가 관계 집합에 참여 하는 조건, 실선
• 키(key) 속성
- 개체 집합의 각 개체마다 서로 다른 값을 가지는 속성의 집합
- 각 개체를 구별하는데 사용되는 유일한 값을 가지는 속성 집합
- 속성의 이름에 밑줄 표시
학생 개체 집합에서 키의 예시 | 참가 제약조건 예시 |
![]() |
![]() |
학생번호는 학생에 따라 유일한 값을 가지는 속성 학생이름은 동명이인이 있을 수 있으므로 키가 될 수 없음. |
모든 '과목' 개체 집합은 특정 '교수'와 관계를 맺어야 하므로 전체참가여야 함. 강의를 하지 않는 특정 '교수'는 '강의' 관계에서 부분 참가할 수 있음. |
특수 속성과 관계
재귀적 관계집합(recursive relation set)
- 한 개체 집합과 관계 집합 사이에 두 개의 실선으로 표현
- 관계집합의 역할을 기술함.
약한 개체 집합
- 개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체 집합 (상대적인 개념)
- 일대다 관계 사상수를 가지며, 강한 개체 집합과 연결되어야 함.
- 약한 개체 집합을 구별하는 키는 강한 개체 집합의 키와 결합하여 구성되어, 점선으로 밑줄을 삽입.
- 약한 개체 집합과 연결된 관계 집합은 이중선으로 표기함.
강한 개체 집합
- 약한 개체 집합과 연결되는 일반 개체 집합
한 학생당 하나의 계좌를 부여할 경우, 학생이 없어지면 계좌 개체도 같이 없어지도록 함.
학생은 강한 개체, 학생에 종속되는 계좌는 약한 개체