본문 바로가기
개발/DBMS

RDBMS 정규화(Normalization) - 1/2

by EPdev 2020. 9. 24.
728x90

정규화(Normalization)의 개념

정규화란 뭘까? 우리가 흔히 DB라고 알고 있는 RDBMS(Relational DataBase Management System)를 설계할 때, 중복을 최소화하면서 데이터 구조를 짜는 프로세스이다.

그렇다면 왜 중복을 최소화하는 정규화를 할까? 이를 하지 않으면 이상 현상(Anomaly)이 발생하기 때문이다.

 

이상 현상(Anomaly)이란?

정규화를 적절히 하지 않은 DB 또는 Relation(Table)에 데이터가 중복되고 이 Table에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상이다.

* Relation은 행(Rows)과 열(Columns)로 구성된 Table이다. 

 

이상현상은 아래와 같다.

이상 현상 설명
삽입이상 데이터를 테이블에 저장할 때, 불필요한 데이터도 넣어야하는 경우
삭제이상 데이터를 테이블에서 삭제할 때, 원하지 않는 데이터도 같이 삭제되는 경우
갱신이상 중복된 데이터 중에서 특정 부분만 수정되어 값이 모순을 일으키는 경우

뭔가 설명만 봐서는 와닿지 않는다. 예제를 통해 보자.


아래와 같은 테이블이 있다고 하자.

학번 학생이름 담임선생님 번호 담임선생님 이름
1410015 콜드 34 마룬
1410020 플레이 63 파이브

 

  • 삽입이상

학번 학생이름 담임선생님 번호 담임선생님 이름
1410015 콜드 34 마룬
1410020 플레이 63 파이브
1410025 마이클 ? ?

      ▶ "1410025" 학번을 가진 "마이클"이란 학생을 테이블에 넣으려는데 "담임선생님"이 없으면 입력할 수 없다.

 

  • 삭제이상

학번 학생이름 담임선생님 번호 담임선생님 이름
1410015 콜드 34 마룬
1410020 플레이 63 파이브

      ▶"파이브" 선생님이 이직을 하면, "플레이"라는 학생 정보도 삭제된다.

 

  • 갱신이상

학번 학생이름 담임선생님 번호 담임선생님 이름
1410015 콜드 72 조니
1410020 플레이 63 파이브

      ▶"콜드"라는 학생의 담임선생님을 변경할 때, (기존 선생님인) "마룬"의 정보가 없어진다.


위와 같이, RDBMS에서 정규화를 제대로 하지 않은 테이블의 이상현상에 대해서 알아보았다.

 

그럼 이제 정규화란 무엇인가를 알아보자! 그 전에 설명이 길어지니 정규화에 대해서 간략하게 정리한 표를 첨부한다.

 

단계별 정규화

단계 조건
1정규형(1NF) 테이블 내의 속성값들이 원자값으로 구성
2정규형(2NF) 부분함수 종속 제거
3정규형(3NF) 이행함수 종속 제거
보이스-코드 정규형(BCNF) 결정자 함수이면서 후보키가 아닌 것 제거
4정규형(4NF) 다치(다중 값) 종속성 제거
5정규형(5NF) 조인 종속성 제거

세부적인 내용에 대해서는 다음 글에서 알아보겠다.

728x90

'개발 > DBMS' 카테고리의 다른 글

JOIN 문제 해결  (0) 2020.11.11
문자+숫자 DB 컬럼 정렬하기  (0) 2020.11.09
JOIN 문제  (0) 2020.11.05
RDBMS 정규화(Normalization) - 2/2  (0) 2020.09.27
Stored Procedure - 저장 프로시저  (0) 2020.08.11

댓글