데이터베이스 관계형 모델에서 엔티티 간의 관계는 1:1, 1, N관계로 나뉩니다. 각 관계 유형은 엔티티 간의 연결 방식과 데이터 저장 방식을 설명합니다. 아래에서 각 관계 유형에 대한 설명과 예제를 제공합니다.
1:1 관계 (One-to-One Relationship)
1:1 관계는 하나의 엔티티가 다른 엔티티의 정확히 하나의 인스턴스와 연결될 때 발생합니다. 예를 들어, 각 사용자가 하나의 프로필만 가질 수 있는 경우가 1:1 관계에 해당합니다.
예제
- 엔티티: 사용자(User)와 프로필(Profile)
- 관계: 각 사용자는 하나의 프로필을 가지고, 각 프로필은 하나의 사용자에 속합니다.
테이블 구조
- User 테이블
- user_id (PK)
- username
- password
- Profile 테이블
- profile_id (PK)
- user_id (FK, Unique)
- bio
- profile_picture
설명
Profile 테이블의 user_id는 User 테이블의 user_id를 참조하며, Unique 제약 조건을 통해 각 프로필이 하나의 사용자만 가질 수 있도록 합니다.
1 : N 관계 (One-to-Many Relationship)
1 : N 관계는 하나의 엔티티가 여러 다른 엔티티와 연결될 때 발생합니다. 즉, 한쪽의 한 레코드가 다른 쪽의 여러 레코드와 연결될 수 있습니다.
예제
- 엔티티: 고객(Customer)와 주문(Order)
- 관계: 각 고객은 여러 주문을 할 수 있으며, 각 주문은 하나의 고객에 속합니다.
테이블 구조
- Customer 테이블
- customer_id (PK)
- name
- Order 테이블
- order_id (PK)
- customer_id (FK)
- order_date
- amount
설명
Order 테이블의 customer_id는 Customer 테이블의 customer_id를 참조하며, 이를 통해 각 주문이 하나의 고객에 속하게 됩니다.
N : M 관계 (Many-to-Many Relationship)
N : M관계는 여러 엔티티가 여러 다른 엔티티와 연결될 때 발생합니다. 예를 들어, 학생이 여러 강의를 수강하고, 하나의 강의를 여러 학생이 수강할 수 있는 경우가 N관계에 해당합니다.
예제
- 엔티티: 학생(Student)와 강의(Course)
- 관계: 각 학생은 여러 강의를 수강할 수 있으며, 각 강의는 여러 학생이 수강할 수 있습니다.
테이블 구조
- Student 테이블
- student_id (PK)
- name
- Course 테이블
- course_id (PK)
- course_name
- credits
- 중간 테이블: Enrollment
- student_id (FK)
- course_id (FK)
설명
Enrollment 중간 테이블은 Student와 Course 테이블 간의 다대다(N : M) 관계를 관리합니다. Enrollment 테이블의 각 행은 특정 학생이 특정 강의를 수강하고 있음을 나타냅니다.
요약
- 1:1 관계 (One-to-One): 각 엔티티가 하나의 다른 엔티티와 연결됨. 예: 사용자와 프로필.
- 1:N관계 (One-to-Many): 하나의 엔티티가 여러 다른 엔티티와 연결됨. 예: 고객과 주문.
- N:M관계 (Many-to-Many): 여러 엔티티가 여러 다른 엔티티와 연결됨. 중간 테이블을 사용하여 구현. 예: 학생과 강의.
이 관계들은 데이터베이스 설계에서 중요한 요소로, 데이터의 무결성을 보장하고 효율적인 데이터 관리를 가능하게 합니다.