article thumbnail image
Published 2023. 2. 5. 19:03

어느날 팀장님께서 이렇게 물었다 정규화가 뭔지 아세요?
머쓱하게 잘 모른다고 말씀드렸다.
다음에 같은 걸 물어보시면 대답해드리기 위해  공부한다.


SQL 정규화란?

정규화는 1NF ~ 6NF  그리고  BCNF 가 있다. 하지만 보통, 3NF 정규화까지만 해도 충분하다고한다. 

설명

데이터를 중복으로 저장하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다. 정규화는 중복 데이터를 저장하면서 일으키는 문제점을 없애려고 정보를 주제별로 분할하는 프로그램을 의미한다. 즉, 정규화란 데이터가 꼬이는 것을 막기위해 테이블을 잘게 나누는 것 행위다.

 

기본 목표

테이블 간에 중복된 데이터를 허용하지 않는다는 것, 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다.

 


제 1 정규화 : 1NF


제1 정규화란 테이블의 컬럼이 하나의 값을 갖도록 테이블을 분해하는 것 

 

회원 프로그램 수강등록목록 테이블을 보면 김민수 회원은 프로그램에 헬스와 골프 두개의 데이터가 들어가있다.  1NF로 수정된다면 한 칸에 한개의 데이터만 들어가도록 수정할 수 있다.

Before

Before

 

After (1NF)

after (1NF)

 


제 2 정규화 : 2NF


제2 정규화란 partial depenmndency(부분 함수 종속)을 제거한 테이블 즉, 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것입니다.
 

[Normalization/정규화] 함수 종속성이란?

함수 종속성이란? 완전 함수 종속 (Full Functional Dependency) 부분 함수 종속 (Partial Functional Dependency) 이행적 종속 (transitive Dependency) 함수 종속성이란? 함수 종속성은 DB에서 속성들간 종속 관계를 말

been2.tistory.com

partial depenmndency(부분 함수 종속) 이란?

우선...
PK 역활의 컬럼이 없는 테이블에 Composite Primary Key (이하 CPK )라는게 있는데 2개 이상을 합쳐서 PK를 만들 수 있을 경우 그것을 CPK라고 한다. 

종속자가 기본키(PK)가 아닌 다른 속성에 종속되거나, 기본키를 구성하는 여러 속성들의 부분집합(CPK) 중 일부분에만 종속되어 있음을 말합니다.

CPK에 종속된 컬럼을 partial depenmndency라고 하는데 이것을 제거하는 것을 제 2 정규화라고 한다.

완전 함수 종속이란?

기본키가 종속자이며 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 부분집합 또한 종속자일 경우를 말합니다.

학번        학부        이름
----------------------------------------
001   컴퓨터공학과   홍길동
002   컴퓨터공학과   이순신
003  전자공학과        장보고

결정자 : 학번
종속자 : 학부, 이름
 
종속 관계 : {학번 -> 학부, 이름}

이러한 관계에서 종속자는 기본키이며 기본키를 구성하는 모든 속성의 부분집합이 종속자이기 때문에 "학부와 이름은 학번에 완전 함수 종속 되어있다." 라고 말합니다.

 

빨간 표시가 두개 이상의 컬럼을 합쳐 만들어진  CPK이다.

그리고 가격이란 CPK인 프로그램에 종속되어 있으므로 partial depenmndency가 존재하는 것이다. 

그러면  partial depenmndency를 제거된 것을 2NF 라고한다. 

위 내용을 자세히 설명한 영상(1분33초부터 시작)

 

 

 


제 3 정규형 : 3NF


제3 정규화란 제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다.
이행적 종속 이란  A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미

 

2NF 테이블에서 출신대학은 강사라는 일반컬럼에 종속되어 있다. 

 

이것을 다른 테이블 분리하면 제 3 정규형 3NF라고합니다.


참고한 자료

 

[Normalization/정규화] 함수 종속성이란?

함수 종속성이란? 완전 함수 종속 (Full Functional Dependency) 부분 함수 종속 (Partial Functional Dependency) 이행적 종속 (transitive Dependency) 함수 종속성이란? 함수 종속성은 DB에서 속성들간 종속 관계를 말

been2.tistory.com

 

 

[Database] 정규화(Normalization) 쉽게 이해하기

지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

mangkyu.tistory.com

 

 

SQL normalization(정규화)란 무엇인가?

정규화!

velog.io

 

 

복사했습니다!