📊 Database

[Database] Key의 종류와 개념

date
May 16, 2023
slug
database
author
status
Public
tags
Tech
summary
type
Post
thumbnail
updatedAt
Jul 11, 2023 02:50 PM
category
📊 Database

Key

  • Key
    • : Tuple을 구별하기 위한 Attribute 집합이다.
      고유해야 한다. (중복된 값이 있으면 안 된다.)
  • Super Key 수퍼키
    • Unique하게 Tuple을 식별할 수 있는 Attribute의 집합이다.
    • Super Key는 테이블에서 유일한 튜플을 식별할 수 있는 하나 이상의 속성(열)의 집합이다. 즉, 테이블에 있는 모든 속성의 조합을 사용하여 유일한 튜플을 식별할 수 있는 것이다.
    • 이러한 이유로 Super Key는 테이블에서 중복을 제거하는 데 사용되는 기본 개념이다.
  • Candidate Key 후보키 ✨x5
    • Candidate Key는 테이블에서 튜플을 유일하게 식별할 수 있는 최소한의 속성(열) 집합이다.
    • 즉, 테이블에 존재하는 Super Key 중에서 최소한(Minimal)의 열로 구성된 것이다. Candidate Key는 테이블에서 유일성, 최소성 및 불변성을 보장한다.
    • 후보키로 사용 가능한 속성의 집합 중에서 다른 속성을 모두 제외해도 여전히 유일성을 만족하는 속성들의 집합이다.
    • ex) 학번, 주민등록번호 : 각각으로 유일무이함!
  • Primary Key 기본키 ✨x 300
    • Primary Key는 후보키(Candidate Key) 중에서 대표적인 식별자로 선택된 것을 말한다.
    • 따라서 Primary Key는 반드시 후보키(Candidate Key) 중에서 선택되며, 해당 릴레이션에서 유일해야 하며, Null 값을 가질 수 없다.
    • Entity Integrity 제약사항:
      • Entity Integrity를 보장하기 위해서는 테이블에서 기본 키를 반드시 설정해야 하며, 기본 키는 NULL 값을 가질 수 없다. 또한, 동일한 값을 가진 행이 중복해서 삽입되지 않도록 해야 한다. 데이터베이스의 무결성(integrity)을 유지하기 위한 중요한 제약 조건 중 하나이다.
    • ex) 학번 : 대표적으로 구별하는 key
  • Foreign Key 참조키, 외래키(FK) ✨x 300 (내가 설정할 수 있음.)
    • Foreign Key는 다른 테이블의 Primary Key와 연결된 속성(열)이다.
    • Foreign Key는 테이블 간의 관계를 표현하는 데 사용된다.
    • Foreign Key는 다른 테이블의 Primary Key와 일치해야 하므로 참조 무결성을 유지하는 데 중요한 역할을 한다.
    • 참조하는 relation에서 primary key가 아닐지라도, 참조되는 relation 에서 primary key인 경우 해당된다.
    • Referential Integrity 참조 무결성:
      • 반드시 참조된 relation의 PK 값에 존재하거나 NULL이어야 함.
😃
예를 들어, 학생 정보를 저장하는 students 테이블과 학생이 수강한 과목 정보를 저장하는 courses 테이블이 있다고 가정해보자. students 테이블에는 학생 정보가 저장되어 있고, 각 학생은 고유한 ID 번호를 가지고 있다. courses 테이블에는 각각의 과목에 대한 정보가 저장되어 있고, 각 과목에도 고유한 ID 번호가 있다. 하나의 학생은 여러 과목을 수강할 수 있으므로, courses 테이블에는 해당 학생의 ID 번호를 참조하는 foreign key가 필요하다. 이를 구체적으로 나타내면, courses 테이블에는 student_id 열이 있고, 이 열은 students 테이블의 id 열을 참조한다. 이러한 관계를 통해 학생이 수강한 과목 정보를 찾을 수 있다. 예를 들어, student_id가 1인 학생이 수강한 모든 과목을 찾으려면, courses 테이블에서 student_id 열이 1인 모든 레코드를 찾으면 된다. 이때 student_id 열은 foreign key로서 students 테이블의 primary key인 id 열을 참조하고 있으므로, 두 테이블 간의 관계를 이용하여 데이터를 연결할 수 있다.