※ E-R 다이어그램(E-R Diagram) 개념과 역할
E-R 다이어그램(Entity-Relationship Diagram, ERD)란 데이터베이스를 설계할 때
현실 세계의 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)로 표현한 모델입니다.
📌 ERD의 주요 역할
현실 세계의 정보를 데이터베이스 구조로 시각화
개발자, 기획자, DBA 간의 공통 언어 역할
데이터의 관계를 명확히 정의하여 정규화를 돕는 도구
→ ERD는 단순한 그림이 아닌,
데이터베이스 설계의 청사진(Blue Print) 역할을 합니다.
※ 개체(Entity), 속성(Attribute), 관계(Relationship)
📁 1) 개체 (Entity)
- 현실 세계에서 데이터로 관리해야 하는 대상입니다.
- 테이블(Table)로 변환되는 대상이며, 명사(Noun) 형태로 표현됩니다.
예시: - 학생(Student), 과목(Subject), 주문(Order), 상품(Product)
-- 개체 예시 (학생)
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
major VARCHAR(50)
);
📑 2) 속성 (Attribute)
- 개체가 가지는 세부 정보(컬럼)를 의미합니다.
- 예: 학생 개체 → 학번, 이름, 전공, 입학일
속성의 종류:
- 기본 속성: 이름, 나이 등 일반적인 데이터
- 키 속성: 기본키 역할 (예: student_id)
- 파생 속성: 다른 속성으로부터 계산 가능 (예: 나이 = 오늘날짜 - 생년월일)
🔗 3) 관계 (Relationship)
- 두 개체 간의 연관성(Verb)을 의미하며, 외래키(FK)로 구현됩니다.
예시: - 학생(Student) – 수강(Enroll) – 과목(Subject)
-- 관계 표현: 수강 테이블
CREATE TABLE Enroll (
student_id INT,
subject_id INT,
grade CHAR(2),
PRIMARY KEY (student_id, subject_id),
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (subject_id) REFERENCES Subject(subject_id)
);
✅ 개체(Entity) = 테이블
✅ 속성(Attribute) = 컬럼
✅ 관계(Relationship) = 외래키(Foreign Key)
※ 관계의 종류 (1:1, 1:N, N:M)
✅ 1:N (일대다) 관계 예시
CREATE TABLE Professor (
prof_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE Subject (
subject_id INT PRIMARY KEY,
title VARCHAR(100),
prof_id INT,
FOREIGN KEY (prof_id) REFERENCES Professor(prof_id)
);
→ 한 명의 교수가 여러 과목을 담당할 수 있습니다.
✅ N:M (다대다) 관계 예시 (중간 테이블 생성 필요)
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE Subject (
subject_id INT PRIMARY KEY,
title VARCHAR(100)
);
-- 중간 테이블 (수강)
CREATE TABLE Enrollment (
student_id INT,
subject_id INT,
PRIMARY KEY (student_id, subject_id),
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (subject_id) REFERENCES Subject(subject_id)
);
→ 학생과 과목은 다대다 관계이므로 중간 테이블을 통해 관계를 관리합니다.
※ 정규화된 테이블 구조 설계
정규화(Normalization)란 데이터의 중복을 최소화하고, 무결성을 유지하기 위해 테이블을 구조화하는 과정입니다.
→ 정규화를 통해 데이터 중복이 제거되고, 수정/삭제 이상(Anomaly)을 방지할 수 있습니다.
※ 모델링 실무 팁
📌 실무에서 자주 활용되는 ERD 설계 팁:
1. 명확한 개체 정의: 시스템에서 관리해야 할 “명사”를 우선 식별합니다.
2. 관계 먼저 설계: 개체 간 관계를 먼저 정의하면 구조가 훨씬 명확해집니다.
3. 다대다 관계는 반드시 중간 테이블 생성
4. 속성의 역할 명확히 구분: 기본키 / 외래키 / 일반 속성을 구분해 설계합니다.
5. 정규화 후 성능 고려하여 역정규화(De-normalization)도 검토
6. ERD → 테이블 설계 문서화 → 실제 DDL 생성 과정으로 순서화하면 유지보수가 쉬워집니다.
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
major VARCHAR(50)
);
CREATE TABLE Subject (
subject_id INT PRIMARY KEY,
title VARCHAR(100),
credit INT
);
CREATE TABLE Enrollment (
student_id INT,
subject_id INT,
PRIMARY KEY (student_id, subject_id),
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (subject_id) REFERENCES Subject(subject_id)
);
'2025 현대오토에버 모빌리티 SW 스쿨(클라우드 2기) > 데이터베이스' 카테고리의 다른 글
| [Database] Python과 DB 연동 (2) – MariaDB (0) | 2025.10.07 |
|---|---|
| [Database] Python과 DB 연동 (1) – MongoDB (0) | 2025.10.07 |
| [Database] MongoDB 심화 활용 (0) | 2025.10.07 |
| [Database] NoSQL과 MongoDB 기본 (0) | 2025.10.07 |
| [Database] DML과 트랜잭션(TCL) (0) | 2025.10.07 |