Primary Key, Foreign Key 에 대한 설명 은 개발자 면접에서 자주 나오는 질문 중의 하나!
테이블 내에서 유일하게 존재
하는 값의 조합을 설정해서, 중복된 데이터가 테이블에 삽입되는 것을 방지
해당 필드가 NOT NULL 과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.
다른 기본 키를 참조
하는 속성 or 속성들의 집합
참조 관계의 기본 키와 같은 속성을 가짐
데이터가 새롭게 추가될 때, 외래 키에 해당하는 값이 외래 키가 참조하는 테이블에 존재하는지를 확인
하나의 테이블을 다른 테이블에 의존하게 만듦 (두 테이블을 연결하는 다리 역할)
데이터의 무결성을 보장
DB 는 무조건 다(N)쪽이 외래 키를 갖는다
각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면, Users 테이블과 Phonebook 테이블은 1:1 관계
한 쌍의 부모(1) 中 여러 명의 자식(N)들이 어떤 부모에 속해 있는지 표현해야 한다.
따라서, 부모 테이블의 PK 를 자식 테이블에 FK 로 집어 넣어 관계를 표현한다.
(즉, 부모 테이블(1)에서는 내 자식들이 누구인지 정보를 넣을 필요가 없고,
자식 테이블(N)에서만 각각의 자식들이 자신의 부모 정보(FK)를 넣음으로써 관계를 표현)
N:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말한다. (서로가 서로를 1:N 관계로 보고 있는 것)
N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에, 서로의 PK 를 자신의 외래키 컬럼으로 갖고 있으면 된다.
일반적으로 N:M 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블(중간 테이블)을 생성해서 관리한다.