정규화와 성능

2023. 6. 8. 00:37· Computer Science/데이터베이스
목차
  1. 정규화를 통한 성능 향상 전략
  2. 정규화 용어
  3. 정규화 효과 및 장점
  4. 정규화 이론
  5. 제 1 정규형
  6. 제 2정규형
  7. 제 3정규형
  8. 정규화와 성능

정규화를 통한 성능 향상 전략

  • 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것이다.
  • 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. (고객과 주문테이블의 분리)
  • 정규화된 테이블을 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

 

정규화 용어

정규화

  • Normalization
  • 함수적 종속성등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입,삭제,갱신 이상(Anomaly) 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정

정규형

  • NF: Normal Form
  • 정규화 규정
  • 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성

함수적 종속성

  • FD: Functional Dependency
  • 테이블의 특정 컬럼A의 값을 알면 다른 컬럼 B값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 함
  • ex. 고객명은 고객주민등록번호에 함수적 종속성이 있음

결정자

  • Determinant
  • 함수적 종속성 설명에서, 컬럼 A를 결정자라고 함(ex. 주민등록번호는 결정자임)

다치종속

  • MVD: MultiValued Dependency
  • 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치종속 되었다고 함
  • ex. 학번을 알면 해당 학생의 다수 개의 수강과목을 알 수 있을 때, 수강과목은 학번에 다치종속관계임

 

정규화 효과 및 장점

  • 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념(엔티티, 테이블)으로 정의 하게 됨에 따라 High Cohesion & Loose Coupling(높은 응집도와 낮은결합도) 원칙에 충실해지며 이로 인해 유연성이 극대화 됨
  • 개념이 좀 더 세분화됨에 따라 해당 개념에 대한 재활용 가능성이 높아짐 (일반적으로 각종 참조 모델은 정규형을 만족하고 있음)
  • Non-Key(일반 속성) 데이터 요소가 한번만 표현됨에 따라 중복이 최소화됨(데이터 품질확보, 저장공간 절약, DML성능)

정규화 이론

  • 1차, 2차, 3차, 보이스코드정규화는 함수종속성에 근거하여 정규화를 수행하고,
  • 4차 정규화는 속성의 값이 여러 개 발생하는 다치종속,
  • 5차 정규화는 조인에 의해 발생하는 이상현상 제거로 정규화를 수행한다.
  • 보통 실무에서는 3차정규화까지 보장함

 

제 1 정규형

  • 모든 속성은 원자 값을 가져야 함
  • 다중 값을 가질 수 있는 속성은 분리되어야 함

 

제 2정규형

  • 제 1정규형을 만족하는 상태에서 모든 Non-key 컬럼은 기본 키 전체에 종속되어야 함
  • 기본 키에 종석정이지 않거나 기본 키 일부 컬럼(들)에만 종속적인 컬럼은 분리되어야 함

 

 

제 3정규형

  • 제 2정규형을 만족하는 상태에서 일반속성들간에도 종속관계가 존재하지 않아야 함
  • 일반속성들 간 종속관계가 존재하는 것들은 분리되어야 함

 

정규화와 성능

  • 정규화를 수행해서 조인이 발생하게 되더라도 효율적인 인덱스 사용을 통해 조인연산을 수행하면 성능상 단점은 거의 없다.
  • 정규화를 수행하여 소량의 테이블이 생성된다면 소량의 테이블을 먼저 읽어 조인 연산을 수행하면 되므로 성능상 유리할 수 있다
  • 정규화가 제대로 되지 않으면 동일한 종류의 속성을 여러 개 가지고 있어서 과다한 인덱스가 만들어 질 수 있는데 정규화를 한다면 하나의 인덱스만 만들어도 된다.

 

반정규화된 테이블의 성능저하 예시1

반정규화된 테이블의 성능저하 예시2

 

반정규화된 테이블의 성능저하 예시3

반정규화된 테이블의 성능저하 예시4

함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요

  • 함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다.
  • 이 때 기준값을 결정자(Determinant)라 하고 종속되는 값을 종속자(Dependent)라고 한다.

'Computer Science > 데이터베이스' 카테고리의 다른 글

대량 데이터에 따른 성능  (0) 2023.06.08
반정규화와 성능  (0) 2023.06.08
성능 데이터 모델링  (0) 2023.06.07
식별자(Identifiers)  (1) 2023.06.07
관계(Relationship)  (0) 2023.06.03
  1. 정규화를 통한 성능 향상 전략
  2. 정규화 용어
  3. 정규화 효과 및 장점
  4. 정규화 이론
  5. 제 1 정규형
  6. 제 2정규형
  7. 제 3정규형
  8. 정규화와 성능
'Computer Science/데이터베이스' 카테고리의 다른 글
  • 대량 데이터에 따른 성능
  • 반정규화와 성능
  • 성능 데이터 모델링
  • 식별자(Identifiers)
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • weak entity
  • 최단거리
  • 플로이드 워셜
  • 재시도
  • 이것이 코딩테스트다
  • 부품찾기
  • 파이썬
  • 데이터베이스
  • E-R Model
  • 개미전사
  • 기수정렬
  • 이것이코딩테스트다
  • 카카오테크캠퍼스
  • 최단 거리
  • 그리디
  • 효율적인화폐구성
  • 제약 사항
  • 다이어그램
  • DP
  • 다이나믹프로그래밍
  • 힙큐
  • UML
  • 계수정렬
  • 다익스트라
  • 이것이 코딩테스트다.
  • 먀
  • 다이나믹
  • 교환정렬
  • Relationship model
  • 참조 무결성

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
정규화와 성능
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.