Foreign Key Risk

참조 무결성은 자식의 FK와 부모의 참조 대상 키 양쪽에서 깨진다

자식이 없는 부모를 가리키게 만들거나, 이미 참조 중인 부모 키를 없애면 참조 무결성 위반이 발생합니다.

참조 대상

customers

orders.customer_id가 이 id를 참조합니다.

id name
10 김고객
20 이고객
외래키 보유

orders

각 주문은 존재하는 고객을 가리켜야 합니다.

order_id customer_id
1001 10
1002 20
자식 INSERT 없는 고객으로 주문 추가

customer_id = 99를 넣지만 customers에 99가 없습니다.

거부
자식 UPDATE FK를 없는 값으로 수정

customer_id를 20에서 99로 바꾸면 고아 참조가 됩니다.

거부
부모 DELETE 참조 중인 고객 삭제

orders가 가리키는 customers.id=10을 삭제하려 합니다.

거부 또는 동작 적용
부모 UPDATE 참조 대상 키 수정

customers.id=20을 30으로 바꾸면 자식 FK가 끊깁니다.

거부 또는 동작 적용
정리: 자식 쪽 변경은 “존재하는 부모를 가리키는가”를 보고, 부모 쪽 변경은 “이미 가리키는 자식이 남는가”를 봅니다.