Araina’s Blog

11. 데이터 모델링 본문

Develop Study/Database (ORACLE)

11. 데이터 모델링

Araina 2022. 5. 26. 23:22


 

 

1. 데이터 모델링의 개념

데이터 모델링은 건축에서 쓰이는 지반 설계와 같다.

건물이 아무리 튼튼해도 지반 설계가 잘못되면 위험하듯, SW 개발 역시 데이터 모델링을 잘못하면 프로젝트 전체가 위험에 빠질 수 있다.

데이터베이스에서 데이터 탐색에 10분 이상 걸린다거나, 데이터가 누락을 감지하지 못하는 등의 문제가 발생하면 SW의 신뢰도에도 문제가 발생하는 것과 다름없을 것이다.

데이터 모델링은 현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화하는 과정이다.

그러므로 최종적으로 구축된 데이터베이스는 현실 세계의 대상이 되었던 개념과 일치해야 한다.

현실 세계에 있는 개념들을 데이터베이스로 구현하기 위해서는 먼저 정보를 모아 모델링을 해야 한다.

개념적 모델(ER 다이어그램)로 정보 모델링이 완료되면, 이를 다시 논리적 모델(관계 데이터 모델)로 가공한다.

가공이 끝난 관계 데이터 모델은 실제 DB로 구현되어 컴퓨터에 저장된다.

 


 

2. 데이터베이스 생명 주기

데이터베이스는 최초 사용자 요구에 의해 구축되어 사용되다가 필요에 따라 개선 혹은 재구축되어 사용된다.

이러한 데이터베이스의 생성과 운영에 관한 특징을 데이터베이스 생명 주기라고 부른다.

  • 요구사항 수집 및 분석: 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계이다.
  • 설계: 분석된 요구사항을 기초로 하여 주요 개념, 업무 프로세스 등을 식별(개념적 설계)하고, 사용하는 DBMS의 종류에 맞게 변환(논리적 설계) 한 후, 데이터베이스 스키마를 도출(물리적 설계)한다.
  • 구현: 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)들을 생성한다. 관련 SW에 설계한 데이터베이스를 적용하여 서비스를 제공할 수 있도록 프로그램을 완성한다.
  • 운영: 구현된 데이터베이스를 기반으로 SW를 구축하여 서비스를 운영한다.
  • 감시 및 개선: 데이터베이스 운영에 따른 문제가 있는지 관찰하고 문제가 있다면 이를 개선한다. 이 단계에서는 데이터베이스의 원활한 운영을 위한 유지 보수를 수행한다.

 


 

3. 데이터 모델링 과정

 

3.1) 요구사항 수집 및 분석

데이터베이스 구축을 위한 1번째 단계이다.

현실 세계를 파악하고 사용자의 요구사항을 수집 및 분석한다.

이 단계에서 앞으로의 진행 사항이 결정되므로 매우 중요하다.

담당자와의 인터뷰, 설문 조사를 통해 요구 사항을 직접 수렴하기도 한다.

비슷한 업무를 처리하는 기존의 데이터베이스를 분석하거나, 실제 문서를 수집해 분석한다.

각 업무와 연관된 모든 부분을 살펴봐야 한다.

 

3.2) 개념적 모델링

요구 사항을 수집하고, 분석한 결과를 기반으로 업무의 핵심 개념을 구분하고 전체적인 뼈대를 형성하는 과정이다.

개체를 추출하고, 각 개체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지가 포함된다.

개체는 구체적으로 표현할 수 있는 실체이며, ER 다이어그램은 이 실체들의 관계를 표현한 것이다.

개념적 모델링은 건물의 기본 골조를 만드는 과정처럼 데이터베이스의 큰 골격을 만드는 과정이다.

완성된 ER 다이어그램은 사용자의 요구 사항을 제대로 반영해야 하며, 업무 처리 절차에 문제가 없었는지 등을 점검해야 한다.

ER 다이어그램은 핵심적인 부분만 간략하게 작성하는 것이 좋다.

 

3.3) 논리적 모델링

논리적 모델링은 개념적 모델링에서 만든 ER 다이어그램을 사용하고자 하는 DBMS에 맞게 사상하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다.

