[관계형 데이터 모델링] 정규화

이다혜·2023년 11월 6일
0

데이터베이스

목록 보기
8/9

정규화(Normalization)

정제되지 않은 데이터 즉 표를 관계형 데이터 베이스에 어울리는 표로 만들어주는 레시피이다.

제1정규화(1NF)

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

예시


위의 테이블은 tag 값이 여러개여서 제1 정규화 규칙을 만족하지 않는다.
tag는 topic에 의존하기 때문에 topic - tag 관계를 살펴보자.

하나의 topic은 여러개의 tag를 가질 수 있고, 하나의 tag는 여러개의 topic을 가질 수 있다. 즉, n:m 관계이다.

그래서 단순히 쪼개기만 해서는 안되고, 매핑 테이블을 만들어서 분리해야 한다.

제2정규화(2NF)

제1 정규형을 만족한 테이블에 대해서 완전 함수 종속을 만족하도록 테이블을 분리하는 것이다. 테이블 상에 부분 종속성을 없앤다.

기본키중에 중복키가 없으면 넘어가면 된다.

예시


위의 topic 테이블에서 분홍색 컬럼들은 title에만 종속된다.
price는 title - type에 종속된다.

즉, 분홍색 컬럼들은 중복키에 대해 부분 종속이고
price는 완전 종속이다.

부분적으로 종속되는 컬럼들을 모으고, 전체적으로 종속되는 컬럼을 쪼갠다.

제3정규화(3NF)

이행적 종속을 없애도록 테이블을 분해하는 것이다.
기본 키를 제외하고 다른 column에 의해 결정되는 데이터를 없애는 것이다.
이행적 종속 : A->B, B->C가 성립할 때 A->C가 성립되는 것

예시


author_id는 title에 의존하지만
author_name과 author_prifile은 author_id에 의존한다.

0개의 댓글