본문 바로가기
Programming/Database

[Database] 데이터베이스 모델링

by 공부합시다홍아 2023. 12. 13.
데이터 모델링

데이터 모델링이란 주어진 개념으로 부터 논리적인 데이터 모델을 구성하는 작업을 말한다.
논리적 데이터 모델을 구성하기 위해 데이터베이스의 골격을 이해하고 그 이해를 바탕으로 모델의 기능과 성능적인 측면에서 효율적인 작성이 필요하다.
▶ 이는 물리적인 모델로 환원하여 고객의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함한다.

데이터베이스 모델링을 하는 목적

첫 번째 목적업무정보를 구성하는 기초가 되는 정보들을 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것이다.
두 번째 목적분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하기 위한 것이다.

이는 중복성, 유연성, 일관성을 고려하여 수행되어야 한다.

  • 중복성 : 같은 데이터베이스 내의 데이터 혹은 속성의 중복 저장을 지양해야 한다.
  • 유연성 : 추후 변화의 가능성을 생각하고 설계를 해야한다.
    → 빈번한 모델에 대한 수정/변경이 이루어지지 않도록 쿼리의 튜닝까지 고려
  • 일관성 : 데이터 간의 연관된 정보를 무시하고 데이터가 갱신되는 경우를 피하고자 데이터 간으 관계를 명확히 정의

데이터베이스 생명주기

데이터베이스 생명주기는 데이터베이스의 생성과 운영에 관련된 특징을 의미하고, 5단계로 구성된다.
요구사항 수집 및 분석
설계
구현
운영
감시 및 개선

  • 요구사항 수집 및 분석
    사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정한다.
  • 설계
    분석된 요구사항을 기반으로 개념과 업무 프로세스 등을 식별하고 사용하는 DBMS의 종류에 맞게 변환한 후
    데이터베이스 스키마를 도출시킨다.
    ▶ 개념적 모델링을 하여 ER다이어그램을 도출하고, 이를 이용해 관계스키마 모델을 도출한다.
    ▶ 그리고 관계 스키마를 도출한다.
  • 구현
    설계단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰,인덱스)를 만든다.
  • 운영
    구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공한다.
  • 감시 및 개선
    데이터베이스 자체의 문제점을 파악하여 개선한다.


모델링
개념적 모델링 : 개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정
논리적 모델링 : ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정
물리적 모델링 : 관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정
  • 개념적 모델링 ( 정보 모델링 )
    : 요구사항을 수집, 분석한 결과를 기반으로 업무의 핵심적인 개념을 구분하고 전체적인 윤곽을 만든다.
    개체(Entity)를 추출하고 개체들 간의 관계를 정의하여 ER다이어그램을 만드는 과정까지를 말한다.
  • 논리적 모델링 
    : 개념적모델링에서 만든 ER다이어그램을 사용하려는 DBMS에 맞게 Mapping 하여 실제 데이터베이스로 구현하기
      위한 관계 스키마 모델을 만드는 과정이다.
    ▶ 상세속성 추출, 정규화 수행, 데이터 표준화 수행 등이 있다.
  • 물리적 모델링
    : 논리적모델을 실제 컴퓨터의 저장장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정이다. 
    트랜잭션, 저장공간 설계의 측면에서 3가지를 고려해야 한다.
    ▶ 응답시간을 최소화하고, 동시에 많은 트랙잭션을 발생시킬 수 있어야 한다.

ER 모델 ( Entity - Relationship Model )

세상의 모든 사물을 개체(Entity)와 개체간의 관계로 표현한다.

※ 개체(Entity) : 독립적인 의미를 지니고 있는 유/무형의 사물 또는 사람으로 개체의 특성을 나타내는 속성에 의해 식별
▶ 개체끼리 서로 관계를 지닌다.

ER모델은 현실 세계에서 개체들을 도출하고 개체들 사이의 관계를 기술하는 것이다.
ER 모델로 ER 다이어그림을 만들 때 아래와 같은 기호를 사용하여 표현한다.


개체와 속성

개체사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고있는 실체를 가진 데이터이다.
데이터베이스에서 주로 다루는 개체는 낱개로 구성된 것으로 각각 데이터 값을 가지며 데이터 값이 변하는 것이다.
이러한 데이터들이 가진 공통의 속성개체타입이라고 하며, 여러 개의 개체 타입이 모여있는 것을 개체 집합이라 한다.

