데이터베이스 설계 기초 — E-R 모델과 정규화 개념 총정리
데이터베이스 설계란?
데이터베이스를 처음 만들 때 가장 중요한 건 어떻게 데이터를 체계적으로 정리할 것인가입니다.
잘못 설계하면 데이터 중복, 오류, 관리 어려움이 생깁니다.
그래서 설계단계에서 현실세계를 데이터로 바꾸는 과정을 꼼꼼하게 하는 게 핵심입니다.
이번 글에서는 E-R 모델 개념부터 정규화 과정까지 한 번에 정리해볼게요!
E-R 모델 (Entity-Relationship Model)
E-R 모델이란?
현실에 존재하는 정보를 개체(Entity)와 개체들 간의 관계(Relationship)로 표현한 모델
즉, 세상의 구조를 데이터로 바꾸는 설계도 같은 것!
E-R 도(E-R Diagram)
E-R 모델을 쉽게 표현하기 위해 만든 그림 형태의 표기법이 바로 E-R 도입니다.
E-R 모델의 데이터 추상화 기법
현실세계를 데이터로 모델링할 때 불필요한 세부사항은 감추고, 핵심만 표현하는 방법을 데이터 추상화라고 합니다.
대표적인 방법은 아래 두 가지입니다.
1️⃣ 일반화/특수화 (Generalization / Specialization)
-
일반화 : 서로 비슷한 개체 타입에서 공통 속성을 뽑아 상위 개체로 정리
-
특수화 : 상위 개체 타입을 기준으로 세부적인 개체로 나누는 것
예)
-
직원과 교수 → 상위개체 : 사람
-
사람 → 특수화 : 학생, 직원, 교수
2️⃣ 집성화 (Aggregation)
여러 개체 타입 간 관계성을 하나의 상위 개체로 묶어 표현하는 방법
예)
학생, 과목 → ‘수강’ 관계 → ‘수강정보’ 상위 개체로 표현 가능
관계를 마치 개체처럼 취급해서 데이터 설계를 더 유연하게 하는 방식
E-R 도 기반 관계 스키마 생성
현실세계를 E-R 모델로 표현했으면, 이제 그것을 관계형 데이터베이스의 테이블(관계스키마)로 바꿔야합니다.
방법은 아래와 같아요.
1️⃣ 기본 E-R 도 변환
-
각 개체(Entity) → 테이블
-
속성(Attribute) → 컬럼
-
관계(Relationship) → 외래키 활용
2️⃣ 일반화/특수화 변환
-
상위개체, 하위개체를 테이블로 나눌지
-
상속 형태로 표현할지 설계자가 선택
예)
사람 테이블 → 학생 테이블, 직원 테이블
3️⃣ 집성화 변환
-
관계를 테이블로 승격
-
관련 속성과 연결키 설정
예)
수강 테이블 (학생ID, 과목ID, 수강년도)
정규화 (Normalization)
설계가 끝났다고 바로 쓰면 안됩니다.
데이터의 중복과 이상현상(Anomaly)을 방지하려면 정규화 과정을 거쳐야 합니다.
정규화의 목적
-
중복 제거
-
데이터 일관성 유지
-
데이터 저장 효율화
함수적 종속성 (Functional Dependency)
정규화의 기준이 되는 개념으로
어떤 속성 A의 값이 결정되면, 속성 B의 값이 반드시 결정되는 관계
표기법
예)
학번 → 이름, 학과 (학번이 같으면 이름과 학과도 같다)
정규형 (Normal Form)
정규화 과정에서 테이블이 만족해야 할 기준
주요 정규형
정규형 | 조건 |
---|---|
제1정규형(1NF) | 모든 속성값이 원자값(Atomic value) |
제2정규형(2NF) | 1NF 만족 + 부분함수종속 제거 |
제3정규형(3NF) | 2NF 만족 + 이행함수종속 제거 |
※ 여기까지 정규화하면 웬만한 데이터 이상현상은 해결 가능!
중요 내용 정리
구분 | 내용 |
---|---|
E-R 모델 | 현실세계를 개체와 관계로 표현 |
E-R 도 | E-R 모델을 그림으로 표현 |
데이터 추상화 | 일반화/특수화, 집성화 |
관계스키마 생성 | E-R 모델을 테이블로 변환 |
정규화 | 데이터 중복, 이상현상 방지 |
함수적 종속성 | A 값 → B 값 결정 |
정규형 | 1NF, 2NF, 3NF |
객관식 3문제 + 정답과 해설
Q1. E-R 모델의 구성요소가 아닌 것은?
① 개체
② 관계
③ 속성
④ 프로세스
정답: ④
해설: E-R 모델은 개체, 관계, 속성으로 구성. 프로세스는 없음.
Q2. 일반화(Generalization)에 대한 설명으로 옳은 것은?
① 상위 개체를 세부 개체로 나눈다
② 서로 유사한 개체의 공통 속성을 추출하여 상위 개체로 만든다
③ 관계를 개체로 승격시킨다
④ 관계형 데이터베이스를 테이블로 변환한다
정답: ②
해설: 일반화는 비슷한 개체의 공통 속성을 상위개체로 묶는 것.
Q3. 제2정규형(2NF)을 만족하기 위한 조건으로 옳은 것은?
① 모든 속성값이 원자값
② 부분 함수적 종속 제거
③ 이행 함수적 종속 제거
④ 트랜잭션 동시성 제어
정답: ②
해설: 2NF는 1NF 만족 + 부분 함수 종속을 제거해야 함.