![](https://blog.kakaocdn.net/dn/cfPfPN/btsL7gCSgC5/p4Yw6DpBcwQ89z7HdAfjmk/img.png)
1. 데이터 표준화 명세서 예시
(명명 규칙)
- 테이블 명: 복수형 사용 (students, subjects, professors, enrollments)
- 컬럼 명: 소문자 및 스네이크 케이스 사용 (student_id, course_code, professor_id 등)
- 데이터 타입: 일관된 데이터 타입 사용 (VARCHAR, INT, FLOAT 등)
- 키 명: id 사용
(표준 컬럼 정의)
컬럼명 | 데이터 타입 | 설명 |
student_id | INT | 학번 (기본키) |
student_name | VARCHAR | 학생 이름 |
major | VARCHAR | 전공 |
subject_id | VARCHAR | 과목 코드 (기본키) |
subject_name | VARCHAR | 과목 이름 |
grade | FLOAT | 학점 |
professor_id | VARCHAR | 교수 ID (기본키) |
professor_name | VARCHAR | 교수 이름 |
데이터베이스 정규화란?
RDB에서 중복 데이터를 최소화하고 논리적 일관성을 유지하기 위해 테이블의 구조를 체계적으로 분해하는 과정
1정규형(1NF)
- 테이블에 중복된 컬럼이나 복합 속성을 허용하지 않는 형태
- 모든 속성이 원자값(Atomic Value)을 가져야 한다
2정규형(2NF)
- 1정규형을 만족하고, 부분 함수 종속(Partial Dependency)을 제거한 형태
- 즉, 기본 키의 일부분에만 종속되는 컬럼이 없도록 분해한다
3정규형(3NF)
- 2정규형을 만족하고, 이행적 함수 종속(Transitive Dependency)을 제거한 형태
- 기본 키가 아닌 컬럼들이 다른 기본 키가 아닌 컬럼에 종속되지 않도록 한다
BCNF(Boyce-Codd Normal Form)
- 3정규형보다 더 엄격한 형태
- 모든 결정자(Determinant)가 후보 키가 되도록 하여, 이상 현상을 최소화한다
4정규형(4NF)
- 다중값 종속(다치 종속)이 존재하지 않도록 설계한 형태
- 하나의 테이블이 서로 독립적인 다중 관계를 동시에 관리하지 않도록 분리한다
2. 데이터베이스 정규화 예시 - 5가지 중 2가지 적용
① 제2 정규형 (2NF) : 부분 종속성 제거
학생 정보 (학번, 학생이름, 전공)을 별도 테이블로 분리
![](https://blog.kakaocdn.net/dn/23RKg/btsL7O7aHtn/GJWGguKXVD2ykjQDhloFtK/img.png)
과목 정보 (과목코드, 과목명, 학점)을 별도 테이블로 분리
![](https://blog.kakaocdn.net/dn/bn6T9u/btsL8jZViD8/2cmkhj1342rbKNdGL9UZnk/img.png)
② 제3 정규형 (3NF) : 이행적 종속성 제거
교수 정보를 별도 테이블로 분리하여 과목-교수 관계를 정리
![](https://blog.kakaocdn.net/dn/CeRY9/btsL6TH7j1R/WHCFt0uI1GeMo0kjMVBYF1/img.png)
(ERD)
![](https://blog.kakaocdn.net/dn/bOD0I2/btsL8J48NZS/2Q5aALUkjPvRZvE0y4RVKk/img.png)
'DBMS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 트랜잭션 개념과 관리 방안 수립 (0) | 2025.02.06 |
---|---|
[데이터베이스] 대표적인 데이터 모델링 기법 4가지 (0) | 2025.02.06 |
[데이터베이스] 빅데이터(Big Data) (2) | 2024.07.03 |
[데이터베이스] ep5) 뷰(view) (0) | 2024.07.01 |
[데이터베이스] ep4-3) SQL: DCL (1) | 2024.06.30 |