데이터베이스 정규화와 SQL 판단법
함수 종속으로 정규형을 판별하고 SQL 실행 결과를 빠르게 추적하는 방법을 다룹니다.
관련 시험 정보처리기사SQLD9급 컴퓨터일반
정규화 순서
제1정규형은 원자값, 제2정규형은 부분 함수 종속 제거, 제3정규형은 이행 함수 종속 제거, BCNF는 모든 결정자가 후보키여야 한다는 기준입니다.
- 복합키가 아니면 부분 함수 종속은 성립하지 않는다.
- 정규화는 이상 현상을 줄이지만 조인 비용이 늘 수 있다.
- 반정규화는 성능 목적의 의도적 중복이다.
JOIN과 NULL
INNER JOIN은 양쪽에 일치하는 행만, OUTER JOIN은 기준 방향의 불일치 행도 보존합니다. NULL은 0이나 빈 문자열이 아니며 일반 비교 연산자 대신 IS NULL을 사용합니다.
- WHERE 조건이 OUTER JOIN 결과를 다시 제거할 수 있다.
- COUNT(*)는 행을, COUNT(열)은 NULL을 제외한 값을 센다.
- COALESCE는 첫 번째 NULL이 아닌 값을 반환한다.
GROUP BY와 윈도우 함수
GROUP BY는 여러 행을 그룹 단위로 축약하지만 윈도우 함수는 원래 행을 유지한 채 순위·누적값을 계산합니다. WHERE는 그룹화 전, HAVING은 그룹화 후 조건입니다.
- RANK는 동률 다음 순위를 건너뛴다.
- ROW_NUMBER는 동률에도 고유 번호를 준다.
- 집계함수와 일반 열을 함께 조회할 때 그룹 기준을 확인한다.
자주 틀리는 판단
- NULL = NULL이 참이라고 판단
- HAVING을 항상 WHERE보다 먼저 적용
- 제2정규형과 제3정규형의 종속 제거 대상을 혼동
개념을 확인했다면 실제 문제에서 판단 기준을 적용해보세요.
분야별 문제 풀기