논리적 모델링은 다음과 같은 과정을 거쳐서 완성된다.

  • 개념적 모델링에서 추출하지 않았던 상세 속성을 모두 추출
  • 데이터 중복 저장 문제를 해결하기 위한 정규화 수행
  • 데이터 표준화 수행

 

3.4) 물리적 모델링

작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고, 구현하는 과정이다.

DBMS의 특성에 맞게 저장 구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있다.

SQL 코드를 작성했던 과정들을 떠올려보면 된다.

물리적 모델링을 할 때 트랜잭션, 저장 공간 설계 측면에서 고려할 사항들은 다음과 같다.

  • 응답 시간 최소화
  • 얼마나 많은 트랜잭션(작업)을 동시에 발생시킬 수 있는지 검토
  • 데이터가 저장될 공간을 효율적으로 배치

 


 

4. ER 모델

ER 모델은 데이터 모델링 과정 중, 개념적 모델링에 사용되는 모델이다.

세상의 사물을 개체와 개체 간의 관계로 표현하며, 개체는 독립적인 의미를 지닌 사람이나 사물을 의미한다.

개체의 특성을 나타내는 속성으로 개체를 식별할 수 있으며, 개체끼리는 서로 관계를 맺는다.

ER 모델은 개체와 개체 간의 관계를 ER 다이어그램이라는 표준화된 그림으로 표현한다.

ER 다이어그램은 ER 모델에 대해 큰 지식이 없는 사람도 그 내용을 쉽게 알아볼 수 있어야 한다.

ER 모델은 개념적 모델링 단계에서 사용하므로, 특정 데이터 모델이나 DBMS와 무관하게 설계할 수 있다.

 

4.1) 개체와 개체 타입

개체란, 사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체를 말한다.

개체는 비슷한 속성을 가진 개체 타입을 구성하며, 개체 집합으로 묶일 수 있다.

개체 집합은 공통된 속성을 가진 개체들의 모임을 의미하며, 개체 타입은 개체 집합의 이러한 동일 특징을 나타내는 용어이다.

 

4.2) 개체 타입의 ER 다이어그램 표현

ER 다이어그램 상에서 개체 타입은 직사각형으로 나타낸다.

개체 타입은 보통 개체라고 부르는 강한 개체 타입과, 약한 개체 타입으로 구분할 수 있다.

  • 강한 개체 타입: 다른 객체의 도움 없이 독자적으로 존재할 수 있는 개체
  • 약한 개체 타입: 독자적으로 존재할 수 없고, 반드시 상위 개체 타입을 가져야 하는 개체

 

4.3) 속성

속성은 개체가 가진 성질을 의미한다.

'축구의 역사'라는 도서는 도서 이름(축구의 역사), 출판사(굿스포츠), 가격(8,000원)이라는 속성을 가진다.

이처럼 개별 개체가 가진 속성을 기본으로 개체 타입의 속성을 정의할 수 있다.

속성은 기본적으로 타원으로 표현하며, 개체 타입을 나타내는 직사각형과 실선으로 연결한다.

속성의 이름은 타원의 중앙에 표기한다.

속성이 개체를 유일하게 식별할 수 있는 키(기본 키)일 경우, 속성 이름에 밑줄을 긋는다.

 

4.4) 속성의 유형

 

4.5) 관계와 관계 타입

관계란, 개체 사이의 연관성을 나타내는 개념이다.

'고객이 도서를 구입한다'라고 할 때, '고객' 개체와 '도서' 개체는 '구입한다'라는 개념으로 연결된다.

이러한 개체 간의 연관성을 관계라고 한다.

관계 타입이란, 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이다.

관계 집합은 관계로 연결된 집합을 의미한다.

 

4.6) 관계 타입의 ER 다이어그램 표현

관계 타입은 마름모로 표현하며, 관계 타입의 이름은 기호 중앙에 표기한다.

 

4.7) 관계 타입의 유형

● 차수에 따른 관계 타입의 유형

관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수라고 부른다.

● 관계 대응 수에 따른 관계 타입의 유형

관계는 개체 간의 상호 작용을 표현한다.

