728x90
데이터베이스 정규화
- 정규화의 목표
- 데이터를 구조적으로 정리하여 중복을 최소화
- 데이터의 무결성을 유지
- 정규화의 효과
- 데이터베이스 관리가 효율적으로 이루어짐
- 데이터의 일관성이 높아짐
- 장점
- 데이터 중복 최소화: 불필요한 중복을 제거하여 저장 공간을 절약하고 데이터의 일관성을 보장
- 데이터 무결성 보장: 데이터의 일관성을 유지해 오류 발생 가능성을 줄임
- 성능 향상: 데이터 검색 및 수정 작업의 성능을 최적화
- 단점
- 구조의 복잡성: 데이터베이스 구조가 복잡해질 수 있으며, 이를 이해하고 관리하는 데 어려움이 있음
- Join 연산의 증가: 데이터를 조회할 때 여러 테이블을 Join 연산 수행, 성능이 저하될 가능성 존재
정규화 단계
- 제1정규형 (1NF)
- 테이블의 모든 열이 원자값(더 이상 나눌 수 없는 값)을 가져야 한다는 규칙
- 하나의 열에 여러 값이 포함되지 않도록 해야 함
비정규형: 학생 | 취미 ---------|-------------- 홍길동 | 독서, 음악 김철수 | 영화감상 1NF: 학생 | 취미 ---------|--------- 홍길동 | 독서 홍길동 | 음악 김철수 | 영화감상 - 제2정규형 (2NF)
- 2NF는 1NF를 만족하면서, 기본 키의 부분 집합에 종속된 속성을 제거하는 규칙
- 각 비기본 속성이 기본 키 전체에 대해 완전히 종속되도록 함
1NF: 과목코드 | 학생ID | 성적 ---------|---------|------ CS101 | 12345 | A CS101 | 67890 | B MATH101 | 12345 | C 2NF: 과목코드 | 학생ID | 성적 ---------|---------|------ CS101 | 12345 | A CS101 | 67890 | B MATH101 | 12345 | C 과목코드 | 과목명 ---------|---------- CS101 | 컴퓨터과학 MATH101 | 수학 - 제3정규형 (3NF)
- 2NF를 만족하면서, 기본 키에 포함되지 않은 컬럼들이 다른 기본 키에 포함되지 않은 컬럼들에 종속되지 않도록 하는 규칙
- 기본 키가 아닌 컬럼이 다른 기본 키가 아닌 컬럼에 의해 결정되지 않도록 해야 함
2NF: 학생ID | 과목코드 | 성적 | 교수명 ---------|-----------|------|--------- 12345 | CS101 | A | 박교수 67890 | CS101 | B | 박교수 12345 | MATH101 | C | 김교수 3NF: 학생ID | 과목코드 | 성적 ---------|-----------|------ 12345 | CS101 | A 67890 | CS101 | B 12345 | MATH101 | C 과목코드 | 교수명 ---------|--------- CS101 | 박교수 MATH101 | 김교수 - 보이스-코드 정규형 (BCNF)
- BCNF는 3NF를 만족하면서, 테이블의 모든 결정자가 후보 키가 되도록 하는 규칙
- 모든 결정자는 후보 키의 역할을 해야 함
3NF: 학생ID | 과목코드 | 교수명 ---------|-----------|--------- 12345 | CS101 | 박교수 67890 | CS101 | 박교수 12345 | MATH101 | 김교수 BCNF: 학생ID | 과목코드 ---------|--------- 12345 | CS101 67890 | CS101 12345 | MATH101 과목코드 | 교수명 ---------|--------- CS101 | 박교수 MATH101 | 김교수
참고 자료
728x90