Databasemedium면접 빈도: high

ERD & Normalization

#entity-relationship-diagram#normalization#database-modeling#cardinality

📚먼저 읽어야 할 개념

이 문서를 이해하려면 아래 개념을 먼저 학습하는 것이 좋습니다.

ERD & Normalization

📝 ERD란?

Entity Relationship Diagram

엔티티와 속성들의 관계를 그림으로 나타낸 개체-관계 모델

데이터베이스 구조를 한눈에 파악

데이터베이스 구축 시 뼈대 역할


🎯 ERD 사용법

1. 데이터베이스 모델링

관계형 데이터베이스에서 주로 사용

엔티티와 속성을 테이블과 컬럼으로 변환

설계 문제점 파악 가능


2. 소프트웨어 엔지니어링

소프트웨어 계획 단계에서 사용

시스템 요소와 관계 식별

Data Flow Diagram 기초


🔧 ERD 구성 요소

엔티티 (Entity)

정의 가능한 사물 또는 개념

데이터베이스의 테이블

예: 학생, 교수, 상품


엔티티 속성 (Attribute)

개체가 가진 속성

데이터베이스의 테이블 필드(컬럼)

예: 학번, 이름, 주소, 전공


엔티티 도메인 (Domain)

속성의 값, 타입, 제약사항 등의 범위

데이터 타입 명시

데이터베이스가 지원하는 타입에 맞게 작성


📊 엔티티 분류

유형 엔티티

물리적인 형태

예: 고객, 상품, 거래처, 학생, 교수


무형 엔티티

물리적 형태 없고 개념적으로만 존재

예: 장바구니, 부서 조직


문서 엔티티

업무 절차상 사용되는 문서나 장부

예: 거래명세서, 주문서


이력 엔티티

반복적 행위나 사건을 일자별, 시간별로 저장

예: 입고 이력, 출고 이력, 구매 이력


코드 엔티티

각종 코드 관리

예: 국가코드, 분류 코드


🔗 ERD 관계 표시법

식별자 관계

실선 표현

강한 연결 관계

자식 주식별자 구성에 부모 주식별자 포함


비식별자 관계

점선 표현

약한 연결 관계

자식 일반 속성에 포함


📐 ERD Cardinality

One-to-One (1:1)

일대일 관계

예: 학생 - 신체정보


One-to-Many (1:N)

일대다 관계

예: 학생 - 취미


Many-to-Many (N:M)

다대다 관계

중간 엔티티 필요

1:N, N:1로 조정

예: 제품 - 제조업체


🔄 정규화 (Normalization)

데이터 중복 속성 제거

결정자에 의한 함수적 종속

입력/수정/삭제 이상 현상 제거

데이터 용량 최소화


함수적 종속성 (FD)

컬럼 A 값을 알면 컬럼 B 값을 알 수 있음

컬럼 B는 컬럼 A에 함수적 종속


결정자 (Determinant)

함수적 종속성에서 컬럼 A


📋 정규화 단계

제1정규형 (1NF)

모든 속성은 원자 값

다중 값 속성 분리

속성의 원자성 확보


제2정규형 (2NF)

1NF 만족

모든 Non-Key 컬럼은 PK 전체에 종속

부분 종속 속성 분리


제3정규형 (3NF)

2NF 만족

일반 속성 간 종속 관계 제거

이행 종속 속성 분리


BCNF (Boyce-Codd Normal Form)

함수 종속

결정자 안에 함수 종속을 가진 주식별자 분리


제4정규형 (4NF)

다가 종속 속성 분리


제5정규형 (5NF)

결합 종속일 경우 N개로 분리


✅ 정규화 장점

High Cohesion & Loose Coupling

유연성 극대화

입력/수정/삭제 성능 향상

조회 성능은 조건에 따라 향상 또는 저하


❓ 면접 질문 예시

Q1. ERD란 무엇인가요?

답변: ERD(Entity Relationship Diagram)는 요구 분석 사항에서 얻은 엔티티와 속성들의 관계를 그림으로 나타낸 개체-관계 모델입니다. 테이블과의 관계를 설명하는 다이어그램이며, 데이터베이스의 구조를 한눈에 파악할 수 있고 데이터베이스 구축 시 뼈대 역할을 합니다.

Q2. 엔티티의 종류는?

답변: 엔티티는 유형 엔티티(고객, 상품 등 물리적 형태), 무형 엔티티(장바구니, 부서 조직 등 개념적), 문서 엔티티(거래명세서, 주문서 등), 이력 엔티티(입고/출고/구매 이력 등), 코드 엔티티(국가코드, 분류 코드 등)로 분류됩니다.

Q3. 식별자 관계와 비식별자 관계의 차이는?

답변: 식별자 관계는 실선으로 표현하며 강한 연결 관계로, 자식 주식별자 구성에 부모 주식별자가 포함됩니다. 비식별자 관계는 점선으로 표현하며 약한 연결 관계로, 자식 일반 속성에 부모 주식별자가 포함됩니다.

Q4. 정규화란 무엇이고 왜 필요한가요?

답변: 정규화는 데이터 중복 속성을 제거하고 결정자에 의한 함수적 종속을 통해 입력/수정/삭제 이상 현상을 제거하는 것입니다. 정규화를 통해 High Cohesion & Loose Coupling 원칙에 충실해지며 유연성이 극대화되고 입력/수정/삭제 성능이 향상됩니다.

Q5. 제1, 2, 3정규형의 차이는?

답변: 제1정규형은 모든 속성이 원자 값을 가지도록 다중 값 속성을 분리합니다. 제2정규형은 1NF를 만족하고 모든 Non-Key 컬럼이 PK 전체에 종속되도록 부분 종속 속성을 분리합니다. 제3정규형은 2NF를 만족하고 일반 속성 간 종속 관계를 제거하여 이행 종속 속성을 분리합니다.


📚 원본 참고 자료

출처: 2023-CS-Study

추가 학습 자료

🔗관련 문서

이 개념과 함께 학습하면 좋은 문서들입니다.

⬅️이 문서를 참조하는 문서

이 개념을 기반으로 하는 고급 주제들입니다.