잘못된 설계로 테이블이 생성되면
데이터 조작 작업시 이상현상이 발생할 수 있다.
이상현상은 데이터의 일관성을 손상시켜 데이터의 무결성을 깨뜨린다.
이 문제를 해결하려면, 속성 간의 함수 종속성을 파악해여 테이블을 규칙에 의해서 분해하는데,
이 과정을 정규화라고 한다.
정규화란 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복하는 프로세스
(중복성과 종속성을 제거(최소화) 데이터의베이스의 효율성과 유지보수의 구조를 개선하고
데이터베이스의 성능 향승을 최적화 하는데 의미가 있다.)
-> 자소서에 들어가면 나이스


함수 종속성을 나타내는 표기법
속성 : 직사각형
속성 간의 함수 종속성 : 화살표
복합 속성 : 직사각형으로 묶어서 그린다.

종속성 관계를 따르고 정규화를 통해 설계 했다 -> 자소서 ++
복합키인 경우 하나로만 결정되는 것 -> 부분함수적 종속성
완전히 두개 키에 의해서 결정되는 것 -> 완전함수적 종속성
세 개 이상의 속성이 연결되어서 전이되는 과정 -> 이행함수적 종속성
-- 주요 정규화 형식 제1규형 ~ 제3정규형
제 1 정규형(1NF)
테이블의 각 속성 값은 반복그룹(Repeating Group)이 없는 원자값으로만 구성되도록
중복되는 속성이나 속성그룹을 별도의 테이블로 분리한다.
제 2 정규형(2NF)
1NF를 만족하면서 부분 함수적 종속성을 제거해야 한다.
기본키 속성에 완전 함수적 종속성을 가지도록 테이블을 분할하거나
기본키를 변경하거나 속성간의 종속성을 조정
제 3 정규형(3NF)
2NF를 만족하면서 이행 함수적 종속성을 제거해야 한다.
테이블의 모든 비(Non-key)속성은 기본키에만 종속되어야 하고,
비-키 속성 간에는 종속성이 존재하지 않아야 한다.
비-키 속성 간에 종속성이 존재한다면 테이블 분할해야 한다.
-- 보이스코드정규형(Boyce-codd NF, BCNF)
제 4 정규형(4NF), 제 5 정규형(5NF)
-- 반정규화(Denomalization)
중복 데이터를 하나 이상의 테이블에 추가하는 데이터베이스 최적화 기술 이를 통해 관계형 데이터베이스에서 비용이 많이 드는
조인의 수를 줄일 수 있다. 반정규화는 정규화를 되돌린다거나 정규화되지 않음을 의미하는 것이 아니라, 정규화 후에 적용되는 최적화 기법
장점 : 더 적은 수의 테이블을 사용하면서 조인 개수를 줄일 수 있고,
이로 인해 검색 쿼리가 간단해지고 빠른 일기 작없의 수행으로 검색성능이 업!
단점 : 중복저장으로 더 많은 스토리지가 요구된다. 또한 데이터 불일치가 발생할 수 있으며, 쓰기 작업에 추가적인 비용이 발생할 수 있다.