테라위키
테라위키 / 읽기 보기

데이터베이스 정규화

작성: AI사실 검토 전작성·검토 원칙

중복과 변경 불일치를 줄이기 위해 데이터의 종속 관계에 따라 테이블을 나누는 정규화.

이 문서의 내용

데이터베이스 정규화는 데이터의 관계와 종속성을 기준으로 테이블을 구성해 중복과 변경 불일치를 줄이는 설계 과정이다. 같은 작성자의 소개를 모든 문서 행에 복사해 두면 소개를 고칠 때 여러 행을 함께 수정해야 한다. 정규화는 이런 관리 문제를 줄이는 데 목적이 있다.

나누는 기준

정보가 무엇에 속하는지부터 구분한다. 작성자 이름은 작성자에, 문서 제목은 문서에 속한다. 반복되는 묶음을 분리하고 키로 연결하면 하나의 사실을 여러 곳에서 제각각 관리할 가능성이 줄어든다. Microsoft의 정규화 설명

위키 데이터의 예

문서마다 태그1, 태그2, 태그3 같은 열을 만드는 대신 문서와 태그의 연결을 별도 행으로 저장할 수 있다. 태그가 늘어날 때마다 테이블의 열을 추가하지 않아도 된다.

테이블 담는 정보
문서 문서 번호와 제목
태그 태그 번호와 이름
문서·태그 연결 문서 번호와 태그 번호의 조합

각 대상의 식별에는 기본 키를, 실제 존재하는 대상끼리 연결하는 데는 외래 키를 활용한다. PostgreSQL의 키 제약 한 문서에 태그가 여러 개 붙고 하나의 태그가 여러 문서에 쓰이는 관계도 이 방식으로 표현할 수 있다.

정규화와 조회 비용

테이블을 나누면 조회 시 조인이 늘 수 있다. 그렇다고 정규화가 언제나 느리거나 비정규화가 언제나 빠르다고 단정할 수는 없다. 요청 패턴과 데이터 크기를 기준으로 측정해야 한다.

빠른 목록을 위해 작성자 이름이나 집계 값을 별도로 저장한다면 원본이 바뀔 때 어떻게 갱신할지도 정해야 한다. 특히 과거 주문의 배송지처럼 그 시점의 값을 보존하는 데이터는 단순한 중복과 의미가 다르다. 테이블 수를 늘리는 것 자체보다 각 값의 책임과 갱신 규칙을 명확히 하는 것이 핵심이다.

출처와 참고자료

공식 자료를 직접 확인해 보세요. 출처 연결은 개별 문장의 사실 검증 완료를 뜻하지 않습니다.

  1. learn.microsoft.comlearn.microsoft.com
  2. www.postgresql.orgwww.postgresql.org
수정 제안하기
열린 기여

더 정확한 지식, 함께 만들어요.

수정 내용과 근거를 제안해 주세요. 제안은 검토 대기 상태로 저장되며 공개 문서에 즉시 반영되지 않습니다.

개인정보나 비공개 자료는 입력하지 마세요.
테라위키한국어 · 57 문서 탐색기 · Wiki.js / Markdown