반응형

데이터베이스 정규화와 이상, 그리고 정규화 단계별 예제

데이터베이스 설계의 핵심은 데이터를 효율적으로 관리하고, 무결성을 유지하며, 중복을 최소화하는 것입니다. 이를 위해 사용하는 방법이 **정규화(Normalization)**입니다. 이번 글에서는 정규화의 개념, 데이터 비효율로 인해 발생할 수 있는 이상(Anomalies), 그리고 **정규화의 단계별 과정(1NF ~ 6NF)**을 상세한 예시와 함께 다룹니다

 

 

1. 데이터베이스 정규화란?

정규화는 관계형 데이터베이스를 설계할 때 중복 데이터를 줄이고, 데이터 무결성을 유지하며, 효율적인 데이터 관리를 목표로 데이터를 구조화하는 과정입니다.

핵심 목표:

  • 데이터 중복 최소화
  • 데이터 무결성 유지
  • 이상(Anomalies) 방지

 

2. 데이터베이스 이상의 개념과 종류

데이터베이스 설계가 적절하지 않을 경우, 삽입 이상, 삭제 이상, 갱신 이상과 같은 문제(이상)가 발생할 수 있습니다.

2.1 삽입 이상 (Insertion Anomaly)

새로운 데이터를 삽입할 때 불필요한 정보를 함께 저장해야 하는 문제입니다.

학생ID 이름 학과명 학과장
1 홍길동 컴퓨터학과 김교수

문제점: 새로운 학과(예: 전기공학과)를 추가하려면, 학과장이 없는 상태에서도 '학생ID'와 '이름' 데이터를 함께 입력해야 합니다.

2.2 삭제 이상 (Deletion Anomaly)

데이터를 삭제할 때 의도치 않게 다른 중요한 정보도 삭제되는 문제입니다.

학생ID 이름 학과명 학과장
1 홍길동 컴퓨터학과 김교수

문제점: '홍길동'의 데이터를 삭제하면, 컴퓨터학과의 학과장 정보도 함께 사라집니다.

2.3 갱신 이상 (Update Anomaly)

중복된 데이터 중 일부만 수정되어 데이터 불일치가 발생하는 문제입니다.

학생ID 이름 학과명 학과장
1 홍길동 컴퓨터학과 김교수
2 김영희 컴퓨터학과 김교수

문제점: 학과장이 변경되었을 때(예: 이교수), 일부 데이터만 갱신하면 불일치가 발생합니다.

 

3. 정규화 단계별 설명과 예제

정규화는 데이터를 구조화하기 위한 여러 단계로 이루어져 있으며, 단계가 높아질수록 데이터 중복과 이상이 감소합니다.

3.1 제1정규형 (1NF)

조건: 모든 컬럼 값이 원자값(Atomic Value)을 가져야 합니다.

예시 변환 과정:

주문ID 고객명 연락처 상품명
1 홍길동 010-1234-5678 사과, 바나나
2 김영희 010-5678-1234 딸기, 포도, 배

변환 후:

주문ID 고객명 연락처 상품명
1 홍길동 010-1234-5678 사과
1 홍길동 010-1234-5678 바나나
2 김영희 010-5678-1234 딸기
2 김영희 010-5678-1234 포도
2 김영희 010-5678-1234

3.2 제2정규형 (2NF)

조건: 제1정규형을 만족하고, 부분 종속(Partial Dependency)을 제거해야 합니다.

예시 변환 과정:

변환 전:

주문ID 상품ID 상품명 고객명
1 101 사과 홍길동
1 102 바나나 홍길동
2 103 딸기 김영희
2 104 포도 김영희

변환 후:

주문ID 고객명
1 홍길동
2 김영희
상품ID 상품명
101 사과
102 바나나
103 딸기
104 포도

3.3 제3정규형 (3NF)

조건: 제2정규형을 만족하고, 이행적 종속(Transitive Dependency)이 없어야 합니다.

예시 변환 과정:

변환 전:

학생ID 이름 학과ID 학과명
1 홍길동 101 컴퓨터학과
2 김영희 102 기계공학과

변환 후:

학생ID 이름 학과ID
1 홍길동 101
2 김영희 102
학과ID 학과명
101 컴퓨터학과
102 기계공학과

3.4 BCNF (Boyce-Codd Normal Form)

조건: 제3정규형을 만족하며, 모든 결정자가 후보 키여야 합니다.

3.5 제4정규형 (4NF)

조건: 다치 종속(Multi-Valued Dependency) 제거

3.6 제5정규형 (5NF)

조건: 조인 종속(Join Dependency) 제거

3.7 제6정규형 (6NF)

조건: 무손실 분해(Lossless Decomposition)

데이터베이스 설계의 핵심은 효율성과 무결성을 극대화하는 과정입니다. 1NF ~ 3NF는 필수적이고, 고급 정규형(BCNF ~ 6NF)은 특수 요구사항에 적용됩니다.

 

 

반응형

'개발 부트캠프 > 데이터베이스' 카테고리의 다른 글

[DB] 스토어드 프로시저(Stored Procedure)  (0) 2024.12.02
[DB] 인덱스(Index)  (0) 2024.12.02
[DB] SQL 성능 확인  (0) 2024.12.02
[DB] ERD  (2) 2024.11.27
[DB] 데이터베이스 = 파일이다.  (0) 2024.11.27

+ Recent posts