데이터 모델 (1) 논리 데이터베이스

이주희·2022년 9월 26일
0

CS

목록 보기
44/66

논리 데이터 모델링

  • 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현하는 프로세스

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


1. 관계 데이터 모델

실세계 데이터를 행과 열로 구성된 테이블 형태로 구성한 데이터 모델

  • 논리적 구조가 2차원 테이블 형태로 구성된 모델

  • 기본 키(PK; Primary Key)와 이를 참조하는 외래 키(FK; Foreign Key)로 관계를 표현한다.

  • 1:1, 1:N, N:M 등 모든 관계를 자유롭게 표현한다.

1-1. 구성 요소 🌟

  • 릴레이션: 테이블
  • 튜플: 로우 row
  • 애트리뷰트: 칼럼 column
  • 카디널리티 Cardinality: 행 수 🌟
  • 디그리(차수) Degree: 칼럼 수 🌟

1-2. 관계 대수 🌟

  • 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하고, 관계로 표현된 데이터를 취급하는 대수적인 연산 체계이자 절차적 언어

    절차적 언어는 순서가 정해져 있고, 비절차적 언어는 순서가 없는 것!

(1) 일반 집합 연산자 🌟

  • 합집합 Union

  • 교집합 Intersection

  • - 차집합 Difference

  • X 카티션 프로덕트 CARTESIAN Product
    (모든 튜플을 연결해 만들어진 새로운 튜플로 릴레이션 구성)

(2) 순수 관계 연산자 🌟

관계형 데이터베이스를 구현하기 위해 새롭게 만들어진 연산자

  • σ 셀렉트 Select
    (조건에 해당되는 행)

  • π 프로젝트 Project
    (조건에 해당되는 칼럼)

  • ▷◁ 조인 Join
    (공통된 속성을 엮어서 하나의 테이블로 만듦)

  • ÷ 디비전 Division 🌟
    (두 릴레이션 간 겹치는 부분을 추출)

    디비전

    릴레이션 A, B가 있을 때 릴레이션 B 조건에 맞는 것들만 릴레이션 A에서 튜플을 꺼내 프로젝션하는 관계 대수


1-3. 관계 해석 🌟

  • 튜플 관계 해석과 도메인 관계 해석을 하는 비절차적 언어

  • 프레디킷 해석에 기반한 언어이며, 비절차적 언어(원하는 정보가 무엇이라는 것만 선언)


2. 계층 데이터 모델

  • 논리적 구조가 트리 형태로 구성된 모델

  • 상하 관계가 존재한다.(부모 개체 - 자식 개체)

  • 1:N 관계만 허용한다.


3. 네트워크 데이터 모델

  • 논리적 구조가 그래프 형태로 구성된 모델

    트리는 사이클이 없고, 그래프는 사이클이 있음!

  • CODASYL DBTG 모델이라고 불린다.

    CODASYL

    Conference On DAta SYstems Languages
    데이터 시스템 언어 회의

    COBOL

    COmmon Business Orinted Language
    교육용 언어

  • 상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조


4. 논리 데이터 모델링 속성

(1) 개체 Entity

  • 관리할 대상이 되는 실체
  • 사각형으로 표시

(2) 속성 Attributes

  • 관리할 정보의 구체적 항목
  • 타원으로 표시

(3) 관계 Relationship

  • 개체 간의 대응 관계
  • 마름모로 표시

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

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

  • 논리 데이터 모델링에서는 모든 이해당사자와 의사소통의 보조 자료로 활용

  • 요구사항으로부터 얻어낸 정보들을 개체, 속성, 관계로 기술한 모델


6. 정규화

6-1. 이상 현상 Anomaly 🌟🌟

  • 데이터의 중복성으로 인해, 릴레이션을 조작할 때 발생하는 비합리적 현상

(1) 삽입 이상

  • 정보 저장 시 불필요한 정보를 입력해야 하는 경우

(2) 삭제 이상

  • 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우

(3) 갱신 이상

  • 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

6-2. 정규화

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

1정규형(1NF) :: 원자화

  • 원자값으로 구성한다.
  • 반복 속성/중복 제거가 필요하다.

2정규형(2NF) :: 부분 함수 종속 제거 🌟

  • 주식별자가 아닌 속성을 분리한다.

3정규형(3NF) :: 이행 함수 종속 제거

  • 속성에 종속적인 속성을 분리한다.

    이행함수 종속성

    B는 A에 종속되고, C는 B에 종속될 때, C는 A에 종속되는 관계

보이스-코드 정규형(BCNF) :: 결정자 함수 종속 제거

  • 모든 결정자가 후보 키가 되도록 하여 결정자 함수 종속성을 제거하는 단계

4정규형(4NF) :: 다치 종속 제거

  • 특정 속성 값에 따라 선택적인 속성을 분리한다.

5정규형(5NF) :: 조인 종속 제거

  • 조인 종속성을 제거한다.

6-3. 반 정규화 🌟

De-Normalization = 비정규화 = 역정규화

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

  • 장점: 반 정규화된 데이터 구조는 성능 향상과 관리의 효율성 증가

  • 단점: 데이터의 일관성 및 정합성 저하 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있다.

(1) 테이블 병합

  • 1:1 관계, 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상

  • 슈퍼 타입 / 서브 타입 테이블 통합을 통해 성능 향상

    Super Type

    모든 서브 타입으로 상속되는 공통 속성(일반화)

    Sub Type

    개체의 전체 집합에서 일부만 모아놓은 부분 속성(상세화)

(2) 테이블 분할

  • 테이블을 수직 또는 수평으로 분할(파티셔닝)
    • 수평 분할: 레코드를 기준으로 분할
    • 수직 분할: 한 테이블이 가지는 컬럼 개수가 증가하는 경우 활용

(3) 테이블 중복

  • 대량의 데이터들에 대한 집계함수(GROUP BY, SUM 등)을 사용하여 실시간 통계 정보를 계산하는 경우에 효과적인 수행을 위해 별도의 통계 테이블을 두거나 중복 테이블 추가
    • 집계 테이블 추가: 집계 데이터를 위한 테이블
    • 진행 테이블 추가: 이력 관리 등의 목적으로 추가
    • 특정 부분만을 포함하는 테이블 추가: 특정 부분만으로 새로운 테이블 생성

(4) 컬럼 중복

  • 조인 성능 향상을 위한 컬럼 중복 허용

(5) 관계 중복

  • 여러 경로를 거쳐 조인이 가능하지만 성능 저하를 예방하기 위해 추가적인 관계를 맺는 방법
profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글