위에 ER 다이어그램을 기호로 표현한 그림을 보면 개체를 '직사각형'으로 표현한다.
개체는 약한 개체와 강한 개체가 있다.

  • 강한개체 : 다른 개체의 도움없이 독자적으로 존재 가능, 일반적으로 우리가 생각하는 개체이다.
  • 약한 개체 : 독자적으로 존재할 수 없으며 반드시 상위 개체타입을 가져야 한다.

강한개체와 약한개체는 아래의 기호와 같이 표현한다.

속성개체가 가진 성질을 의미한다. 기본적으로 타원으로 표현하며 개체타입을 나타내는 직사각형과 실선으로 연결된다.
속성의 이름은 타원의 중앙에 표기하고, 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 긋는다.


관계와 관계 타입

관계(Relationship)이란 개체 사이의 연관성을 나타내는 개념이다.
관계타입(Relationship Type)은 개체 타입과 개체 타입간의 연결 가능한 관계를 정의한 것이다.
관계집합(Relationship Set)은 관계로 연결된 집합을 의미한다.

관계는 총 4가지의 대응수가 있다. 

  • 일 대 일 (1 : 1) 관계 : 하나의 개체가 하나의 개체에 대응
  • 일 대 다 (1 : N) 관계 : 하나의 개체가 여러 개체에 대응
  • 다 대 일 (N : 1) 관계 : 여러 개체가 하나의 개체에 대응
  • 다 대 다 (N : N) 관계 : 여러 개체가 여러 개체에 대응

4가지 대응수는 아래와 같이 표기한다.


약한 개체 타입과 식별자

약한 개체 타입이란 위에서 한 번 언급했듯이, 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속적인
개체 타입을 의미한다.
▶ 독립적인 키로 존재 불가능
▶ 상위 개체 타입의 키와 결합하여 약한 개체타입의 개별 개체를 고유하게 식별하는 속성을 식별자 혹은 부분키라 한다.

식별자 혹은 부분키는 아래와 같은 도형으로 표현한다.


IE 표기법 ( Information Engineering )

관계 타입이나 식별자를 위와 같이 표기하면 ER 다이어그램이 다소 복잡해지기 때문에 이를 쉽게 표현하기 위해
IE 표기법을 이용해 쉽게 표현할 수 있다.

위를 보면 기존 Peter Chen 표기법은 여러 도형을 이용해 ER다이어그램을 작성한 반면 IE 표기법을 사용해
한 도형 내 테이블에 대한 정보를 표기할 수 있다.

아래의 그림은 IE 표기법에서 개체들 사이의 관계를 정의할 때 사용하는 기호이다.


정규화 ( Normalization )

정제되지 않은 데이터를 관계형 데이터베이스에 어울리게 만들어주는 방법이다.
정규화는 1정규화부터 5정규화까지 있지만, 실무에서는 대체적으로 1~3 정규화까지의 과정을 거친다.

  • 테이블 간 중복을 허용하지 않는다.
    → 중복된 데이터를 허용하지 않음으로써, 무결성(Integrity)를 유지할 수 있다.
    → 데이터베이스의 저장용량을 감소화 시킨다.
  • 데이터베이스 변경시 이상 현상 ( Anomaly )를 제거시킨다.
    • 삭제 이상 : 삭제 시 의도와는 다르게 다른 데이터가 연쇄적으로 삭제되는 현상
    • 삽입 이상 : 삽입 시 의도와는 다르게 원하지 않는 데이터가 삽입되는 현상
    • 수정 이상 : 수정 시 의도와는 다르게 데이터의 일부만 수정되어 데이터 불일치가 나타나는 현상
  • 정규화된 데이터베이스 구조에서는 새로운 데이터형의 추가로 인한 확장시, 구조를 변경하지 않거나
    일부만 변경해도 된다.
정규화 절차 설명
제 1 정규화 속성(Attribute)의 원자성을 확보하고 원자값이 아닌 도메인을 분해한다.
제 2 정규화 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거한다.
제 3 정규화 기본키를 제외한 컬럼간의 종속성을 제거한다. 즉. 이행 함수 종속성을 제거한다.
BCNF 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종속시키면 분해한다.
제 4 정규화 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거한다.
제 5 정규화 조인에 의해서 종속성이 발생하는 경우 분해한다.

 

728x90

'Programming > Database' 카테고리의 다른 글

[Database] 권한 ( Privilege )  (0) 2023.12.13
[Database] INDEX  (0) 2023.12.13
[Database] 시퀀스 , SEQUENCE  (0) 2023.12.12
[Database] 뷰, VIEW  (0) 2023.12.12
[Database] 제약조건  (1) 2023.12.12