데이터 모델

2022. 8. 18. 16:24정처기(실기)/데이터 입출력 구현

(1) 데이터 모델 개념

- 데이터 모델은 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델이다.

- 데이터 모델에 표시해야 할 요소에는 논리적 데이터 구조, 연산, 제약 조건이 있다.

 

  • 연산(Operation) : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
  • 구조 : 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계
  • 제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

 

(2) 데이터 모델 절차

요구조건 분석 : 도출된 요구사항 간 상충을 해결하고 범위를 파악하여 외부 환경과의 상호작용을 분석을 통해 데이터에 대한 요구 분석

개념적 설계 : 사용자의 요구에 대한 트랜잭션을 모델링 하는 단계

논리적 설계 : 트랜잭션의 인터페이스를 설계하는 단계, 논리적 스키마를 설계, 정규화를 수행, 매핑, 스키마의 평가 및 정제, 테이블 설계

물리적 설계 : 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계, 객체 생성, 트랜잭션 처리를 고려하여 설계, 반정규화를 수행, 레코드 집중의 분석 및 설계, 저장 레코드 양식 설계, 접근 경로 설계

 

(3) 논리 데이터 모델링

- 논리적 데이터 모델링은 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현하는 프로세스이다. 

- 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델이다. 

 

 

▼ 논리적 데이터 모델링 종류

종류 설명
관계 데이터 모델 논리적 구조가 2차원 테이블 형태로 구성된 모델
기본 키와 이를 참조하는 외래 키로 관계 표현
1:1, 1:N, N:M 관계를 자유롭게 표현
계층 데이터 모델 논리적 구조가 트리 형태로 구성된 모델
상하관계 존재한다(부모 개체-자식 개체)
1:N 관계만 허용
네트워크 데이터 모델 논리적 구조가 그래프 형태로 구성된 모델
CODASYL DBTG 모델이라고 불림
상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조

 

(4) 관계 데이터 모델

- 데이터를 행과 열로 구성된 2차원 테이블 형태로 구성한 모델이다.

 

▼ 관계 데이터 모델의 구성요소

  • 릴레이션 : 행과 열로 구성된 테이블
  • 튜플 : 릴레이션의 행에 해당되는 요소
  • 속성 : 릴레이션의 열에 해당되는 요소
  • 카디널리티 : 튜플의 수
  • 차수 : 애트리뷰트의 수
  • 스키마 : 데이터베이스의 구조, 제약 조건 등의 정보를 담고 있는 기본적인 구조
  • 인스턴스 : 정의된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합

 

1. 관계 데이터 모델의 표현

- 데이터 간의 관계를 기본 키와 이를 참조하는 외래 키로 표현한다. 

- 테이블 간 관계를 1:1, 1:N, M:N의 관계로 목적에 맞게 표현한다.

 

 

2. 관계 대수

- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어이다. 

 

▼관계 대수 연산자의 종류

[1] : 일반 집합 연산자

- 수학의 집합 개념을 릴레이션에 적용한 연산자이다.

 

  • 합집합 : 합병 가능한 두 릴레이션 R과 S의 합집합
  • 교집합 : 릴레이션 R과 S에 속하는 모든 튜플로 결과 릴레이션 구성
  • 차집합 : R에 존재하고 S에 존재하지 않는 튜플로 결과 릴레이션 구성
  • 카티션 프로턱트 : R과 S에 속한 모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성

 

[2] : 순수 관계 연산자

- 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자이다. 

  • 셀렉트 : 릴레이션 R에서 조건을 만족하는 튜플 반환
  • 프로젝트 : 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환
  • 조인 : 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환
  • 디비전 : 릴레이션 S의 모든 튜플과 관련 있는 R의 튜플 반환

 

3. 관계 해석

- 관계 해석은 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어이다. 

 

▼논리 데이터 모델링 속성

  • 개체 : 관리할 대상이 되는 실체(사각형ㅁ)
  • 속성 : 관리할 정보의 구체적 항목(타원형ㅇ)
  • 관계 : 개체 간의 대응 관계(마름모◇)

 

(5) 개체-관계(E-R) 모델

- E-R 모델은 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델이다. 

 

 

(6) 정규화

