이진 관계(Binary Relationship)란 서로 다른 두 개체(Entity) 사이의 관계를 의미합니다. 즉, 한 개체의 역할 그룹(role group)과 다른 개체의 역할 그룹이 맺는 관계라고 할 수 있습니다.
이진 관계에는 다음과 같은 세 가지 카디널리티(Cardinality) 유형이 존재합니다.
- 일대일(One-to-One)
- 일대다(One-to-Many)
- 다대다(Many-to-Many)
1. 일대일(One-to-One) 관계
일대일 관계에서는 한 개체의 역할 그룹 하나가 다른 개체의 역할 그룹 하나에만 매핑됩니다. 쉽게 말해, 한 개체의 인스턴스가 다른 개체의 단 하나의 인스턴스와만 연결되는 구조입니다.
이러한 관계를 구현하려면 한쪽 개체의 기본 키(Primary Key)가 다른 개체에서 외래 키(Foreign Key)로 반드시 존재해야 합니다.
예시: Person(사람)과 Driver_License(운전면허증)
Person은 개인에 대한 정보를 담고 있고, Driver_License는 해당 개인의 운전면허 정보를 담고 있습니다. 모든 사람이 운전면허를 가지고 있는 것은 아니기 때문에 Driver_License에서 Person으로 향하는 관계는 선택적(optional)입니다. 반대로 Person에서 Driver_License로 향하는 관계는 필수적(compulsory)입니다. 즉, 모든 Driver_License 인스턴스는 반드시 특정 Person과 연결되어야 합니다.
또한 한 사람은 오직 하나의 운전면허 번호만 가질 수 있습니다.

2. 일대다(One-to-Many) 관계
일대다 관계에서는 첫 번째 개체의 역할 그룹 하나가 두 번째 개체의 여러 역할 그룹과 매핑되며, 두 번째 개체의 역할 그룹 하나는 첫 번째 개체의 단 하나의 역할 그룹에만 매핑됩니다.

예시: Project(프로젝트)와 Employee(직원)
하나의 프로젝트에는 여러 명의 직원이 참여할 수 있지만, 각 직원은 항상 단 하나의 프로젝트에만 소속됩니다. 이것이 대표적인 일대다 관계의 사례입니다.
3. 다대다(Many-to-Many) 관계
다대다 관계에서는 한 개체의 역할 그룹 하나가 두 번째 개체의 여러 역할 그룹과 매핑되고, 동시에 두 번째 개체의 역할 그룹 하나도 첫 번째 개체의 여러 역할 그룹과 매핑됩니다.
이러한 유형의 관계에서는 두 개체 간의 관계를 정의하는 제3의 테이블(중간 테이블)이 반드시 필요합니다.
예시: Student(학생)와 Books(도서)
여러 학생이 같은 책을 대출받을 수 있고, 한 학생에게 여러 권의 책이 대출될 수도 있습니다. 따라서 이는 전형적인 다대다 관계입니다.
이 경우 Student와 Book 개체 사이에는 Book_Issue라는 제3의 관계 테이블이 생성되어 두 개체 간의 관계를 정의합니다. Book_Issue 테이블에는 어떤 학생에게 어떤 책이 대출되었는지, 그리고 대출 기간이 며칠인지 등의 정보가 저장되어 모든 도서 대출 내역을 추적·관리할 수 있습니다.