부모 테이블과 자식 테이블의 관계: 일대다(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로는 주문을 생성할 수 없습니다. 따라서 외래 키 제약 조건은 두 테이블 간의 관계를 항상 유효하게 보장하는 중요한 역할을 합니다.