문제 정의
ER(Entity-Relationship) 다이어그램은 데이터베이스를 구성하는 여러 테이블과 테이블 간의 관계를 시각적으로 표현한 그림입니다. ER 다이어그램을 분석하면 관계의 카디널리티(cardinality) 유형에 따라 데이터베이스의 테이블 수를 최소화할 수 있습니다.
일대일(1:1) 카디널리티
아래는 일대일 카디널리티를 가진 ER 다이어그램 예시입니다.

위 ER 다이어그램은 3개의 엔티티로 구성되어 있습니다.
- Employee 엔티티는 emp_name 속성을 가지며, emp_id가 기본키(primary key)입니다.
- Company 엔티티는 cmp_name 속성을 가지며, cmp_id가 기본키입니다.
- Work 엔티티의 기본키는 emp_id 또는 cmp_id가 될 수 있습니다.
- 3개의 테이블을 하나로 통합할 수는 없지만, Work 테이블을 Employee 또는 Company 중 하나에 병합하는 것은 가능합니다. 따라서 일대일 카디널리티 상황에서는 최소 2개의 테이블이 필요합니다.
일대다(1:N) 카디널리티
아래는 일대다 카디널리티를 가진 ER 다이어그램 예시입니다.

이 ER 다이어그램에서 한 명의 직원(Employee)은 한 회사(Company)에서만 근무할 수 있지만, 한 회사에는 여러 직원이 소속될 수 있습니다. 위 ER 다이어그램은 3개의 엔티티로 구성되어 있습니다.
- Employee 엔티티는 emp_id와 emp_name 속성을 가지며, emp_id가 기본키입니다.
- Company 엔티티는 cmp_id와 cmp_name 속성을 가지며, cmp_id가 기본키입니다.
- 여러 직원이 동일한 cmp_id에 소속될 수 있으므로 cmp_id를 Work 테이블의 기본키로 사용할 수 없습니다. 다만 Employee 테이블과 Work 테이블은 병합이 가능합니다. 따라서 일대다 카디널리티 상황에서도 최소 2개의 테이블이 필요합니다.
다대다(M:N) 카디널리티
아래는 다대다 카디널리티를 가진 ER 다이어그램 예시입니다.

이 ER 다이어그램에서 한 명의 직원은 여러 회사에서 근무할 수 있고, 한 회사 역시 여러 직원을 둘 수 있습니다. 위 ER 다이어그램은 3개의 엔티티로 구성되어 있습니다.
- Employee 엔티티는 emp_id와 emp_name 속성을 가지며, emp_id가 기본키입니다.
- Company 엔티티는 cmp_id와 cmp_name 속성을 가지며, cmp_id가 기본키입니다.
- 앞선 예제들과 달리 Work 테이블을 Employee나 Company 어느 쪽과도 병합할 수 없습니다. 강제로 병합하면 중복 데이터(redundant data)가 발생하기 때문입니다. 따라서 다대다 카디널리티 상황에서는 최소 3개의 테이블이 필요합니다.