IT이야기/데이터베이스

제1정규형(1NF): 데이터베이스의 기본적인 정규화 단계

Chiba-in 2025. 2. 28. 11:00

🔹 제1정규형(1NF)란?

1. 1NF(제1정규형)의 정의

제1정규형(1NF, First Normal Form)은 모든 테이블의 열(Column)이 원자적(Atomic) 값을 가져야 하며, 중복된 열과 다중 값(Multivalued Attribute)이 없어야 하는 데이터베이스 정규화의 첫 번째 단계입니다.
즉, 한 개의 속성(Attribute, 컬럼)에는 하나의 값만 저장해야 하며, 반복적인 데이터 구조를 제거해야 합니다.

1NF의 주요 원칙:

  • 모든 열이 원자적(Atomic) 값을 가져야 함
  • 각 열(Column)에는 단일 값만 저장 가능 (다중 값 허용 불가)
  • 각 행(Row)은 고유해야 하며, 동일한 행이 반복되지 않아야 함
  • 중복된 열을 제거해야 함

📌 1NF를 충족하면 데이터가 체계적으로 정리되며, 검색 및 유지보수가 용이해짐


🔹 1NF를 충족하지 않는 테이블 예시

다음과 같은 주문 테이블이 있다고 가정합니다.

✔️ 비정규화된(1NF 위반) 테이블

주문ID 고객명 상품명 수량
101 홍길동 노트북, 스마트폰 3
102 이영희 태블릿 1
103 박철수 스마트폰, 태블릿 2

📌 문제점:

  • 상품명(ProductName) 열에 여러 개의 값이 포함됨 → 다중 값 속성(Multivalued Attribute) 위반
  • 데이터 검색이 어려워지고 수정 및 삭제 시 비효율 발생

🔹 1NF 적용 방법: 다중 값 제거 및 테이블 정규화

✔️ 1NF 적용 후 변환된 테이블 (각 열에 원자적 값 저장)

주문ID 고객명 상품명 수량
101 홍길동 노트북 1
101 홍길동 스마트폰 2
102 이영희 태블릿 1
103 박철수 스마트폰 1
103 박철수 태블릿 1

📌 해결 방법:

  • 각 행이 하나의 값만 포함하도록 데이터를 분리
  • 한 개의 속성(컬럼)에는 한 개의 값만 저장 → 원자성(Atomicity) 충족
  • 반복된 값 제거 및 정규화 완료 → 1NF 만족

🔹 1NF 적용을 위한 SQL 예제

✔️ 비정규화된 테이블 생성 (1NF 위반)

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    ProductName VARCHAR(255),  -- 다중 값이 포함될 수 있음 ❌
    Quantity INT
);

✔️ 1NF를 만족하는 테이블로 변환

CREATE TABLE Orders (
    OrderID INT,
    CustomerName VARCHAR(100),
    ProductName VARCHAR(255),
    Quantity INT,
    PRIMARY KEY (OrderID, ProductName)  -- 복합 기본 키 설정
);

📌 변경된 테이블은 다중 값이 아닌 단일 값만을 가지도록 구조를 변경함


🔹 1NF의 장점과 단점

1NF의 장점

데이터 중복을 최소화하여 저장 공간 최적화
데이터 검색 및 조작이 쉬워짐
데이터 무결성과 일관성을 보장
향후 2NF, 3NF로 발전할 수 있는 구조 제공

1NF의 단점

테이블 행(Row) 수가 증가하여 관리 부담이 증가할 수 있음
조인을 사용해야 하므로 성능 저하 가능성 있음
애플리케이션에서 데이터를 처리할 때 추가적인 로직이 필요할 수 있음


🔹 1NF 실무 활용 사례

1. 전자상거래 시스템에서 상품 주문 데이터 정규화

📌 문제:

  • 하나의 주문(Order)에서 여러 개의 상품(Product)을 포함할 수 있음 → 다중 값 발생

📌 해결책:

  • 주문(Order)과 상품(Product)을 분리하여 1NF를 만족하는 구조로 변경

✔️ 정규화된 테이블 설계 (1NF 적용 후)

주문 테이블(Orders)
| 주문ID | 고객명 | 주문일자 |
|--------|--------|-----------|
| 101 | 홍길동 | 2024-02-20 |
| 102 | 이영희 | 2024-02-21 |

주문 상세 테이블(OrderDetails) (1NF 적용)
| 주문ID | 상품명 | 수량 |
|--------|------|----|
| 101 | 노트북 | 1 |
| 101 | 스마트폰 | 2 |
| 102 | 태블릿 | 1 |

📌 테이블을 분리하여 다중 값을 제거하고, 1NF를 만족하는 구조로 변경


📌 결론

제1정규형(1NF)은 데이터베이스에서 가장 기본적인 정규화 단계로, 모든 열이 원자적 값을 가지도록 설계하는 과정이다.
1NF를 적용하면 데이터 중복이 줄어들고, 데이터 무결성과 일관성이 유지된다.
다중 값 속성을 제거하고 테이블을 분리하여 정규화를 수행해야 한다.
전자상거래, 금융, 인사관리 시스템 등 다양한 데이터베이스 설계에서 1NF는 필수적으로 고려해야 한다.