모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

14강 / 전체 16강

데이터 모델링과 정규화

6분 읽기 조회 0

ER 다이어그램 표기법과 함수적 종속성을 이해하고 1NF~BCNF 정규화 단계를 예제로 완전히 수행하며 반정규화 전략도 정리합니다.

📐 ER 다이어그램 표기법

이 섹션에서는 데이터베이스 설계의 출발점인 ER(Entity-Relationship) 다이어그램의 표기법과 구성 요소를 살펴보겠습니다.

ER 다이어그램은 Peter Chen이 1976년 제안한 개념적 데이터 모델링 도구입니다. 현실 세계의 데이터를 개체, 속성, 관계로 표현합니다.

구성 요소표기 기호설명
개체(Entity)사각형(□)독립적으로 존재하는 데이터 단위 (학생, 과목, 교수)
속성(Attribute)타원(○)개체의 특성 (학번, 이름, 나이)
관계(Relationship)마름모(◇)개체 간의 연관성 (수강, 담당)
기본키 속성밑줄 타원개체를 유일하게 식별하는 속성
다중값 속성이중 타원여러 값을 가질 수 있는 속성 (전화번호 여러 개)
파생 속성점선 타원다른 속성으로부터 계산되는 속성 (나이←생년월일)

카디날리티(Cardinality)는 관계에 참여하는 개체의 수를 나타냅니다. 1:1(교수-연구실), 1:N(교수-학생, 한 교수가 여러 학생 지도), N:M(학생-과목, 여러 학생이 여러 과목 수강)으로 표현합니다.

참여도(Participation)는 개체가 관계에 반드시 참여해야 하는지를 나타냅니다. 전체 참여(이중선, 필수)와 부분 참여(단일선, 선택)로 구분됩니다.

기출 함정: "속성은 마름모로 표시한다" → 틀림. 속성은 타원, 관계는 마름모입니다. "1:N 관계에서 N쪽이 외래키를 가진다" → 맞음. 이것이 핵심 설계 원칙입니다.

🔗 함수적 종속성의 3가지 유형

이 섹션에서는 정규화의 이론적 기반인 함수적 종속성의 세 가지 유형을 살펴보겠습니다.

함수적 종속성(Functional Dependency)이란 속성 X의 값이 결정되면 속성 Y의 값이 유일하게 결정될 때, "Y는 X에 함수적으로 종속된다(X→Y)"고 합니다. 학번→이름, 학번→학과 관계가 그 예입니다.

종속성 유형정의예시
완전 함수 종속기본키 전체에 종속, 일부에는 종속 안 됨(학번, 과목코드)→성적 — 두 속성 모두 필요
부분 함수 종속기본키의 일부에 종속(학번, 과목코드)→학생이름 — 학번만으로 결정됨
이행 함수 종속X→Y, Y→Z일 때 X→Z 성립학번→학과코드, 학과코드→학과명 → 학번→학과명

암기법: "완부이 — 완전·부분·이행". 완전은 기본키 전체, 부분은 기본키 일부, 이행은 연쇄 종속입니다. 정규화는 이 세 가지 종속성 문제를 단계적으로 해결하는 과정입니다.

📊 정규화 1NF~BCNF 단계별 변환

이 섹션에서는 정규화의 각 단계를 구체적인 예제와 함께 살펴보겠습니다.

정규화는 데이터 중복과 이상현상(삽입 이상·삭제 이상·갱신 이상)을 제거하기 위해 릴레이션을 분해하는 과정입니다.

1NF (제1정규형): 모든 속성값이 원자값(Atomic Value)이어야 합니다. 즉, 하나의 셀에 여러 값이 있으면 안 됩니다. 예를 들어 전화번호 속성에 "010-1234, 02-5678"이 들어있으면 1NF 위반입니다. 해결: 행을 분리하거나 별도 테이블로 분리합니다.

2NF (제2정규형): 1NF를 만족하고, 모든 비기본키 속성이 기본키에 완전 함수 종속되어야 합니다. 부분 함수 종속을 제거합니다. 복합 기본키가 있을 때 기본키의 일부에만 종속되는 속성을 분리합니다.

