IT개발

ER 모델에서 관계형 스키마로 변환하는 절차

우리모두 개발자되기 2025. 5. 5. 17:48

 

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 모델 → 관계형 스키마 변환 절차

단계별 개요

  1. 개체(Entity)를 테이블로 변환
  2. 속성(Attribute)을 컬럼으로 변환
  3. 관계(Relationship)를 외래키 또는 별도 테이블로 변환
  4. 다치값(Multi-valued Attribute)은 테이블로 분리
  5. 약한 개체(Weak Entity)는 외래키 포함 테이블로 변환
  6. 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 테이블로 구현할 수 있게 됩니다.