MySQL을 사용하면 테이블의 여러 열에 FOREIGN KEY 제약 조건을 추가할 수 있습니다. 조건은 자식 테이블의 각 외래 키가 다른 부모 테이블을 참조해야 한다는 것입니다.
예시
다음과 같이 'cust_unq_id' 필드에 대한 기본 키 제약 조건이 있는 'customer2' 테이블이 있다고 가정합니다. -
mysql> describe customer2; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | cust_id | int(11) | YES | | NULL | | | First_name | varchar(20) | YES | | NULL | | | Last_name | varchar(20) | YES | | NULL | | | City | varchar(10) | YES | | NULL | | | cust_unq_id | int(11) | NO | PRI | 0 | | +-------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
그리고 이미 'customer' 상위 테이블을 참조하는 'Cust_id' 필드에 외래 키 제약 조건이 있는 테이블 orders1이 있습니다.
mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.04 sec)
이제 다음 ALTER TABLE 쿼리를 사용하여 상위 테이블 'customer2'를 참조하는 'cust_unq_id' 필드에 다른 외래 키 제약 조건을 추가할 수 있습니다.
mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id); Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | MUL | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
위의 결과 집합에서 'orders1' 테이블에는 'cust_id'에 대한 1개와 'cust_unq_id' 외래 키 제약 조건에 대한 2개의 테이블이 있음을 관찰할 수 있습니다.