DBMS 예제를 사용한 엔터티 관계(ER) 다이어그램 모델
⚡ 스마트 요약
엔티티 관계(ER) 다이어그램 모델과 DBMS 예시 관계형 데이터베이스 내의 데이터와 그 상호 연결을 시각적으로 표현하는 구조화된 방법을 설명합니다. 피터 첸이 제안한 이 방법은 엔티티, 속성, 관계 및 그 카디널리티를 정확하게 정의하기 위한 개념적 모델링 기반을 제공합니다.

ER 다이어그램이란 무엇인가요?
엔티티 관계(ER) 다이어그램은 관계형 데이터베이스 구조를 설계하는 데 유용한 시각적 도구입니다. 1976년 피터 첸이 처음 제안한 이 다이어그램은 엔티티, 속성, 관계 및 그 카디널리티를 정확하게 정의하는 개념적 모델링 기반을 제공합니다. 이 튜토리얼에서는 기본 개념부터 고급 기법까지 모든 내용을 다루어 데이터베이스 스키마 설계를 마스터할 수 있도록 도와드립니다.
ER 다이어그램은 개체를 나타내는 데 직사각형을 사용하고, 속성을 정의하는 데 타원을 사용하며, 관계를 나타내는 데 마름모꼴을 사용하는 등 다양한 기호를 포함합니다.
언뜻 보면 ER 다이어그램은 순서도와 매우 유사해 보입니다. 그러나 ER 다이어그램에는 여러 특수 기호가 포함되어 있으며, 이러한 기호들의 의미 때문에 고유한 모델입니다. ER 다이어그램의 목적은 엔티티 프레임워크의 구조를 나타내는 것입니다.

