0. ERD란?
ERD, 즉 개체-관계 다이어그램은 데이터베이스를 설계할 때 사용되는 모델링 도구이다. 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것이다. ERD는 데이터베이스가 구축되기 전에 데이터 구조를 한눈에 파악하고 정의할 수 있게 해주는 역할을 한다.
| 구성 요소 | 의미 | 다이어그램 표현 | 데이터베이스 대응 |
| 개체 (Entity) | 관리해야 할 데이터의 대상 또는 사물 (개념) | 직사각형 | 테이블 (Table) |
| 속성 (Attribute) | 개체가 가지는 특성 또는 정보의 항목 | 타원 (주요 속성(키)은 밑줄 표시) | 열 (Column) |
| 관계 (Relationship) | 두 개 이상의 개체 간의 연관성 또는 연결 고리 | 마름모 | 외래 키 (Foreign Key) |
1. ERD의 중요성
ERD는 시스템의 요구 사항을 기반으로 작성되며, 이 ERD를 기반으로 데이터베이스를 구축한다.
- 설계의 명확성과 시각화 : 복잡한 데이터 구조와 관계를 시각적인 다이어그램으로 제공하여, 모든 이해관계자가 데이터 구조를 쉽게 파악하고 이해할 수 있도록 돕는다.
- 일관된 의사소통 기준 제공 : 모든 구성 요소가 ERD라는 단일화된 설계도를 공유함으로써, 데이터 정의 및 명명 규칙에 대한 혼란을 방지한다.
- 데이터 무결성 및 성능 최적화 기반 : 키 제약 조건과 관계의 카디널리티를 명확히 정의하여 논리적 무결성을 보장한다. 정규화 작업을 수행함으로써 데이터베이스의 저장 공간 효율과 성능을 최적화 할 수 있다.
- 유지보수 및 확장성 용이 : 시스템이 확장되거나 요구사항 변경 시, ERD를 수정함으로써 데이터 구조 변경의 영향 범위를 쉽게 예측하고 효율적으로 유지보수 계획을 세울 수 있다.
2. 정규화 과정
정규화는 관계형 데이터베이스 설계에서 중복성을 최소화하고, 데이터 무결성을 보장하기 위해 릴레이션을 분해하는 과정이다. 정규화는 일반적으로 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형을 적용한다. 정규화는 데이터 일관성을 높이지만, 과도하게 테이블을 분리하면 조인 연산이 증가하여 쿼리 성능이 저하될 수 있다. 따라서 데이터 중복 제거의 이점과 성능 저하의 균형을 맞추어 정규화를 적용하는 것이 중요하다.
1) 제1정규형
제1정규형은 정규화의 가장 기본적인 단계이다. 릴레이션의 모든 애트리뷰터 값이 원자값이어야 한다. 하나의 셀 안에 여러 값이 나열된 복합 속성이나 반복되는 다중 값 속성을 분리한다. 이를 통해 데이터 검색의 어려움을 해소할 수 있다.
2) 제2정규형
제1정규형을 만족해야 하며, 부분 함수 종속을 제거한 형태이다. 부분 함수 종속이란 기본 키가 아닌 모든 속성이 기본키에 완전 함수 종속인 것을 말한다. 부분 함수 종속이 발생하는 속성들을 별도의 테이블로 분리하고, 분리된 테이블의 기본키는 종속성을 유발한 기본키의 부분 집합으로 설정한다. 이를 통해 중복 데이터가 발생하는 이상 현상을 방지한다.
3) 제3정규형
제2정규형을 만족해야 하며, 이행적 함수 종속을 제거한 형태이다. 이행적 함수 종속이란 A -> B와 B -> C가 존재하면 논리적으로 A -> C가 성립하는데, 이때 C가 A에 이행적으로 함수 종속 되었다고 한다. 이행적 함수 종속이 발생하는 속성들을 별도의 테이블로 분리함으로써 기본 키가 아닌 속성의 변경이 전체 테이블의 데이터 중복을 초래하는 것을 방지할 수 있다.
4) 보이스/코드 정규형 (BCNF)
강한 제3정규형이라고도 불리며, 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 모든 결정자가 후보키인 형태이다. 결정자란 다른 속성을 유일하게 결정하는 속성을 말한다. X -> Y일 때, X는 결정자, Y는 종속자라고 한다.
'CS 스터디' 카테고리의 다른 글
| 4-4. 데이터베이스의 종류 - 관계형 데이터베이스, NoSQL 데이터베이스 (0) | 2025.11.27 |
|---|---|
| 4-3. 트랜잭션과 무결성 - 트랜잭션, 무결성 (0) | 2025.11.27 |
| 4-1. 데이터베이스의 기본 - 엔터티, 릴레이션, 속성, 도메인, 필드와 레코드, 관계, 키 (0) | 2025.11.27 |
| 3-4. CPU 스케줄링 알고리즘 - 비선점형 방식, 선점형 방식 (2) | 2025.11.08 |
| 3-3. 프로세스와 스레드 [02] - 스레드와 멀티스레딩, 공유 자원과 임계 영역, 교착 상태 (0) | 2025.11.08 |