ERD(Entity Relationship Diagram): 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할. 릴레이션 간의 관계를 정의한 것
정규화란 릴레이션 간 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.
데이터베이스 이상현상
: 테이블 설계가 비효율적이거나 정규화가 제대로 이루어지지 않았을 때 발생하는 데이터의 불일치나 예상치 못한 동작이다.
대표적인 이상현상 - 삽입 이상, 갱신 이상, 삭제 이상
정규화 과정
: 정규형의 원칙이란 같은 의미를 표현하는 릴레이션이지만
좀 더 좋은 구조로 만들어야하고,
자료의 중복성은 감소해야 하고,
독립적인 관계는 별개의 릴레이션으로 표현해야 하고,
각각의 릴레이션은 독립적인 표현이 가능해야하는 것이다.
: 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
: 릴레이션이 제1정규형이며 부분 함수 종속성을 제거한 형태
부분 함수의 종속성제거
: 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것
릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 하고, 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 한다.
: 릴레이션이 제2정규형이며 기본키가 아닌 모든 속성이 이행적 함수 종속(transitive FD)을만족하지 않는 상태

이행적 함수 종속
: A → B와 B → C가 존재하면 논리적으로 A → C가 성립하는데,
이때 집합 C가 집합 A에 이행적으로 함수 종속 되었다고 한다.
: 릴레이션이 제3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태

결정자
: 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소
'X → Y'일 떄 X는 결정자, Y는 종속자
정규화 과정을 거쳐 테이블을 나누어도 성능이 좋아질수도 나빠질수도 있다.
테이블을 나누게 되면 조인을 해야하는 경우도 발생해 오히려 느려질 수도 있기 때문에 서비스에 따라 정규화와 비정규화 과정을 진행해야 한다.