dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • kotlin
  • 머신러닝
  • cs
  • 딥러닝
  • gcp
  • 인공지능
  • Guacamole
  • 자바
  • 침입탐지
  • 데이터베이스
  • 클라우드
  • 자료구조
  • db
  • python #백준
  • CTF
  • java
  • 웹해킹
  • 네트워크
  • 코드리뷰
  • 포너블

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

[DB] 키(KEY) 정리
Database

[DB] 키(KEY) 정리

2022. 9. 27. 12:55
728x90


키(KEY)

키는 DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다.

무엇인가를 유일하게 식별한다는 의미가 있으며, 키의 종류로는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다.

 

https://mblogthumb-phinf.pstatic.net/20151215_173/hj_veronica_1450161230641pj2HE_JPEG/4.png?type=w800

 

[ 유일성 ]

- 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질

- 여러 개의 튜플이 존재할 때 각각의 튜플을 서로 구분할 수 있어야한다. 즉, 각각의 튜플은 유일해야 한다.

[ 최소성 ]

- 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질

- 키를 구성하는 속성들이 각 튜플을 구분하는데 곡 필요한 속성들로 구성되어 있는가?

 

 

 슈퍼키 (Super Key)

 

[유일성 O, 최소성 X]

 

테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다.

슈퍼키는 유일성의 특성을 만족하며, 키 값이 같은 튜플은 존재할 수 없다. 

어떤 속성끼리 묶던 중복값이 안 나오고 서로 구별이 가능하면 슈퍼키가 될 수 있다.

 

 

 후보키 (Candidate Key)

 

[유일성 O, 최소성 O]

 

후보키는 슈퍼키 중 최소성을 만족하는, 즉 유일성과 최소성을 모두 만족하는 속성들의 집합이다.

후보키는 기본키가 될 수 있는 후보들을 의미한다.

 

 

 기본키 (Primary Key)

 

[ 기본키 속성 : NULL 값을 절대 가질 수 없음 + 중복된 값 가질 수 없음 ]

 

위에서 각 튜플을 구별할 수 있으며, 유일성과 최소성을 모두 만족하는 후보키가 구해졌다.

후보키는 한 테이블 내에서 여러 개 존재할 수 있는데, 여기서 기본 키는 여러 후보키 중 오직 1개만 지정할 수 있다. 

모든 후보키가 기본키가 되는 것은 아니다.

 

다음의 기준을 통과해야한다.

  • NULL 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적절하다.
  • 단순한 후보키를 기본키로 선택한다.

 

 

 대체키 (Alternate Key)

 

후보키 중에서 선정된 기본키를 제외한 나머지 후보키를 의미한다.

 

대체키는 기본키를 대신할 수 있는 자격은 있지만, 기본키의 기준에 부합하지 않아 선택받지 못한 키들을 의미한다.

대체키는 '보조키'라는 이름으로도 불린다.

 

 

 외래키 (Foreign Key)

 

[다른 릴레이션의 기본키 참조]

테이블이 다른 테이블의 데이터를 참조하여 테이블 간의 관계를 연결하는 것이다.

 

  • 참조 될 A 테이블이 먼저 만들어지고 참조하는 B테이블에 값이 입력
  • 참조될(A) 열의 값은 참조될(A) 테이블에서 기본키(Primary Key)로 설정
  • 외래키는 참조되는 테이블의 기본키와 동일한 키 속성을 가짐
  • 참조되는 부모테이블이 먼저 생성된 뒤, 데이터를 넣고, 참조하는 자식 테이블이 그 다음에 생김
  • 부모 테이블 먼저 삭제 될 수 없다. 왜냐하면 부모 테이블을 참조하는데 부모 테이블이 삭제되면 자식테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 발생한다.
  • 외래키 관계에서는 자식테이블을 먼저 삭제해주어야한다.

참고

| https://jerryjerryjerry.tistory.com/49

| https://ggop-n.tistory.com/78

| https://deftkang.tistory.com/51

| https://kosaf04pyh.tistory.com/201

728x90

'Database' 카테고리의 다른 글

[DB] 정규화 & 비정규화  (0) 2022.10.07
[DB] Index & B-Tree  (2) 2022.10.05
[DB] SQL vs NoSQL  (4) 2022.10.03
[DB] SQL Injection  (2) 2022.09.30
[DB] 조인(JOIN) 정리  (0) 2022.09.28
    'Database' 카테고리의 다른 글
    • [DB] Index & B-Tree
    • [DB] SQL vs NoSQL
    • [DB] SQL Injection
    • [DB] 조인(JOIN) 정리
    dalgorithm
    dalgorithm

    티스토리툴바