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

2023. 3. 7. 18:29·SQL
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'SQL' 카테고리의 다른 글

[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
'SQL' 카테고리의 다른 글
  • [SQL] 조인 (JOIN)
  • [SQL] 관계 차수
  • [SQL] 인덱스
  • [SQL] WHERE 조건절 & 연산자
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    Hotkeys
    errorNote
    cs
    http
    면접
    Codeigniter
    Swing
    SEO
    java
    HTML
    jsp
    SpringBoot
    git
    zapier
    Wordpress
    tailwindcss
    php
    오블완
    CSS
    SQL
    SWAGGER
    개발일지
    vuejs
    jQuery
    typeScript
    js
    티스토리챌린지
    C#
    Android
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[SQL] 기본키(PK)와 외래키(FK)
상단으로

티스토리툴바