🔹 제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는 필수적으로 고려해야 한다.
'IT이야기 > 데이터베이스' 카테고리의 다른 글
제3정규형(3NF): 데이터 무결성을 보장하는 정규화 단계 (0) | 2025.02.28 |
---|---|
제2정규형(2NF): 데이터베이스 무결성을 강화하는 정규화 단계 (0) | 2025.02.28 |
정규화(Normalization): 데이터베이스의 중복을 최소화하고 무결성을 유지하는 핵심 기법 (0) | 2025.02.28 |
기본 키(Primary Key): 데이터의 무결성을 보장하는 핵심 키 (0) | 2025.02.28 |
외래 키(Foreign Key): 관계형 데이터베이스에서 데이터 무결성을 유지하는 핵심 키 (0) | 2025.02.28 |