ER 모델로 설계하는 데이터베이스 구조와 관계 표현
ER 모델의 개체·속성·관계, 카디널리티와 참여 제약조건, EER 확장, 관계형 데이터베이스 변환 방법을 정리한다.
2026-08-14 · 최초 발행 2025-08-10
데이터 구조를 합의하는 출발점
개체-관계 모델(Entity-Relationship Model, ER 모델)은 Peter Chen이 1976년 제안한 데이터베이스의 개념적 모델링 방법론이다. 현실 세계의 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)으로 나누어 표현하므로, 데이터베이스 구조를 설계하기 전에 문제 영역을 눈에 보이는 형태로 정리할 수 있다.
ER 모델은 요구사항 분석과 개념적 설계 단계에서 주로 사용된다. 다이어그램은 개발자와 사용자 사이에서 데이터 구조를 함께 검토하는 의사소통 도구가 되며, 이후 논리적·물리적 데이터 모델로 옮겨 갈 기준점이 된다.
개체, 속성, 관계를 분리해 본다
개체는 현실 세계에서 독립적으로 식별할 수 있는 실체나 객체다. 학생, 교수, 과목, 주문, 제품처럼 물리적인 대상뿐 아니라 논리적인 대상도 개체가 될 수 있다. 전통적인 ER 다이어그램에서는 사각형으로 나타낸다.
개체는 다른 개체에 의존하지 않고 존재하는 강한 개체(Strong Entity)와, 다른 개체의 존재를 전제로 하는 약한 개체(Weak Entity)로 구분할 수 있다.
속성은 개체 또는 관계가 지닌 특성이다. 학생이라면 학번, 이름, 생년월일, 전공이 속성에 해당한다. ER 다이어그램에서는 타원형으로 표현한다.
속성은 더 나눌 수 없는 단순 속성(예: 나이), 하위 요소로 분해되는 복합 속성(예: 주소 → 시, 구, 동)으로 구분한다. 하나의 값만 갖는 단일값 속성(예: 주민등록번호)과 여러 값을 가질 수 있는 다중값 속성(예: 전화번호)도 구분 대상이다. 생년월일로부터 계산하는 나이처럼 다른 속성에서 얻는 유도 속성, 그리고 학번처럼 개체를 유일하게 구분하는 식별자(기본키) 속성도 설계에서 분명히 해야 한다.
관계는 둘 이상의 개체 사이에 존재하는 연관성 또는 상호작용이다. 수강, 지도, 구매, 소속이 대표적인 관계이며 전통적 ER 다이어그램에서는 마름모로 표현한다. 두 개체를 연결하면 이항 관계(Binary Relationship), 세 개체를 연결하면 삼항 관계(Ternary Relationship), n개의 개체를 연결하면 n항 관계(n-ary Relationship)다.
관계의 범위와 참여 조건을 명시한다
관계의 매핑 카디널리티는 개체들이 서로 몇 개까지 연결될 수 있는지를 정의한다.
- 일대일(1:1) 관계에서는 각 개체가 상대편 개체와 최대 하나의 관계만 갖는다. 학생과 학생증의 관계가 예다.
- 일대다(1:N) 관계에서는 한 개체가 여러 다른 개체와 연결된다. 학과와 학생의 관계가 이에 해당한다.
- 다대다(M:N) 관계에서는 양쪽 개체 모두 여러 상대편 개체와 관계를 맺는다. 학생과 과목의 관계가 대표적이다.
참여 제약조건도 관계 정의에 포함된다. 전체 참여(Total Participation)는 개체 집합의 모든 개체가 관계에 참여해야 하는 경우이며, ER 다이어그램에서는 이중선으로 표시한다. 모든 학생이 반드시 학과에 소속되어야 한다는 조건이 예다. 부분 참여(Partial Participation)는 일부 개체만 관계에 참여할 수 있는 경우로 단일선으로 표현하며, 일부 학생만 조교로 활동하는 경우가 이에 해당한다.
표기법을 고르고 다이어그램을 다듬는 과정
Chen 표기법은 Peter Chen이 제안한 원래의 표기법으로, 개체는 사각형, 관계는 마름모, 속성은 타원으로 표시한다. IE 표기법(Information Engineering)은 정보공학 방법론에서 쓰이며 개체를 사각형, 관계를 선으로 표현하고 속성은 사각형 내부에 넣는다. Crow's Foot 표기법은 관계의 다중성을 새 발 모양으로 나타내며, 직관적이고 이해하기 쉬워 실무에서 많이 사용된다.
다이어그램 작성은 요구사항 분석과 문제 영역 파악에서 시작한다. 이어 주요 개체를 식별하고 정의한 뒤 개체 간 관계를 찾는다. 개체와 관계의 속성을 정하고 기본키와 외래키를 식별한 다음, 다이어그램을 작성해 검토한다. 검토가 끝난 모델은 논리적 데이터 모델과 물리적 데이터 모델로 변환한다.
EER로 표현 범위를 넓힌다
확장 ER 모델(EER: Enhanced Entity-Relationship Model)은 기본 ER 모델의 표현력 한계를 보완한 모델이다. 상속, 집합화, 일반화와 특수화 개념을 추가한다.
일반화(Generalization)는 여러 개체 타입에 공통으로 존재하는 특성을 뽑아 상위 개체 타입으로 통합하는 작업이다. 특수화(Specialization)는 상위 개체 타입을 하위 개체 타입으로 세분화하는 방식이다.
ISA 관계는 "is a" 관계로 상속 관계를 나타낸다. 학생 ISA 사람, 교수 ISA 사람이 그 예다.
집합화(Aggregation)는 전체와 부분의 관계를 표현한다. 부분은 전체에 포함되지만 독립적으로 존재할 수 있다. 구성(Composition)은 이보다 강한 집합화로, 부분이 전체에 종속되어 독립적으로 존재할 수 없다.
관계형 테이블로 옮기는 기준
강한 개체는 독립적인 테이블로 변환한다. 약한 개체는 식별 개체의 기본키를 외래키로 포함하는 테이블로 만든다.
일대일(1:1) 관계는 한쪽 테이블에 외래키를 추가하거나 별도 테이블로 만들 수 있다. 일대다(1:N) 관계는 다 쪽 테이블에 일 쪽 테이블의 기본키를 외래키로 추가한다. 다대다(M:N) 관계는 관계를 나타내는 별도 테이블을 만들고, 양쪽 테이블의 기본키를 외래키로 포함한다.
단순 속성은 테이블의 컬럼이 된다. 복합 속성은 각 구성 요소를 별도 컬럼으로 나누거나 하나의 컬럼으로 통합한다. 다중값 속성은 별도 테이블로 만들며, 유도 속성은 일반적으로 테이블에 포함하지 않는다.
-- 강한 개체 변환 예시
CREATE TABLE Student (
student_id VARCHAR(10) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
birth_date DATE,
major VARCHAR(30)
);
-- 일대다 관계 변환 예시
CREATE TABLE Department (
dept_id VARCHAR(5) PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL,
location VARCHAR(100)
);
CREATE TABLE Professor (
professor_id VARCHAR(10) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
dept_id VARCHAR(5),
FOREIGN KEY (dept_id) REFERENCES Department(dept_id)
);
-- 다대다 관계 변환 예시
CREATE TABLE Course (
course_id VARCHAR(10) PRIMARY KEY,
title VARCHAR(100) NOT NULL,
credits INTEGER
);
CREATE TABLE Enrollment (
student_id VARCHAR(10),
course_id VARCHAR(10),
semester VARCHAR(20),
grade CHAR(2),
PRIMARY KEY (student_id, course_id, semester),
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (course_id) REFERENCES Course(course_id)
);
도메인별로 달라지는 개체와 관계
온라인 쇼핑몰에서는 고객, 상품, 주문, 카테고리, 장바구니를 주요 개체로 두고 구매, 포함, 소속, 추가 관계를 설계할 수 있다.
대학 학사관리 시스템에서는 학생, 교수, 과목, 학과, 강의실이 주요 개체가 된다. 수강, 강의, 소속, 배정 관계를 중심으로 구조를 잡는다.
병원 관리 시스템에서는 환자, 의사, 간호사, 약품, 진료기록을 개체로 식별할 수 있다. 이들 사이의 진료, 처방, 투약, 담당 관계가 모델의 핵심이 된다.
ER 모델이 드러내는 것과 남기는 과제
ER 모델은 직관적인 표현으로 비기술적 이해관계자와의 의사소통을 돕고, 설계 초기 단계에서 데이터 구조 전체를 파악하게 한다. 시각화된 모델은 설계 오류를 찾는 데 유용하며 논리적 데이터 모델로 비교적 쉽게 변환할 수 있다. 데이터베이스 설계 문서화에도 적합하다.
반면 복잡한 비즈니스 규칙이나 제약조건을 표현하는 데는 한계가 있다. 대규모 시스템에서는 다이어그램 자체가 복잡해질 수 있고, 표준화된 표기법이 여러 가지여서 혼란이 생길 수 있다. 시간적 제약과 동적 변화의 표현도 제한적이며, 메서드와 상속 같은 객체지향 개념을 표현하는 데 한계가 있다.
개념 모델에서 물리 구현까지
데이터 모델링은 개념적 데이터 모델링, 논리적 데이터 모델링, 물리적 데이터 모델링으로 이어진다. 개념적 데이터 모델링에서는 데이터베이스에 독립적인 ER 모델을 사용한다. 논리적 데이터 모델링에서는 관계형 모델, 계층형 모델, 네트워크 모델 등 DBMS 유형을 선택한다. 물리적 데이터 모델링에서는 특정 DBMS에 맞는 물리적 구현 방법을 결정한다.
설계 과정에서는 명사형으로 표현되는 실체를 명확한 개체로 식별하고, 그 특성을 나타낼 적절한 속성을 배정해야 한다. 개체 간 카디널리티와 참여 제약조건도 정확히 표현해야 한다. 데이터 중복과 이상 현상을 막기 위한 정규화 원칙을 고려하고, 도메인 전문가와 협업해 비즈니스 규칙을 모델에 반영한다. 이후 요구사항 변화를 수용할 수 있는 유연성도 설계에 남겨 두어야 한다.