99클럽 TIL
99클럽 코테 스터디 16일차 TIL DB DB 정규화
차가리
2024. 6. 4. 21:14
728x90
- DB
- Index
Index 작동 원리- Index 종류
B-Tree 인덱스Hash IndexesBitmap IndexGIST(Generalized Search Tree)R-TreeFull Text IndexSpatial IndexTrie(Prefix Tree) IndexCovering Index
- Index
영속성트랜잭션- ORM
- ACID
N+1 문제- DB 정규화
- Data Replication
- sharding 전략
- CAP 이론
란?
- 관계형 데이터베이스의 설계 과정에서 데이터를 구조화하여 데이터 중복을 최소화 하고 데이터 무결성을 보장하는 방법
- DB 의 성능을 향상 시키고, 데이터 삽입, 삭제 및 갱신 시 발생할 수 있는 이상현상을 방지함.
목표
- 데이터 중복 최소화
- 동일한 정보를 여러 곳에 저장하지 않음으로써 저장 공간을 절약하고 데이터의 일관성을 유지함.
- 데이터 무결성 보장
- 데이터의 일관성을 유지하고 데이터 갱신 시 불일치가 발생하지 않도록 함.
- 갱신 이상 방지
- 삽입, 삭제, 갱신 작업에서 발생할 수 있는 이상 현상을 방지함.
정규화 단계
- 정규화는 여러 단계로 이루어지며, 각 단계는 특정한 조건을 만족시켜야함. 일반적으로 1NF 에서 시작하여 2NF,3NF,BCNF(Boyce-Codd Normal Form) 등의 단계로 진행됨.
- 제 1 정규형(1NF)
- 1NF 는 모든 컬럼의 값이 원자값(Atomic Value) 를 가져야 하며, 반복되는 그룹이 없어야 함.
- 조건
- 각 컬럼이 원자값을 가져야한다.
- 테이블 내 각 행이 고유해야한다.
예시
- 반복되는 그룹이 있는 테이블
학생ID | 이름 | 수강 과목
-------|--------|-----------------
1 | 홍길동 | 수학, 영어
2 | 이순신 | 과학
- 1NF 로 변환한 테이블
학생ID | 이름 | 수강 과목
-------|--------|---------
1 | 홍길동 | 수학
1 | 홍길동 | 영어
2 | 이순신 | 과학
- 제 2 정규형
- 2NF 는 1NF 를 만족하며, 기본 키의 모든 부분집합에 대해 함수적 종속이 없는 상태를 의미함. 즉, 부분 함수 종속성을 제거해야한다.
- 조건
- 1NF 를 만족해야한다.
- 기본 키가 아닌 모든 컬럼이 기본 키에 대해 완전 함수 종속적이여야 한다.
예시
- 부분 함수 종속성이 있는 테이블
학생ID | 과목ID | 성적 | 학생 이름
-------|--------|------|---------
1 | 101 | A | 홍길동
1 | 102 | B | 홍길동
2 | 101 | B | 이순신
- 2NF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1 | 홍길동
2 | 이순신
성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1 | 101 | A
1 | 102 | B
2 | 101 | B
- 제 3 정규형
- 3NF 는 2NF 를 만족하며, 기본 키가 아닌 모든 컬럼이 기본 키에 대해 이행적 종속성을 갖지 않는 상태를 의미
- 조건
- 2NF 를 만족해야 한다.
- 기본 키가 아닌 모든 컬럼이 기본 키에 대해 이행적 종속성을 갖지 않아야 한다.
예시
- 이행적 종속성이 있는 테이블
학생ID | 과목ID | 성적 | 과목 이름 | 교수 이름
-------|--------|------|----------|---------
1 | 101 | A | 수학 | 김교수
1 | 102 | B | 영어 | 이교수
2 | 101 | B | 수학 | 김교수
- 3NF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1 | 홍길동
2 | 이순신
성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1 | 101 | A
1 | 102 | B
2 | 101 | B
과목 테이블:
과목ID | 과목 이름 | 교수 이름
-------|----------|---------
101 | 수학 | 김교수
102 | 영어 | 이교수
- BCNF(Boyce and Codd Normal Form)
- 제 3정규형을 조금 더 강화시킨 개념
- 3NF 를 만족하며, 모든 결정자가 후보 키가 되도록 하는 조건을 추가로 가짐. 즉, 기본 키가 아닌 결정자를 제거함.
- 조건
- 3NF 를 만족해야함.
- 모든 결정자가 후보 키여야 한다.
예시
- 3NF 를 만족하지만 BCNF 를 만족하지 않는 테이블
학생ID | 과목ID | 교수 이름
-------|--------|---------
1 | 101 | 김교수
1 | 102 | 이교수
2 | 101 | 김교수
- BCNF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1 | 홍길동
2 | 이순신
교수 테이블:
과목ID | 교수 이름
-------|---------
101 | 김교수
102 | 이교수
성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1 | 101 | A
1 | 102 | B
2 | 101 | B
728x90