ER 모델에서 관계형 스키마로 변환하는 절차 완전 정복
정보처리기사나 실무에서 데이터베이스 설계를 시작할 때 가장 먼저 접하게 되는 것이 바로 **ER 모델(Entity-Relationship Model)**입니다.
ER 모델은 현실 세계의 객체(Entity)와 그들 간의 관계(Relationship)를 시각화한 모델로, 논리적 데이터베이스 설계의 출발점입니다.
하지만 컴퓨터는 그림이나 도식이 아닌 **정형화된 스키마(Schema)**를 통해 데이터를 저장하고 처리합니다.
따라서 ER 모델을 실제 데이터베이스에 구현하려면 이를 **관계형 스키마(Relational Schema)**로 변환하는 과정이 반드시 필요합니다.
이번 글에서는 ER 모델의 개념부터 시작해, Entity → Relation, Relationship → Foreign Key, 다중값 속성 → 별도 테이블 등 ER 모델에서 관계형 스키마로 변환하는 절차를 단계별로 설명합니다.
1. ER 모델이란?
ER 모델(Entity-Relationship Model)은 **현실 세계의 정보를 개체(Entity), 속성(Attribute), 관계(Relationship)**로 표현한 다이어그램입니다.
데이터베이스를 설계할 때 무엇을 저장할 것인지, 서로 어떤 관계가 있는지를 시각적으로 표현하기 위한 도구입니다.
ER 모델 구성요소
구성요소 | 설명 |
개체(Entity) | 사람, 제품, 부서 등 독립적으로 존재하는 객체 |
속성(Attribute) | 개체가 가지는 특성 (예: 이름, 전화번호 등) |
관계(Relationship) | 개체 간의 연결 (예: 고객이 주문한다) |
2. 관계형 스키마란?
관계형 스키마(Relational Schema)는 **관계형 데이터베이스(Relational DBMS)**에서 테이블 구조를 정의한 것입니다.
각 테이블은 개체나 관계에 대응하며, **기본키(PK)**와 **외래키(FK)**로 연결됩니다.
3. ER 모델 → 관계형 스키마 변환 절차
단계별 개요
- 개체(Entity)를 테이블로 변환
- 속성(Attribute)을 컬럼으로 변환
- 관계(Relationship)를 외래키 또는 별도 테이블로 변환
- 다치값(Multi-valued Attribute)은 테이블로 분리
- 약한 개체(Weak Entity)는 외래키 포함 테이블로 변환
- ISA 관계(상속)는 3가지 전략 중 선택
이제 각 절차를 상세하게 설명하겠습니다.
4. 개체(Entity) → 테이블 변환
예시:
개체: Student
속성: student_id(PK), name, major
→ 관계형 스키마:
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
major VARCHAR(30)
);
→ 하나의 개체는 그대로 하나의 테이블이 됩니다.
기본키는 반드시 명시해야 하며, 주로 식별자 속성(학번 등)이 됩니다.
5. 속성(Attribute) → 컬럼 변환
ER 모델에서 개체가 가지는 속성은 테이블의 **열(Column)**로 전환됩니다.
속성 유형별 처리:
- 단일값 속성(Single-valued): 그대로 컬럼으로
- 다치 속성(Multi-valued): 별도 테이블로 분리
- 복합 속성(Composite): 세부 속성으로 나눠서 컬럼화
예시:
- 전화번호가 여러 개인 경우 → Phone 테이블로 분리
- 주소 = (도, 시, 구) → 컬럼으로 각각 나누기
6. 관계(Relationship) → 외래키 또는 테이블 변환
관계의 표현은 **관계 차수(Cardinality)**에 따라 달라집니다.
(1) 1:1 관계
- 외래키를 한쪽 테이블에 포함
- 예: 직원(Employee)과 사원증(Card)
CREATE TABLE Card (
card_id INT PRIMARY KEY,
employee_id INT UNIQUE,
FOREIGN KEY(employee_id) REFERENCES Employee(employee_id)
);
(2) 1:N 관계
- N 쪽 테이블이 외래키를 가짐
- 예: 부서(Dept)와 직원(Employee) 관계
CREATE TABLE Employee (
emp_id INT PRIMARY KEY,
name VARCHAR(50),
dept_id INT,
FOREIGN KEY(dept_id) REFERENCES Department(dept_id)
);
(3) M:N 관계 (다대다)
- 별도의 중간 테이블 생성
- 예: 학생(Student)과 과목(Course)
CREATE TABLE Enrollment (
student_id INT,
course_id INT,
grade CHAR(1),
PRIMARY KEY(student_id, course_id),
FOREIGN KEY(student_id) REFERENCES Student(student_id),
FOREIGN KEY(course_id) REFERENCES Course(course_id)
);
→ 다대다 관계는 항상 중간 테이블로 분리해야 합니다.
7. 다치 속성(Multi-valued) → 테이블 분리
예시:
학생은 여러 개의 자격증을 가질 수 있음
ER 모델: Student — 자격증(Certificate)
관계형 스키마:
CREATE TABLE Certificate (
student_id INT,
cert_name VARCHAR(50),
PRIMARY KEY(student_id, cert_name),
FOREIGN KEY(student_id) REFERENCES Student(student_id)
);
→ 다치 속성은 테이블로 분리, 기본키는 복합키로 설정
8. 약한 개체(Weak Entity) 처리
약한 개체는 자체 식별자가 없고, 다른 개체의 키에 의존합니다.
주로 부모 개체의 기본키를 포함해 복합키로 구성합니다.
예시:
개체: 주문(Order) — 주문 상세(OrderDetail)
CREATE TABLE OrderDetail (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY(order_id, product_id),
FOREIGN KEY(order_id) REFERENCES Order(order_id)
);
9. ISA 관계(상속) 처리 전략
ISA 관계는 슈퍼타입과 서브타입의 상속 구조입니다.
주로 다음 3가지 방법 중 하나로 변환합니다.
(1) 통합 테이블 전략 (Single Table)
- 모든 속성을 하나의 테이블로 통합
- 간단하지만 NULL 값 많을 수 있음
(2) 서브타입 분리 전략 (Class Table)
- 슈퍼타입 + 서브타입 각각 테이블
- 서브타입에 슈퍼타입 PK 포함
CREATE TABLE Employee (
emp_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE Manager (
emp_id INT PRIMARY KEY,
dept_id INT,
FOREIGN KEY(emp_id) REFERENCES Employee(emp_id)
);
(3) 완전 분리 전략
- 공통 속성까지 서브타입에 포함해 슈퍼타입 생략
- 비추천: 중복 우려
10. 변환 결과 예시: ERD → 스키마
ER 모델 개요:
- Student(student_id, name)
- Course(course_id, title)
- Student ↔ Course (M:N) 관계: 수강(Enrollment)
관계형 스키마:
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE Course (
course_id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE Enrollment (
student_id INT,
course_id INT,
grade CHAR(1),
PRIMARY KEY(student_id, course_id),
FOREIGN KEY(student_id) REFERENCES Student(student_id),
FOREIGN KEY(course_id) REFERENCES Course(course_id)
);
11. 마무리
ER 모델은 현실 세계를 추상화한 논리 모델이며, 관계형 스키마는 실제 데이터베이스의 물리 구조입니다.
따라서 ERD를 바탕으로 관계형 스키마로 정확히 변환하는 능력은 정보처리기사뿐만 아니라 실무 DB 설계에서도 매우 중요합니다.
- 개체 → 테이블
- 속성 → 컬럼
- 관계 → 외래키 또는 별도 테이블
- 다치 속성/약한 개체 → 별도 테이블
- ISA → 상황에 맞는 상속 처리
이러한 일련의 절차를 체계적으로 연습하면, 어떤 데이터 모델도 자신 있게 SQL 테이블로 구현할 수 있게 됩니다.
'IT개발' 카테고리의 다른 글
Z 변환(z-Transform): 디지털 신호처리의 핵심 도구 (0) | 2025.05.05 |
---|---|
이산 시간 신호와 시스템: 디지털 신호처리의 핵심 개념 정리 (0) | 2025.05.05 |
SQL DDL, DML, DCL 명령어 정리 및 활용 예시 (0) | 2025.05.05 |
정규화 단계별 설명과 예시 (1NF ~ BCNF ~ 4NF, 5NF, 반정규화) (0) | 2025.05.05 |
On-Device AI(Edge AI) 모델 경량화와 TensorFlow Lite 최적화 (0) | 2025.05.05 |