외래키 제약조건 (Foreign Key Constraint) 이란?
DB 내부 User
테이블에 다음과 같은 데이터가 있다고 가정하자.
데이터는 임의로 JSON 형태로 표현한다.
[{
id: 1,
username: 'jake'
},{
id: 2,
username: 'jack'
}]
그리고 Comment
테이블에는 다음과 같은 데이터를 넣으려고 한다.
{
id: 1,
text: '첫번째 댓글입니다!'
userId: 3
}
보통 Comment
테이블에 위와 같은 데이터를 넣는다고 가정할 때, join
과 같은 SQL 문을 통해 userId
에 있는 3
이라는 숫자를 User
테이블에 매핑시켜서 해당하는 username
을 찾으려고 생각한다. 그런데 넣으려는 시점인 지금 사실 ID 가 3
인 유저는 현재 존재하지 않는다.
현재 외래키 제약조건(Foreign Key Constraint) 가 걸려있다면 아래의 Comment
데이터는 들어가지 않을 것이다. 왜냐하면 외래키 제약조건 위반이기 때문이다. 외래키 제약조건은 외래키로 사용될 값이 실제로 연결될 테이블에 존재하는지 확인한다. 그러나 외래키 제약 조건이 걸려있지 않다면, 당연히 삽입되는데 아무런 문제가 없다.