Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 외래 키(Foreign Key) 제약 조건에서 부모 테이블과 자식 테이블의 관계란?

부모 테이블과 자식 테이블의 관계: 일대다(One-to-Many)

MySQL에서 외래 키(Foreign Key) 제약 조건으로 연결된 부모 테이블과 자식 테이블 사이의 관계는 일대다(One-to-Many) 관계입니다. 즉, 부모 테이블의 하나의 레코드가 자식 테이블의 여러 레코드와 연관될 수 있습니다.

'customer'와 'orders' 테이블 예제

두 개의 테이블인 'customer'(고객)와 'orders'(주문)를 예로 들어 이 관계를 쉽게 이해할 수 있습니다. 여기서 'customer'는 부모 테이블이고, 'orders'는 자식 테이블입니다. 한 명의 고객은 하나 이상의 주문을 가질 수 있기 때문에 두 테이블의 관계는 일대다 관계가 됩니다.

아래와 같이 두 테이블에 값을 삽입한 후 조회하면 이 관계를 직접 확인할 수 있습니다.

mysql> Select * from Customer;

+----+---------+
| id | name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Raman   |
| 3  | Harshit |
| 4  | Aarav   |
+----+---------+

4 rows in set (0.00 sec)

mysql> Select * from orders;

+----------+----------+------+
| order_id | product  | id   |
+----------+----------+------+
| 100      | Notebook | 1    |
| 110      | Pen      | 1    |
| 120      | Book     | 2    |
| 130      | Charts   | 2    |
+----------+----------+------+

4 rows in set (0.00 sec)

결과 분석

위 결과 집합에서 알 수 있듯이, 한 고객은 여러 개의 주문을 가질 수 있습니다. 실제로 id = 1인 고객(Gaurav)은 두 개의 주문(Notebook, Pen)을 가지고 있으며, id = 2인 고객(Raman) 역시 두 개의 주문(Book, Charts)을 가지고 있습니다. 반면 각 주문은 오직 한 명의 고객에게만 속합니다. 이것이 바로 일대다 관계의 전형적인 모습입니다.

외래 키의 역할

자식 테이블('orders')의 외래 키 열(id)은 부모 테이블('customer')의 기본 키를 참조합니다. 이를 통해 참조 무결성이 유지되며, 부모 테이블에 존재하지 않는 고객 ID로는 주문을 생성할 수 없습니다. 따라서 외래 키 제약 조건은 두 테이블 간의 관계를 항상 유효하게 보장하는 중요한 역할을 합니다.