본문 바로가기
MySQL

[SQL] 기본키(PK)와 외래키(FK)

by 스응 2023. 3. 7.
728x90
728x90

키 (Key, 식별자)

  - 레코드를 검색/정렬할 때, 다른 레코드들과 구별할 수 있는 기준이 되는 속성

#  키의 특성

  1) 유일성

      : 식별자에 의해 모든 레코드들이 유일하게 구분됨

   2) 최소성

      : 꼭 필요로 하는 최소한의 속성만으로 식별자가 구성됨

 

키의 종류

#  기본키 (PK, Primary Key)

  - 테이블의 각 레코드들을 고유하게 식별하는 컬럼 (or 컬럼 집합)

  - NULL 값을 허용하지 않음 → 자동으로 NOT NULL로 설정됨

  - 기본키에 대한 인덱스는 자동으로 추가됨

  - CREATE 문에서 설정하기 : https://young0105.tistory.com/114

#  후보키 (Candidate Key)

  - 테이블에서 각 레코드들을 구별하는 데 기준이 될 수 있는 컬럼

  - 유일성과 최소성을 만족하는 컬럼 (or 컬럼 집합)   

#  대체키 (Alternate Key)

  - 후보키 중에서 기본키로 선택되지 않은 컬럼

#  슈퍼키 (Super Key)

  - 모든 레코드에 대해 유일성은 만족하지만 최소성을 불만족하는 컬럼

#  외래키 (FK, Foreign Key)

  - 다른 테이블의 기본키를 기반하여 생성된 컬럼 (다른 기본키를 참조함)

  - 테이블 간의 참조 데이터 무결성을 위한 제약조건

  - 하나의 테이블에 여러 외래키 사용 가능

  - 외래키를 해당 테이블의 기본키로 사용 가능

  - CREATE 문에서 설정하기 : https://young0105.tistory.com/114

  - 삭제 옵션을 지정하지 않은 경우, 다른 테이블에서 참조하는 외래키가 있다면

     해당 외래키를 삭제해야 참조되는 테이블을 삭제할 수 있음

  

  *** 주의

      - 인덱스가 생성된 컬럼만 참조할 수 있음

          → 부모 테이블의 컬럼에 PK or UNIQUE를 설정해서 인덱스를 자동으로 생성하거나,

               그렇지 않다면 CREATE INDEX로 인덱스를 따로 생성해줘야 함

320x100
반응형

'MySQL' 카테고리의 다른 글

[SQL] 조인 (JOIN)  (0) 2023.03.08
[SQL] 관계 차수  (0) 2023.03.07
[SQL] 인덱스  (0) 2023.03.07
[SQL] WHERE 조건절 & 연산자  (0) 2023.03.07
[SQL] DML - 데이터 삽입/변경/삭제 (INSERT, UPDATE, DELETE)  (0) 2023.03.06

댓글