PK란?
- 테이블의 유일한 값을 가지는 필드
- 데이터의 중복이 없는 식별가능한 필드를 선정
- 테이블 1개당 PK필드 1개이상
- 중복, NULL, 공백은 불가
- 해당 PK필드는 다른테이블의 필드에서도 참조 가능
- NOT NULL + UNIQUE 속성을 합친것
FK란?
- 다른 테이블의 PK와 연결
- FK필드명은 PK필드명과 동일시하게 사용
- FK필드의 타입은 PK필드의 타입과 동일
- 참조하는 테이블에서 FK 필드 선언 (1:M 관계에서 M쪽이 참조하는 테이블)
PK & FK 관계
[1] 1:1 관계

한명의 사원증에 한명의 직원만이 갖는 관계
[2] 1:N 관계

부서 하나에 여러 직원이 있는 관계
[3] N:M 관계

자격증 여러개의 여러 직원들이 가지고 있는 관계
N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에, 서로의 PK 를 자신의 외래키 컬럼으로 갖고 있으면 된다.
일반적으로 N:M 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블(중간 테이블)을 생성해서 관리한다.
참고
https://velog.io/@baekgom/PK-vs-FK
https://keembloo.tistory.com/42