- 정규화는 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정이다. 

- 이상 현상 : 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상이다. 삽입, 삭제, 갱신 이상이 있다.

 

  • 삽입 이상 : 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
  • 삭제 이상 : 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
  • 갱신 이상 : 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 

1. 정규화 단계

  1. 1정규형(1NF) : 원자값으로 구성
  2. 2정규형(2NF) : 부분 함수 종속 제거(완전 함수적 종속 관계)
  3. 3정규형(3NF) : 이행함수 종속 제거
  4. 보이스-코드 정규형(BCNF) : 결정자 후보 키가 아닌 함수 종속 제거
  5. 4정규형(4NF) : 다중 값 종속 제거
  6. 5정규형(5NF) : 조인 종속 제거

 

[1] : 1차 정규화

- 테이블 내의 속성값은 원자값을 가지고 있어야 한다.

- 이메일 주소가 속성에 2개 이상 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장하면 1차 정규화를 만족한다. 

 

[2] : 2차 정규화

- <고객명, 서비스 이름>이 <서비스 이용 기간>에 영향을 주고, <서비스 이름>이 <서비스 가격>에 영향을 주는 관계를 부분함수 종속 관계라고 한다.

- 부분 관계인 <서비스 이름, 서비스 가격> 관계를 별도의 테이블로 두면 부분 함수 종속 관계가 제거되어 2차 정규화를 만족한다.

 

[3] : 3차 정규화

- A->B이고, B->C이면서 A->C 관계가 같이 있는 경우를 이행함수 종속 관계라고 한다. 

 

 

[4] : 보이스-코드 정규화(BCNF)

- <교수명>은 <과목명>에 직접 영향을 주기 때문에 <교수명, 과목명> 테이블로 분리하여 교수명이 후보 키 역할을 하도록 하여 보이스-코드 정규화를 만족한다. 

 

[5] : 4차 정규화

- <개발자>별로 여러 <자격증> 값을 가지고 잇고, <개발자>별로 여러 <언어> 값을 가지고 있으므로 <개발자, 자격증>, <개발자, 언어> 테이블로 분리하여 관리하면 다치 종속 관계를 제거하기 때문에 4차 정규화를 만족한다. 

 

[6] : 5차 정규화

- 4차 정규화 테이블에 대해 조인 연산을 수행하면 4차 정규화 수행 전 데이터와 다르게 되는 문제인 조인 종속이 발생한다. 

 

 

 

(7) 반 정규화

- 반 정규화는 정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법이다.

- 비정규화, 역정규화라고도 불린다. 

 

▼ 반 정규화 특징

장점 단점
반 정규화된 데이터 구조는 성능 향상과 관리의 효율성이 증가 데이터의 일관성 및 정합성 저하
유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음

 

- 반 정규화를 위해서는 데이터의 일관성과 무결성을 우선으로 할지 데이터베이스의 성능과 단순화에 우선순위를 둘 것인지를 비교하여 조정하는 과정이 중요하다. 

 

 

▼ 반 정규화 기법

  • 테이블 병합 : 1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능을 향상함. 슈퍼타입/서브타입 테이블 통합 통해 성능 향상
  • 컬럼 중복화 : 조인 성능 향상을 위한 중복 허용
  • 중복관계 추가 : 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만, 이때 발생할 수 있는 성능 저하를 예방하기 위해 추가적 관계를 맺는 방법
  • 중복 테이블 추가 : 대량의 데이터들에 대한 집계함수(GROUP BY, SUM 등)를 사용하여 실시간 통계정보를 계산하는 경우에 효과적인 수행을 위해 별도의 통계 테이블을 두거나 중복 테이블을 추가
    • 집계 테이블 추가 :  집계 데이터를 위한 테이블 생성
    • 진행 테이블 추가 : 이력 관리 등의 목적으로 추가하는 테이블
    • 특정 부분만을 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
  • 테이블 분할 : 테이블을 수직 또는 수평으로 분할하는 것으로 파티셔닝이라고 함 
    • 수평 분할 : 테이블 분할에 레코드를 기준으로 활용
    • 수직 분할 : 하나의 테이블이 가지는 컬럼의 개수가 증가하는 경우 활용