엔티티-관계 다이어그램(Entity-Relationship Diagram, ERD)은 현실 세계를 '엔티티(개체)'의 관점에서 바라보는 데이터 모델링 도구입니다. 1976년 P.P. 첸(Peter Chen)이 처음 소개했으며, ER 다이어그램 또는 ER 모델 등으로 불립니다. ER 다이어그램은 엔티티 집합 간의 관계를 시각적으로 보여줍니다.
먼저 ER 다이어그램을 구성하는 핵심 요소들을 하나씩 살펴보겠습니다.
엔티티(Entity)
DBMS에서 엔티티는 실제로 존재하는 현실 세계의 객체를 의미합니다. 예를 들어 학교(School) 데이터베이스에서는 교사(Teachers), 학생(Students), 과목(Courses) 등이 엔티티가 될 수 있습니다.

속성(Attribute)
엔티티는 자신을 설명하는 속성을 가집니다. 예를 들어 교사(Teachers) 엔티티의 속성으로는 Teacher_Name(교사 이름), Teacher_Address(주소), Teacher_Subject(담당 과목) 등이 있으며, 이러한 속성 값은 데이터베이스에 저장됩니다.

약한 엔티티(Weak Entity)
약한 엔티티는 기본 키(Primary Key)를 가지지 않으며 부모 엔티티에 의존합니다. 주로 다른 엔티티에 종속된 형태로 존재하며, 대표적인 예로 교수의 부양 가족(dependents)을 들 수 있습니다.

강한 엔티티(Strong Entity)
강한 엔티티는 기본 키를 가지며, 약한 엔티티가 이에 의존합니다. 강한 엔티티의 존재는 다른 어떤 엔티티에도 의존하지 않습니다.
예를 들어 교수(Professor)는 강한 엔티티입니다.

기본 키(Primary Key)
모든 테이블은 하나의 기본 키를 가지며, 기본 키에는 NULL 값이 허용되지 않습니다. 기본 키의 예로는 StudentID(학생 ID), SSN(주민등록번호), AccountNumber(계좌 번호) 등이 있습니다.

다중값 속성(Multivalued Attribute)
하나의 엔티티가 동시에 여러 개의 값을 가질 수 있는 속성을 다중값 속성이라고 합니다. 예를 들어 학생의 기술 역량은 프로그래밍, 웹 개발 등 여러 개일 수 있습니다.

복합 속성(Composite Attribute)
하나의 속성이 두 개 이상의 하위 속성으로 구성된 경우 이를 복합 속성이라고 합니다. 예를 들어 학생 이름(Student Name)은 이름(First Name), 중간 이름(Middle Name), 성(Last Name)으로 나눌 수 있습니다.

유도 속성(Derived Attribute)
이름 그대로 유도 속성은 다른 속성 값으로부터 계산해 얻을 수 있는 속성입니다. 예를 들어 학생 나이(Student Age)는 학생의 생년월일(Date-of-Birth)로부터 계산하여 도출할 수 있습니다.

ER 다이어그램 예제
다음은 병원(Hospital)의 ER 다이어그램 예시입니다.
- Patient(환자), Doctor(의사), Tests(검사) 세 개의 엔티티로 구성됩니다.
- Patient 엔티티의 Age(나이)는 유도 속성입니다.
- Tests 엔티티의 Name(검사명)이 기본 키입니다.
- Doctor 엔티티의 ID가 기본 키입니다.
- Patient 엔티티의 ID가 기본 키입니다.