jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Database

[DB] 정규화에 대해서

2022. 11. 1. 21:59

정규화란 무엇인가


관계형 데이터 베이스 설계에서 중복을 최소화하고 데이터를 구조화하는 프로세스를 뜻한다.

 

데이터가 중복으로 저장된다

- 디스크 공간 낭비 

- 비정상적인 삽입 갱신 삭제 처리

- 일관되지 않은 데이터

문제가 생긴다. 

 

기본 목표: 테이블 간에 중복된 데이터를 허용하지 않는다.

- 불필요한 데이터를 제거, 데이터의 중복을 최소화

- 데이터 베이스 구조 확장 시 재디자인을 최소화

- 이상 현상 방지 

 

중복된 데이터를 허용하지 않음으로써 이상 현상을 없애는 과정

 


정규화는 어떤 배경에서 생겨났는가 

한 릴레이션에 여러 속성의 값들을 혼합하면 정보가 중복 저장되어 이상 현상이 발생한다. 

이상 현상이란, 테이블 내의 중복성에 의해서 발생되는 데이터 불일치 현상을 의미한다. 

 

갱신 이상: 어떤 값을 업데이트 했을 때 그 속성의 다른 속성 값들과 불일치가 발생하는 현상

일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 현상

튜플 갱신 시 중복된 데이터의 일부만 갱신되어 일어나는 데이터 불일치 현상

 

삽입 이상: 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상

-> 원하는 필드에만 값을 넣고 싶은데, 원하는 값 이외에 다수의 필드 값도 함께 넣어줘야 해서 무엇을 넣을 지 결정하지 못하는 것

 

삭제 이상: 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 

-> 원하는 값만 삭제하고 싶은데, 하나의 튜플이 삭제를 원하지 않는 속성 값도 갖고 있기 때문에 같이 지워져서 발생하는 문제

 

이러한 이상 현상을 방지하기 위해 정규화가 생겨난 것

 

정규화 장점

1. 데이터 베이스 변경 시 이상 현상을 제거할 수 있다.

 

2. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있다.

> 무결성:

 

3.  DB의 저장 용량을 줄일 수 있다. 


 

 

 

정규화 단점


릴레이션이 분해된 상태이므로 릴레이션 간 join 연산이 많아진다. 

이로 인해 질의에 대한 응답 시간이 느려질 수 있다. 

 

join: 두 릴레이션과 관련된 튜플을 하나의 튜플로 결합하는 연산 

 

 

 

정규화의 과정


제1정규화

테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것

  • 하나의 컬럼은 하나의 값만 가진다
  • 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다
  • 한 속성에 대하여 반복되는 그룹이 나타나지 않는다

 

제2정규화

제 1 정규화를 진행한 테이블에 완전 함수 종속을 만족하도록 테이블을 분해하는 것

완전 함수 종속: 기본키의 부분 집합이 결정자가 되어선 안된다는 것을 읨

-> 이게 무슨 뜻이지??

X의 값에 따라 Y의 값이 결정될 때 Y는 X에 대해 함수적 종속이라고 한다. 

예를 들어, 학번을 알면 이름을 알 수 있는데, 이 경우엔 학번이 X가 되고 이름이 Y가 된다.

 

 

제3정규화

제2정규화를 진행한 테이블의 이행적 종속을 없애도록 테이블을 분해하는 것

이행적 종속: A가 B가 속하고, B가 C에 속한다면, A는 C에 속함이 성립되는 것. 

-> 이게 무슨 뜻?

 

BCNF (Boyce-Codd) 정규형

 

 

 

    'Database' 카테고리의 다른 글
    • [DB] DB와 DBMS, SQL이란 무엇인가
    • [DB] 트랜잭션 Transaction
    • [DB] Index란 무엇인가? Index 자료구조와 성능
    • [DB] 데이터 베이스를 사용하는 이유, 데이터 베이스의 성능

    티스토리툴바