데이터베이스를 구축하는 것은 도시를 건설하는 것과 같습니다. 어떤 건물을 어디에 배치하고, 도로를 어떻게 연결할지 상세한 ‘도시 계획도’ 없이 무작정 공사를 시작한다면, 비효율적이고 혼란스러운 결과물만 남게 될 것입니다. 데이터베이스 설계에서 E-R 다이어그램(Entity-Relationship Diagram, ERD)은 바로 이 ‘도시 계획도’와 같은 역할을 합니다. 시스템을 구성하는 데이터의 종류와 그들 간의 관계를 한눈에 파악할 수 있도록 시각적으로 표현한 것으로, 성공적인 데이터베이스 구축을 위한 필수적인 첫걸음입니다.
E-R 다이어그램은 개발자와 설계자, 그리고 현업 사용자 사이의 의사소통을 돕는 강력한 도구입니다. 복잡한 요구사항을 직관적인 그림으로 표현함으로써 모두가 동일한 그림을 보고 시스템을 이해할 수 있게 해주며, 이를 통해 설계 과정에서 발생할 수 있는 오해와 오류를 사전에 방지합니다. 이 글에서는 정보처리기사 시험의 핵심 주제이자, 실무 데이터 모델링의 근간이 되는 E-R 다이어그램의 기본 구성 요소부터 관계 설정 방법, 그리고 작성 시 고려사항까지 체계적으로 알아보겠습니다.
E-R 다이어그램의 세 가지 핵심 구성 요소
E-R 다이어그램은 현실 세계의 데이터를 표현하기 위해 크게 개체(Entity), 속성(Attribute), 관계(Relationship)라는 세 가지 기본 요소로 구성됩니다. 이 세 가지 요소만 이해하면 E-R 다이어그램의 절반 이상을 이해한 것이나 다름없습니다.
개체 (Entity): 데이터로 표현하고자 하는 실체
개체는 데이터로 저장하고 관리해야 하는 현실 세계의 대상이나 개념을 의미합니다. 사람, 사물, 장소, 사건 등 명사로 표현될 수 있는 모든 것이 개체가 될 수 있습니다. 예를 들어 ‘학생 정보 관리 시스템’을 설계한다면 ‘학생’, ‘교수’, ‘과목’ 등이 바로 개체가 됩니다. E-R 다이어그램에서는 보통 사각형으로 개체를 표현합니다.
- 유형 개체 (Tangible Entity): 물리적인 형태가 있는 개체 (예: 학생, 자동차, 상품)
- 무형 개체 (Intangible Entity): 개념적이거나 추상적인 개체 (예: 과목, 주문, 계좌)
각 개체는 독립적인 정보를 가지며, 다른 개체와 구별될 수 있는 유일한 식별자(Identifier)를 반드시 가져야 합니다. ‘학생’ 개체라면 ‘학번’이 식별자가 될 수 있습니다.
속성 (Attribute): 개체가 가진 구체적인 정보
속성은 개체가 가지고 있는 고유한 특성이나 상태를 설명하는 구체적인 정보 항목들입니다. ‘학생’이라는 개체는 ‘학번’, ‘이름’, ‘학과’, ‘학년’, ‘연락처’와 같은 여러 속성들을 가질 수 있습니다. E-R 다이어그램에서는 속성을 타원형으로 표현하고 개체와 선으로 연결합니다.
속성은 그 특징에 따라 여러 종류로 나눌 수 있습니다.
- 기본 속성 (Basic Attribute): 더 이상 분해할 수 없는 기본적인 속성 (예: 이름, 학년)
- 복합 속성 (Composite Attribute): 여러 개의 작은 속성으로 분해될 수 있는 속성 (예: ‘주소’ 속성은 ‘시’, ‘구’, ‘상세주소’로 나뉠 수 있음)
- 단일값 속성 (Single-valued Attribute): 오직 하나의 값만 가질 수 있는 속성 (예: 학번, 주민등록번호)
- 다중값 속성 (Multi-valued Attribute): 여러 개의 값을 가질 수 있는 속성 (예: 한 학생이 여러 개의 ‘취미’를 가질 수 있음)
- 유도 속성 (Derived Attribute): 다른 속성의 값으로부터 계산되거나 유추될 수 있는 속성 (예: ‘생년월일’ 속성이 있으면 ‘나이’ 속성은 유도될 수 있음)
- 키 속성 (Key Attribute): 개체 집합에서 각 개체를 유일하게 식별할 수 있는 속성. 기본키(Primary Key)가 여기에 해당하며, 보통 속성 이름에 밑줄을 그어 표시합니다.
관계 (Relationship): 개체와 개체 사이의 의미 있는 연결
관계는 두 개 이상의 개체들 사이에 존재하는 의미 있는 연관성이나 상호작용을 나타냅니다. ‘학생’ 개체와 ‘과목’ 개체 사이에는 ‘수강한다’는 관계가 존재할 수 있습니다. E-R 다이어그램에서는 관계를 마름모로 표현하고, 관계에 참여하는 개체들을 선으로 연결합니다.
관계는 어떤 개체들이 참여하는지와 어떻게 참여하는지에 따라 그 종류가 정의됩니다. 관계를 명확히 정의하는 것은 데이터 모델의 논리적 구조를 결정하는 매우 중요한 과정입니다.
관계의 종류와 카디널리티: 관계의 깊이를 더하다
개체 간의 관계를 단순히 선으로 연결하는 것만으로는 충분하지 않습니다. 각 개체가 관계에 얼마나, 어떻게 참여하는지를 명확하게 표현해야만 정확한 모델링이 가능합니다. 이를 위해 관계의 차수와 카디널리티(대응 수) 개념이 사용됩니다.
관계의 차수 (Degree)
관계의 차수는 관계에 참여하는 개체의 수를 의미합니다.
- 1진 관계 (Unary Relationship): 하나의 개체가 자기 자신과 관계를 맺는 경우 (예: ‘직원’ 개체 내에서 ‘관리한다’ 관계 – 한 직원이 다른 직원들을 관리)
- 2진 관계 (Binary Relationship): 두 개의 개체가 관계를 맺는 가장 일반적인 경우 (예: ‘학생’이 ‘과목’을 ‘수강한다’)
- 3진 관계 (Ternary Relationship): 세 개의 개체가 동시에 관계를 맺는 경우 (예: ‘직원’이 특정 ‘프로젝트’에 특정 ‘부품’을 ‘공급한다’)
카디널리티 (Cardinality Ratio)
카디널리티는 관계에 참여하는 각 개체의 인스턴스(실제 데이터)가 얼마나 많이 참여할 수 있는지를 나타내는 대응의 수를 의미합니다. 카디널리티는 데이터베이스의 제약 조건을 설정하는 중요한 기준이 됩니다.
- 일대일 (1:1) 관계: 개체 A의 각 인스턴스가 개체 B의 인스턴스 하나와만 관계를 맺고, 그 반대도 마찬가지인 경우입니다. (예: ‘학생’과 ‘학생증’. 한 명의 학생은 하나의 학생증만 가질 수 있고, 하나의 학생증은 한 명의 학생에게만 발급됩니다.)
- 일대다 (1:N) 관계: 개체 A의 인스턴스 하나가 개체 B의 여러 인스턴스와 관계를 맺을 수 있지만, 개체 B의 인스턴스는 개체 A의 인스턴스 하나와만 관계를 맺는 경우입니다. 가장 흔한 관계 유형입니다. (예: ‘교수’와 ‘과목’. 한 명의 교수는 여러 과목을 강의할 수 있지만, 한 과목은 한 명의 교수에 의해서만 강의됩니다.)
- 다대다 (M:N) 관계: 개체 A의 인스턴스가 개체 B의 여러 인스턴스와 관계를 맺을 수 있고, 그 반대도 마찬가지인 경우입니다. (예: ‘학생’과 ‘과목’. 한 명의 학생은 여러 과목을 수강할 수 있고, 한 과목은 여러 학생에 의해 수강될 수 있습니다.)
다대다(M:N) 관계는 관계형 데이터베이스에서 직접 표현할 수 없기 때문에, 모델링 과정에서 보통 두 개체 사이에 새로운 ‘연결 개체(Associative Entity)’를 추가하여 두 개의 일대다(1:N) 관계로 분해합니다. 위의 예시에서는 ‘학생’과 ‘과목’ 사이에 ‘수강신청’이라는 새로운 개체를 만들어 ‘학생 (1) -> (N) 수강신청 (N) -> (1) 과목’ 형태로 변환합니다.
표기법 | 일대일 (1:1) | 일대다 (1:N) | 다대다 (M:N) |
IE 표기법 | ─ 1 ─ 1 ─ | ─ 1 ─ N ─ | ─ M ─ N ─ |
까마귀발 표기법 | ─ | ─ | ─ |
까마귀발(Crow’s Foot) 표기법은 관계선의 끝 모양으로 카디널리티와 참여도를 함께 표현하여 현재 실무에서 가장 널리 사용됩니다. 세 개의 발 모양이 ‘다(Many)’를, 수직선이 ‘일(One)’을 의미합니다.
E-R 다이어그램 작성 실전 가이드 (도서관 시스템 예시)
이제 실제 예시를 통해 E-R 다이어그램을 작성하는 과정을 단계별로 살펴보겠습니다. ‘간단한 도서관 대출 관리 시스템’을 모델링한다고 가정해 보겠습니다.
1단계: 개체(Entity) 식별 시스템에서 관리해야 할 핵심 데이터 대상을 찾아냅니다. 명사형으로 표현되는 것들이 주로 해당됩니다.
- 회원, 도서, 대출
2단계: 속성(Attribute) 정의 및 기본키 설정 각 개체가 가져야 할 정보들을 나열하고, 각 개체를 유일하게 식별할 수 있는 기본키(PK)를 지정합니다.
- 회원: 회원번호(PK), 이름, 연락처, 주소
- 도서: 도서번호(PK), 도서명, 저자, 출판사
- 대출: 대출번호(PK), 대출일, 반납예정일, 반납여부
3단계: 관계(Relationship) 설정 개체들 간의 상호작용을 정의합니다.
- ‘회원’과 ‘도서’는 ‘대출한다’는 관계를 맺습니다.
4단계: 카디널리티(Cardinality) 및 참여도 정의 관계의 세부 내용을 정의합니다.
- 한 명의 ‘회원’은 여러 권의 ‘도서’를 대출할 수 있습니다.
- 한 권의 ‘도서’는 여러 ‘회원’에게 대출될 수 있습니다. (시간의 흐름에 따라)
- 따라서 ‘회원’과 ‘도서’의 관계는 다대다(M:N) 관계입니다.
5단계: M:N 관계 해소 및 다이어그램 완성 다대다 관계를 해소하기 위해 ‘대출’이라는 연결 개체를 사용합니다.
- ‘회원’은 ‘대출’에 일대다(1:N) 관계로 참여합니다. (한 회원은 여러 번 대출할 수 있다)
- ‘도서’는 ‘대출’에 일대다(1:N) 관계로 참여합니다. (한 도서는 여러 번 대출될 수 있다)
- ‘대출’ 개체는 ‘회원번호’와 ‘도서번호’를 외래키(FK)로 받아, 어떤 회원이 어떤 책을 언제 빌렸는지에 대한 구체적인 정보를 저장하게 됩니다.
이 과정을 거쳐 완성된 E-R 다이어그램은 시스템의 데이터 구조를 명확하게 보여주는 청사진이 되며, 이를 바탕으로 물리적인 데이터베이스 테이블을 설계하고 생성하는 다음 단계로 나아갈 수 있습니다.
결론: 성공적인 데이터 모델링의 시작점이자 소통의 언어
E-R 다이어그램은 데이터베이스 설계의 핵심 과정인 ‘개념적 데이터 모델링’에 사용되는 가장 대표적이고 강력한 도구입니다. 복잡한 시스템의 요구사항을 단순하고 직관적인 다이어그램으로 표현함으로써, 개발팀과 비즈니스팀 간의 원활한 소통을 가능하게 하고, 데이터 구조에 대한 공통된 이해를 형성하도록 돕습니다. 잘 만들어진 E-R 다이어그램은 데이터 중복을 방지하고, 데이터 무결성을 높이며, 향후 유지보수와 확장이 용이한 유연한 시스템을 만드는 밑거름이 됩니다.
물론 E-R 다이어그램이 모든 것을 해결해 주는 만능 도구는 아닙니다. 비정형 데이터를 주로 다루는 NoSQL 데이터베이스 환경에서는 전통적인 E-R 다이어그램의 적용 방식이 달라질 수 있으며, 너무 복잡한 시스템을 하나의 다이어그램에 모두 표현하려는 시도는 오히려 이해를 방해할 수도 있습니다. 중요한 것은 E-R 다이어그램의 기본 철학, 즉 ‘데이터의 구조와 관계를 명확히 정의한다’는 원칙을 이해하고, 설계하려는 시스템의 특성에 맞게 유연하게 활용하는 것입니다. 데이터 세상의 건축가로서, E-R 다이어그램이라는 설계도를 자유자재로 그릴 수 있는 능력은 여러분의 핵심 경쟁력이 될 것입니다.