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 | 마룬 |
▶"파이브" 선생님이 이직을 하면, "플레이"라는 학생 정보도 삭제된다.
-
갱신이상
학번 | 학생이름 | 담임선생님 번호 | 담임선생님 이름 |
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 |
댓글