관계 대응 수는 2가지 개체 타입의 관계에 실제로 참여하는 개별 개체 수를 의미한다.

● 1:1 관계

● 1:N 관계 / N:1 관계

● N:M 관계

관계 대응 수의 최솟값과 최댓값

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

관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응 수 외에 최솟값과 최댓값을 관계 실선 위에 (최솟값, 최댓값)으로 표현한다.

 

4.8) 참여 제약 조건

개체 집합 내 모든 개체가 관계에 참여하는지에 따라 전체 참여, 부분 참여로 구분된다.

전체 참여는 개체 집합의 모든 개체가 관계에 참여하고, 부분 참여는 일부만 참여한다.

전체 참여를 (최솟값, 최댓값)으로 표현할 경우, 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상이다.

위의 그림 6-26에서 학생은 휴학, 교환 학생 등의 다양한 이유로 수강하지 않는 경우가 발생할 수 있으므로, 부분 참여로 표현한다.

하지만 강좌는 인원 부족으로 폐강되는 경우가 없다고 가정한다면, 모든 강좌들은 수강과 관계를 가지므로 전체 참여로 표현할 수 있다.

 

4.9) 역할

개체 타임 간의 관계를 표현할 때, 각 개체들은 고유한 역할을 담당한다.

일반적으로 역할은 관계만으로 알 수 있다면 생략한다.

만약 관계에서 역할이 명확하지 않다면 반드시 표기해야 한다.

 

4.10) 순환적 관계

순환적 관계란, 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태이다.

순환적 관계는 관계선을 개체 타입과 관계 타입 양쪽에 2개를 그린다.

 

4.11) 약한 개체 타입과 식별자

강한 개체 타입

  • 독립적으로 식별할 수 있는 개체를 가지고 있는 개체 타입.
  • 각 개체를 식별할 수 있는 기본키를 가진다.

약한 개체 타입

  • 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입.
  • 자신만의 기본키만으로는 식별이 어렵기 때문에 상위의 강한 개체 타입의 기본키를 상속받아 사용한다.
  • 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분 키라고 부른다.

 


 

5. ER 모델을 관계 데이터 모델로 사상

완성된 ER 모델은 실제 데이터베이스로 구축하기 위해 논리적 모델링 단계를 거쳐야 한다.

이 단계에서 사상(Mapping)이 이루어진다.

 

5.1) 개체 타입의 사상

  • 강한(정규) 개체 타입: 정규 개체 타입 E의 경우, 대응하는 릴레이션 R을 생성한다.
  • 약한 개체 타입: 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래 키로 사상하여 자신의 기본키를 구성한다.

 

5.2) 관계 타입의 사상

관계 타입은 각 관계 타입이 맺고 있는 차수와 관계 대응 수에 따라 사상 방식을 구분할 수 있다.

이진 1:1 관계 타입

이진 1:N 관계 타입

이진 N:M 관계 타입

N진 관계 타입

 

5.3) 다중 값 속성의 사상

속성의 사상 시, 단일 값으로 표현된 속성은 특별한 문제없이 관계 데이터 모델로 직접 사상할 수 있다.

하지만 다중 값 속성의 경우 직접 사상이 불가능하다.

다중 값 속성은 취미가 (그림, 게임, 스키)인 것처럼 하나의 속성에 여러 값이 올 수 있는 속성을 말한다.

다중 값 속성을 가진 ER 모델을 관계 데이터 모델로 사상하는 방법은 다음과 같다.

 

5.4) 복합 속성의 사상

개체 타입에 포함된 단순 속성과 함께 복합 속성의 구성 요소를 포함하여 릴레이션으로 표현한다.

 


 


수고하셨습니다!


'Develop Study > Database (ORACLE)' 카테고리의 다른 글

12. 정규화  (0) 2022.05.26
10. ORACLE SQL 고급: 인덱스(Index)  (0) 2022.05.26
9. ORACLE SQL 고급: 뷰(View)  (0) 2022.05.26
8. ORACLE SQL 고급: 부속 질의  (0) 2022.05.26
7. ORACLE SQL 고급: SQL 내장 함수  (0) 2022.05.26
Comments