정규화
- 데이터 베이스의 설계를 재구성하는 테크닉으로, 이를 역으로 진행하면 반정규화라함.
- 불필요한 데이터를 제거하거나, 삽입 갱신 삭제 시에 발생하는 이상현상을 방지하고, 논리적으로 데이터를 저장할 수 있도록하는 기술
=> OLTP (Online Transaction Processing)와 같은 온라인 거래 시스템의 데이터베이스는 CRUD가 많이 일어난다.→ 개별로 INDEX를 모두 생성할 경우, CRUD 속도가 느려지므로 정규화 수행.
반정규화
- 성능 저하가 예상될 때 주로 사용 (원거리에 있는 DB 테이블 복사 등)
- 읽기 성능을 최적화하도록 설계하는 기법
- 데이터를 중복시키거나, 그룹핑.
=> OLAP (Online Analytical Processing) 효과적인 분석과 조회를 위한 분석 리포트.
→ 읽기 속도 성능 향상을 위해, "반정규화" 사용
1차 정규화
- 테이블의 컬럼이 원자값 (Atomic Value) 하나의 값을 갖도록 테이블을 분해하는 것
2차 정규화
- 1차 정규화를 진행한 테이블에 대해서 종속을 만족하도록 테이블을 분해하는 것
- 테이블이 복합키 일 경우에 포함 속성이 복합키에 완전한 함수적 종속을 만족하지 않고 부분함수 종속 관계일 떄 이를 완전 함수 종속으로 변화
3차 정규화
- 이행적 종속을 없애도록 테이블을 분해함
- 이행적 종속이란 가->나 , 나-> 다 :: 가->다 가 성립되는 것을 의미함
- 기본키 이외에 다른 칼럼이 그 외의 다른 컬럼을 결정할 수 없다는 것을 의미
BCNF(Boyce and Codd Normal Form) : 결정자 중 후보키가 아닌 것들은 제거
- 3차 정규형을 만족하면서 모든 결정자가 후보키 집합에 속한 정규형
'Done > DataBase' 카테고리의 다른 글
[SQLD] 31. SQL 문의 종류와 내용 (1) | 2023.11.06 |
---|