정규형 이름과 정의만 외운 사람과, 함수 종속이라는 언어로 "왜 이 분해가 필요한가"를 짚고 역정규화 결정까지 균형 있게 설명하는 사람을 가른다. 후속 질문은 보통 3NF/BCNF 차이·역정규화 동기화·인덱스 설계로 이어진다.
정규화는 "같은 사실은 한 곳에만 두자"는 원칙을 함수 종속 기준으로 풀어낸 모델링 기법이다. 1NF에서 원자값을 강제하고, 2NF에서 부분 함수 종속을 분리하고, 3NF에서 이행 종속을 분리하고, BCNF에서 후보키가 아닌 결정자를 분리하는 식으로 같은 데이터를 두 군데서 관리하지 않게 만든다. 그 결과 갱신·삭제·삽입 이상이 줄고 무결성이 단단해지지만, 자연스럽게 조인이 늘고 조회 비용이 따라온다. 역정규화는 이걸 다 알고 나서 "이 쿼리는 너무 자주 돌고 너무 비싸다"는 판단으로 다시 중복을 들이는 결정이다.
삽입·갱신 이상으로 데이터가 어긋났던 경험이 있다면 그 사고를 정규형 어느 단계의 위반이었는지로 다시 설명해볼 수 있다
느린 쿼리를 역정규화 컬럼으로 잡은 경험이 있다면 그 컬럼 동기화를 어떻게 보장했는지로 자연스럽게 이어진다
리포트·대시보드를 위해 별도 집계 테이블을 둔 경험이 있다면 쓰기 모델과 읽기 모델을 분리하는 시각으로 정규화/역정규화 균형을 말할 수 있다
DBA·시니어와 함께 ERD를 그리며 후보키와 함수 종속을 정리해본 경험이 있다면 그 과정을 답변의 뼈대로 쓸 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.