이상 현상 (Anomaly)
- 테이블에서 일부 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 문제
1) 삽입 이상
· 데이터를 삽입할 때, 의도와는 상관 없이 원하지 않는 값들이 함께 삽입됨
· 데이터가 부족해서 null 값이나 불필요한 값을 삽입해야 함
2) 삭제 이상
· 데이터를 삭제할 때, 원하지 않는 값들도 함께 연쇄적으로 삭제됨
3) 갱신 이상
· 데이터를 갱신할 때, 일부 데이터만 갱신되어 모순이 발생함
정규화 (Normalization)
- 데이터 중복성을 제거해서 이상 현상을 방지하고, 데이터의 일관성을 유지하기 위해 무손실 분해하는 과정
- 무손실 분해
: 분해로 인한 정보 손실이 발생하지 않아야 함
→ JOIN을 사용하면 분해 전의 테이블로 복원 가능해야 함
제 1정규화 (1NF)
- 어떤 테이블에 속한 모든 컬럼이 분해되지 않는 원자값만으로 구성됨 (다중 값 속성 제거)
- 모든 속성에 반복되는 그룹이 나타나지 않음
- 기본키를 사용하며 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함
제 2정규화 (2NF)
- 테이블의 모든 컬럼이 기본키에 대해 완전 함수 종속을 만족함 (부분 함수 종속 제거)
# 함수 종속
1) 완전 함수 종속
: 컬럼집합 Y가 컬럼집합 X에 함수 종속되어 있지만, 컬럼집합 X의 일부분에는 종속되지 않음
ex) {고객아이디, 이벤트번호} → {당첨여부}
2) 부분 함수 종속
: 컬럼집합 Y가 컬럼집합 X의 전체가 아닌 일부분에도 종속됨
ex) {고객아이디} → {고객이름}
제 3정규화 (3NF)
- 기본키가 아닌 모든 컬럼이 기본키에 이행적 함수 종속되지 않음
# 이행적 함수 종속
- 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립됨
→ Z는 X에 이행적으로 함수 종속됨
역정규화 (반정규화)
- 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복/통합/분리를 수행하는 과정
- 데이터 중복을 일부 허용함으로써, JOIN 쿼리를 줄여 실행 속도를 향상시킴
'SQL' 카테고리의 다른 글
[SQL] 날짜 포맷팅 함수 (DATE_FORMAT) (0) | 2023.08.04 |
---|---|
[SQL] DBMS별 문법 차이 (0) | 2023.08.03 |
[SQL] 커넥션 풀 (Connection Pool) ★ (0) | 2023.05.10 |
[SQL] COMMENT (0) | 2023.04.21 |
[SQL] 쿼리 조건문 (ifnull, nullif, CASE) (4) | 2023.04.20 |