본문 바로가기
Database

데이터베이스 정규화(1NF, 2NF, 3NF)

by nothing-error 2023. 2. 9.

 

소개

1. 정규화란?

정규화는 데이터베이스 관리 시스템을 개발할 때, 데이터의 중복을 최소화하고 데이터의 일관성을 높이는 과정을 말합니다. 정규화는 데이터베이스의 구조와 저장 방식에 대한 규칙을 따르는 것으로, 데이터베이스 설계자들이 적용하는 기법입니다.

 

2. 데이터베이스 설계에서 정규화의 중요성

정규화는 데이터베이스 설계에서 매우 중요한 요소입니다. 정규화를 통해 데이터베이스가 적은 양의 데이터로 구성되고, 데이터의 중복이 최소화되며, 데이터의 일관성이 높아집니다. 또한, 정규화를 통해 데이터베이스의 유지보수가 용이하게 되며, 데이터의 변경 사항이 발생할 경우 쉽게 대처할 수 있습니다.

 

 

정규화

 

1차 정규화(1NF)

  • 정의: 1NF는 각 행(row)이 고유한 값을 가져야 하며, 각 열(column)은 유일한 값만 가지는 것을 의미합니다. 즉, 각 행은 구조화된 데이터의 집합으로 간주되며, 각 열은 행에 대한 특정 속성을 나타냅니다.
  • 구현: 1NF를 구현하기 위해서는 각 행이 고유한 값을 가져야 하며, 각 열은 유일한 값만을 가져야 합니다. 또한, 각 열은 한 개의 데이터 타입만을 가져야 합니다.

<1NF를 따르지 않는 예시>

CustomerID CustomerName ContactNumber Product
1 John Doe 111-1111-1111 apple, banana
2 Jane Doe 666-6666-6666 melon

<1NF를 따르는 예시>

CustomerID CustomerName ContactNumber Product
1 John Doe 111-1111-1111 apple
1 John Doe 111-1111-1111 banana
2 Jane Doe 666-6666-6666 melon

 

위의 표는 각 행이 고유한 값을 가져야 하며, 각 열은 유일한 값만을 가져야 합니다. 또한, 각 열은 한 개의 데이터 타입만을 가져야 합니다.

 

2차 정규화(2NF)

 

  • 정의: 2NF는 1NF의 기본 조건을 만족하면서, 각 행이 키 값에 대한 의존성이 없어야 하는 것을 의미합니다. 즉, 키 값에 대한 의존성을 제거하는 것이 2NF의 목적입니다.
  • 구현: 2NF를 구현하기 위해서는 각 행이 키 값에 대한 의존성이 없어야 합니다. 이를 위해서 관계의 부분집합을 새로운 테이블로 분리할 수 있습니다.

<2NF를 따르지 않는 예시>

customer table + product table?? 

CustomerID CustomerName ContactNumber Product Prices
1 John Doe 111-1111-1111 apple 1000
1 John Doe 222-2222-2222 banana 2000
2 Jane Doe 666-6666-6666 melon 3000

 

<2NF를 따르는 예시>

customer table

CustomerID CustomerName ContactNumber Product
1 John Doe 111-1111-1111 apple
1 John Doe 222-2222-2222 banana
2 Jane Doe 666-6666-6666 melon

product table

Product Prices
apple 1000
banana 2000
melon 3000

 

 

3차 정규화(3NF)

  • 정의: 3NF는 2NF의 기본 조건을 만족하면서, 키 값이 아닌 외래 키에 대한 의존성이 없어야 하는 것을 의미합니다. 즉, 외래 키에 대한 의존성을 제거하는 것이 3NF의 목적입니다.
  • 구현: 3NF를 구현하기 위해서는 키 값이 아닌 외래 키에 대한 의존성이 없어야 합니다. 이를 위해서 관계의 부분집합을 새로운 테이블로 분리할 수 있습니다.

 

<3NF를 따르지 않는 예시>

ProductID Product Price Category
1 apple 1000 fruit
2 jeans 5000 clothes
3 chair 4000 furiture

<3NF를 따르는 예시>

ProductID Product Price
1 apple 1000
2 jeans 5000
3 chair 4000

 

Product Category
apple fruit
jeans clothes
chair furiture

댓글