3NF (제3정규형): 2NF를 만족하고, 기본키가 아닌 속성이 기본키에 직접 종속되어야 합니다. 이행 함수 종속을 제거합니다. 학번→학과코드→학과명 관계에서 학과명을 별도 테이블로 분리합니다.

BCNF (보이스-코드 정규형): 3NF를 만족하고, 모든 결정자가 후보키이어야 합니다. 3NF보다 엄격한 조건으로, 후보키가 아닌 속성이 결정자가 되는 경우를 제거합니다.

정규형제거 대상조건
1NF반복 그룹원자값
2NF부분 함수 종속완전 함수 종속
3NF이행 함수 종속직접 종속만
BCNF후보키 아닌 결정자모든 결정자=후보키

암기법: "원완이후(원숭이 후)" — 1NF=원자값, 2NF=완전함수종속, 3NF=이행종속제거, BCNF=후보키=결정자.

🔄 반정규화의 유형과 트레이드오프

이 섹션에서는 성능 향상을 위해 의도적으로 정규화를 되돌리는 반정규화의 유형과 고려사항을 살펴보겠습니다.

반정규화(Denormalization)는 정규화된 테이블을 합치거나 중복 데이터를 허용하여 조회 성능을 향상시키는 기법입니다. 정규화는 데이터 무결성을 보장하지만 JOIN이 많아지면 성능이 저하될 수 있습니다. 반정규화는 이 트레이드오프를 의도적으로 선택하는 것입니다.

반정규화 유형방법효과
테이블 병합자주 JOIN하는 두 테이블을 하나로 합침JOIN 비용 제거
테이블 분리사용 빈도에 따라 열을 수직 분리불필요한 열 로딩 감소
중복 열 추가자주 조회하는 값을 복사하여 저장JOIN 없이 바로 조회
중복 테이블 추가요약 테이블을 별도 생성집계 쿼리 성능 향상

반정규화의 단점: 데이터 중복으로 저장 공간 증가, 데이터 불일치 위험(갱신 시 모든 복사본 수정 필요), DML 성능 저하(INSERT·UPDATE·DELETE 시 여러 곳 수정). 따라서 반정규화는 충분한 성능 분석 후 신중하게 적용해야 합니다.

기출 함정: "반정규화는 데이터 무결성을 향상시킨다" → 틀림. 반정규화는 무결성을 희생하고 성능을 얻는 것입니다. "정규화를 완벽히 하면 반드시 성능이 좋아진다" → 틀림. 지나친 정규화는 JOIN 증가로 성능 저하를 유발합니다.

📌 14강 핵심 요약과 15강 예고

이 섹션에서는 14강 핵심 내용을 압축 정리합니다.

ER 다이어그램: 개체=사각형, 속성=타원, 관계=마름모. 카디날리티: 1:1·1:N·N:M. N쪽이 외래키 보유. 함수적 종속성: 완전(기본키 전체)·부분(기본키 일부)·이행(연쇄).

정규화: "원완이후" — 1NF=원자값, 2NF=완전함수종속(부분 제거), 3NF=이행종속 제거, BCNF=모든결정자=후보키. 반정규화: 테이블병합·분리·중복열추가·중복테이블추가 — 성능↑ 무결성↓ 트레이드오프.

다음 15강에서는 병행 제어·회복과 NoSQL — 2단계 로킹 프로토콜, UNDO/REDO 로그 기반 회복, CAP 정리, NoSQL 4분류를 완벽히 정리합니다.

관련 주제

  • ER 다이어그램 표기법
  • 카디널리티 참여도
  • 함수적 종속성
  • 1NF 2NF 3NF BCNF
  • 정규화 단계별 변환
  • 반정규화 유형
  • 자격증
  • 자격증 강의
  • 정보처리기사 필기 25강 — 핵심이론·기출 완전정복
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

정보처리기사 필기 25강 — 핵심이론·기출 완전정복

이 강의가 속한 시리즈는 총 16강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...