ER 모델의 역사
피터 첸은 1976년 그의 획기적인 논문 "엔티티-관계 모델: 데이터에 대한 통합적 관점을 향하여"에서 ER 다이어그램을 제안했습니다. 그의 목표는 관계형 데이터베이스와 네트워크 모두에 사용할 수 있는 통일된 규칙을 만드는 것이었습니다. 첸은 ER 모델을 현실 세계의 요구 사항과 기술적인 데이터베이스 구현 사이의 간극을 메워줄 개념적 모델링 접근 방식으로 구상했습니다.
그 이후로 ER 모델은 Chen 표기법(원래의 표기법), Crow's Foot 표기법(현대 도구에서 널리 사용됨), UML 기반 접근 방식 등 다양한 표기 체계를 거치며 발전해 왔습니다. 이러한 변형에도 불구하고 핵심 개념은 모든 구현에서 일관성을 유지합니다.
ER 다이어그램을 사용하는 이유는 무엇일까요?
ER 다이어그램은 데이터베이스 설계 및 개발에 여러 가지 이점을 제공합니다.
- 시각적 커뮤니케이션: 이들은 기술 전문가와 비기술 전문가 모두가 이해할 수 있는 명확한 시각적 표현을 제공합니다.
- 개발 청사진: 테이블들이 어떻게 연결되어야 하는지, 그리고 각 테이블에 어떤 필드가 포함되어야 하는지를 정확하게 보여줍니다.
- 번역 준비 완료: ER 다이어그램은 관계형 테이블로 직접 변환할 수 있으므로 데이터베이스를 빠르게 구축할 수 있습니다.
- 오류 방지: 이들은 구현 전에 설계 결함과 중복을 식별하는 데 도움을 주어 시간과 자원을 절약합니다.
- 선적 서류 비치: 이는 새로운 팀 구성원이 시스템 아키텍처를 이해하는 데 도움이 되는 영구적인 문서 역할을 합니다.
- 시스템 분석: 시스템 내에 존재하는 모든 개체와 그들 사이의 관계를 파악하는 데 도움이 됩니다.
ER 다이어그램 구성 요소
모든 ER 다이어그램은 엔티티, 속성, 관계라는 세 가지 핵심 구성 요소로 이루어져 있습니다. 각 구성 요소와 그 상호 작용 방식을 이해하는 것은 효과적인 데이터베이스 설계를 위해 필수적입니다.
ER 다이어그램 예
예를 들어, 대학교 데이터베이스에는 학생, 강좌, 강사 엔티티가 있을 수 있습니다. 학생 엔티티는 학번, 이름, 학과 ID와 같은 속성을 가질 수 있으며, 강좌 및 강사와 관계를 맺을 수 있습니다.
엔터티
엔티티는 명확하게 식별 가능하고 데이터를 저장할 수 있는 모든 실세계 객체(생물 또는 무생물)를 나타냅니다. 엔티티는 물리적인 사물, 기업에 관한 사실, 또는 현실 세계에서 발생하는 사건일 수 있습니다. 엔티티에는 사람, 장소, 사물, 사건 또는 개념이 포함될 수 있습니다.
범주별 엔티티 예시:
- 사람: 직원, 학생, 환자, 고객
- 장소 : 상점, 건물, 사무실, 창고
- 목적: 기계, 제품, 자동차, 책
- 이벤트 : 판매, 등록, 갱신, 거래
- 개념: 계정, 강좌, 학과, 프로젝트
엔티티 세트
엔티티 집합은 공통 속성을 공유하는 유사한 엔티티들의 그룹입니다. 예를 들어, 대학교의 모든 학생들은 "학생" 엔티티 집합을 형성합니다. ER 다이어그램에서 엔티티는 사각형으로 표현되며, 사각형 안에 엔티티 이름이 쓰여집니다.
개체는 속성(또는 특성)으로 표현됩니다. 모든 속성은 각각 고유한 값을 가집니다. 예를 들어, 학생 개체는 이름, 나이, 학년과 같은 속성을 가질 수 있습니다.
강한 개체 vs. 약한 개체
엔티티는 독립적으로 존재할 수 있는지 여부에 따라 강한 엔티티와 약한 엔티티로 분류됩니다. 이러한 구분을 이해하는 것은 적절한 데이터베이스 설계를 위해 매우 중요합니다.
강력한 엔티티는 고유한 기본 키를 가지며 독립적으로 존재할 수 있습니다. 예를 들어, "학생" 엔티티는 Student_ID를 통해 다른 엔티티에 의존하지 않고 고유하게 식별될 수 있습니다.
약한 엔티티는 자체 기본 키가 없으므로 강력한 엔티티(소유자 엔티티라고 함)에 의존하여 식별됩니다. 고유성을 확보하기 위해 소유자 엔티티의 기본 키와 부분 키(식별자)를 결합하여 사용합니다. 예를 들어, 은행 시스템에서 "거래" 엔티티는 "계좌" 엔티티에 의존합니다. 거래 번호만으로는 데이터베이스 전체에서 고유하지 않지만, 계좌 번호와 결합하면 고유해집니다.
| 강한 개체 | 약한 개체 |
|---|---|
| 자체 기본 키를 가지고 있습니다. | 기본 키가 없으며 부분 키를 사용합니다. |
| 하나의 직사각형으로 표현됨 | 이중 직사각형으로 표현됨 |
| 기본 키는 실선으로 밑줄이 그어져 있습니다. | 부분 키는 점선으로 밑줄이 그어져 있습니다. |
| 독립적으로 존재할 수 있습니다. | 존재 여부는 소유자 주체에 따라 다릅니다. |
| 싱글 다이아몬드 관계와 연결됨 | 더블 다이아몬드(식별 관계)로 연결됨 |
| 예시: 학생, 직원, 제품 | 예시: 거래, 종속 항목, 주문 품목 |
관계
관계는 둘 이상의 개체 간의 연관성을 나타냅니다. 관계는 일반적으로 개체들이 서로 어떻게 상호작용하는지를 설명하는 동사 또는 동사구를 사용하여 표현됩니다. ER 다이어그램에서는 관계를 마름모꼴로 나타냅니다. 예: 톰은 화학과에서 일합니다.
엔터티는 관계에 참여합니다. 우리는 종종 동사나 동사구와의 관계를 식별할 수 있습니다.
예 :
- 당신은 이 강의에 참석하고 있습니다
- 강의를 하고 있어요
- 학생이 강의를 듣고 있다
- 강사가 강의를 하고 있다
Attributes
속성은 개체 또는 관계를 설명하는 특성 또는 특징입니다. 속성은 각 개체 인스턴스를 고유하고 의미 있게 만드는 상세 정보를 제공합니다. ER 다이어그램에서 속성은 선으로 상위 개체에 연결된 타원(엘립스)으로 표현됩니다.
예를 들어, 학생 엔티티는 Student_ID, 이름, 생년월일, 이메일, 전화번호와 같은 속성을 가질 수 있습니다.
속성 유형
| 속성 유형 | 기술설명 | 예시 |
|---|---|---|
| 단순한 (Atomic) | 더 이상 작은 구성 요소로 나눌 수 없습니다. | 전화번호, 주민등록번호, 이메일 |
| 합성물 | 더 작은 하위 속성으로 나눌 수 있습니다. | 성명 (이름, 중간 이름, 성), 주소 (거리, 도시, 우편번호) |
| 파생 | 값은 다른 속성으로부터 계산되며, 직접 저장되지 않습니다. | 나이(생년월일 기준), 총 가격 |
| 다중값 | 하나의 엔티티에 대해 여러 값을 저장할 수 있습니다. | 전화번호 Numbers이메일 주소, 기술 |
| 키 속성 | 각 엔티티 인스턴스를 고유하게 식별합니다(기본 키). | 학생 ID, 직원 ID, ISBN |
주요 팁 : ER 다이어그램에서 핵심 속성은 이름에 밑줄을 그어 표시합니다. 파생 속성은 점선 타원으로, 다중값 속성은 이중 타원으로 표시합니다.
카디널리티(관계 유형)
카디널리티는 관계의 수치적 제약 조건을 정의합니다. 구체적으로, 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 연결될 수 있는 최대 개수를 나타냅니다. 효율적인 데이터베이스 구조를 설계하려면 카디널리티를 이해하는 것이 필수적입니다.
1. 일대일 (1:1)
집합 A의 개체는 집합 B의 개체와 최대 한 개까지만 연결될 수 있으며, 그 반대의 경우도 마찬가지입니다.
예시: 한 학생에게는 정확히 하나의 학생 ID가 부여되며, 각 학생 ID는 정확히 한 명의 학생에게만 해당됩니다.
2. 일대다 (1:N)
집합 A의 한 개체는 집합 B의 여러 개체와 연결될 수 있지만, 집합 B의 각 개체는 집합 A의 개체 중 하나와만 연결됩니다.
예시: 한 학급은 여러 명의 학생으로 구성됩니다.
3. 다대일(N:1)
집합 A의 여러 개체가 집합 B의 한 개체와 연결될 수 있습니다.
예를 들어, 많은 학생들이 같은 반에 속해 있습니다.
4. 다대다(M:N)
집합 A의 여러 개체는 집합 B의 여러 개체와 연결될 수 있으며, 그 반대의 경우도 마찬가지입니다.
예를 들어 그룹으로서의 학생은 여러 교직원과 연결되고 교직원은 여러 학생과 연결될 수 있습니다.
ER 다이어그램 기호 및 표기법
ER 다이어그램은 표준화된 기호를 사용하여 다양한 구성 요소를 나타냅니다. 여러 표기 체계가 있지만, 가장 널리 사용되는 두 가지는 첸 표기법(Chen Notation)과 크로우즈 풋 표기법(Crow's Foot Notation)입니다.
첸 표기법
1976년 피터 첸이 개발한 첸 표기법은 기하학적 도형을 사용하여 다양한 요소를 나타냅니다.
| 상징 | 이름 | 대표 |
|---|---|---|
| 구형 | 기업 | 강한 개체 (예: 학생, 제품) |
| Double 구형 | 약한 개체 | 다른 개체에 종속된 개체 (예: 거래) |
| 타원/타원형 | 속성 | 개체의 속성(예: 이름, ID) |
| Double 타원 | 다중값 속성 | 여러 값을 가질 수 있는 속성(예: 전화번호) Numbers) |
| 점선 타원 | 파생 속성 | 계산된 값 (예: 생년월일을 이용한 나이) |
| 다이아몬드 | 관계 | 개체 간의 연관성 (예: 등록자) |
| Double 다이아몬드 | 관계 파악하기 | 약한 개체와의 관계 |
| 라인 | (링크) | 구성 요소를 서로 연결합니다. |
| 밑줄 친 텍스트 | 기본 키 | 엔티티에 대한 고유 식별자 |
크로우즈풋 표기법
크로우즈풋 표기법(IE 표기법이라고도 함)은 최신 데이터베이스 설계 도구에서 더 일반적으로 사용됩니다. 이 표기법은 서로 다른 줄 끝 문자를 사용하여 카디널리티를 나타내며, 특히 관계의 "다수" 측면을 보여주는 데 효과적입니다.
| 상징 Descript이온 | 의미 |
|---|---|
| 세로선 하나 (|) | 필수 항목 1개 (정확히 1개) |
| 선이 있는 원(O|) | 선택 사항 1 (0 또는 1) |
| 선(>|)이 있는 눈가 주름 | 필수 항목 다수 (하나 이상) |
| 눈가 주름에 원(>O)이 있는 형태 | 선택 사항 다수 (0개 이상) |
첸 표기법 vs. 크로우즈 풋 표기법: 각각 언제 사용해야 할까요?
| 아래 | 첸 표기법 | 크로우즈풋 표기법 |
|---|---|---|
| 가장 좋은 | 개념 모델링, 학술적 활용 | 물리/논리 모델링, 산업적 활용 |
| 속성 표시 | 모든 속성을 시각적으로 보여줍니다. | 엔티티 박스 내부의 속성 목록 |
| 카디널리티 | 숫자(1, N, M)를 사용합니다. | 시각적 기호를 사용합니다 |
| 복잡성 | 어수선해질 수 있습니다 | 더욱 작고 깔끔합니다. |
| 도구 지원 | 제한적인 최신 도구 지원 | 다양한 도구에서 널리 지원됩니다. |
ERD(엔터티 관계 다이어그램)를 만드는 방법
이번 ER 다이어그램(ERD) 튜토리얼에서는 ER 다이어그램을 작성하는 방법을 알아보겠습니다. ER 다이어그램을 작성하는 단계는 다음과 같습니다.
엔터티 관계 다이어그램 예를 통해 이를 연구해 보겠습니다.
대학교에서 학생은 과목을 수강 신청합니다. 학생은 최소 한 과목 이상 수강해야 합니다. 각 과목은 한 명의 교수가 담당합니다. 교육의 질을 유지하기 위해 교수는 한 과목만 담당할 수 있습니다.
1단계) 엔터티 식별
우리는 세 개의 조직을 가지고 있습니다:
- 학생
- 코스
- 교수
2단계) 관계 식별
우리는 다음과 같은 두 가지 관계를 가지고 있습니다.
- 학생은 할당 된 코스
- 교수 제공 코스
3단계) 카디널리티 식별
문제 설명으로부터 우리는 다음을 알 수 있습니다.
- 학생을 배정할 수 있습니다. 여러 코스
- 교수는 강의만 할 수 있다 한 코스
4단계) 속성 식별
조직에서 현재 관리하고 있는 파일, 양식, 보고서 및 데이터를 연구하여 속성을 파악해야 합니다. 또한 다양한 이해관계자와의 인터뷰를 통해 엔티티를 식별할 수도 있습니다. 초기 단계에서는 특정 엔티티에 매핑하지 않고 속성을 식별하는 것이 중요합니다.
속성 목록을 확보했으면 이제 해당 속성을 식별된 엔티티에 매핑해야 합니다. 각 속성은 정확히 하나의 엔티티와만 연결되어야 합니다. 속성이 둘 이상의 엔티티에 속해야 한다고 생각되면 고유성을 부여하는 수정자를 사용하십시오.
매핑이 완료되면 기본 키를 식별합니다. 고유 키를 쉽게 사용할 수 없는 경우 새로 생성하세요.
| 기업 | 기본 키 | 속성 |
|---|---|---|
| 학생 | 학생 아이디 | 학생 이름 |
| 교수 | 직원_ID | 교수이름 |
| 코스 | 강좌_ID | 강좌명 |
강좌 엔티티의 속성으로는 기간, 학점, 과제 등이 있을 수 있습니다. 하지만 편의상 여기서는 하나의 속성만 고려했습니다.
5단계) ERD를 작성합니다.
보다 현대적인 방식으로 표현된 개체 관계 다이어그램 예시:
효과적인 ER 다이어그램을 위한 최고의 사례
명확하고 유지보수하기 쉬우며 효과적인 ER 다이어그램을 작성하려면 다음 지침을 따르십시오.
- 중복을 제거하세요: 중복된 엔티티, 속성 또는 관계를 제거합니다.
- 명확한 명명 규칙을 사용하세요. 일관성 있고 설명적인 이름을 사용하십시오. 약어 사용을 피하십시오.
- 요구사항에 대한 유효성 검사: 다이어그램이 모든 데이터 저장 요구 사항을 지원하는지 확인하십시오.
- 간단하게 유지: 하나의 복잡한 다이어그램 대신 여러 개의 서로 다른 수준의 다이어그램을 만드세요.
- 색상을 아껴서 사용하세요: 범주를 강조하기 위해 일관된 색상을 사용하십시오.
- 문서상의 전제 조건: 비즈니스 규칙에 대한 가정을 설명하는 메모를 포함하십시오.
- Rev이해관계자들과의 협의: 비즈니스 사용자와 기술팀이 다이어그램을 검토하도록 하세요.
- 버전 관리 : 디자인이 발전함에 따라 버전을 유지 관리하세요.
ER 다이어그램과 UML 클래스 다이어그램의 차이점
ER 다이어그램과 UML 클래스 다이어그램은 모두 데이터 모델링에 사용되지만, 목적과 맥락이 다릅니다. 효과적인 시스템 설계를 위해서는 각각을 언제 사용해야 하는지 이해하는 것이 중요합니다.
| 아래 | ER 다이어그램 | UML 클래스 다이어그램 |
|---|---|---|
| 주요 목적 | 데이터베이스 디자인 | 소프트웨어/객체 디자인 |
| 초점 | 데이터와 관계 | 객체, 메서드 및 동작 |
| 행동 양식/OperaTIONS | 지원되지 않음 | 완벽하게 지원됨 |
| 계승 | 제한적 (EER에만 해당) | 완벽한 지원 |
| 업계 용도 | 데이터베이스 관리자, 데이터 분석가 | 소프트웨어 개발자, 아키텍트 |















