본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/데이터베이스

[데이터베이스] Key

by soobinhand 2021. 10. 29.
728x90

Key

  • 하나의 tuple을 다른 tuple들로부터 구별하는 방법입니다.
  • 종류에는 superkey, candidate key, primary key, foreign key가 있습니다.

Superkey

  • 고유한 값들로만 있는 값들의 집합입니다.
  • 중복이 있다면 superkey가 될 수 없습니다.
  • 예를 들어서 주민 번호는 superkey가 될 수 있지만 사람 이름은 될 수 없습니다.

Candidate key

  • 우선 정의는 이렇습니다. 
  • A minimal superkey for a relation.
  • 즉 minimal superkey 는 candidate key입니다.
  • 예시
  • {ID, name}은 superkey입니다. 하지만 부분집합, 즉 {ID}, {name}에서 {name}은 superkey가 아니지만 {ID}는 superkey입니다. 따라서 candidate key가 될 수 없습니다. (공집합과 자기자신을 제외한 나머지들이 부분집합에 해당합니다.)
  • 결론은 superkey의 부분집합 모두가 superkey가 아니라면 그건 minimal key이며 즉 candidate key가 됩니다.
  • {ID}같이 속성이 하나만 들어온 경우엔 {ID}가 superkey라면 candidate key입니다.

Primary Key

  • DB 설계자가 선택한 candidate key입니다. 
  • candidate key는 여러개가 올 수 있는데, 그 중 하나가 Primary key가 되는 것입니다.
  • 줄여서 PK라고 하며 테이블엔 무조건 하나의 PK만 존재할 수 있습니다.
  • 보통 PK는 밑줄이 그어져 있습니다. 근데 밑줄이 두개에 쳐져있다면, 그 두개를 합쳐서 하나로 만든게 PK라는 뜻입니다.

Foreign Key

  • 다른 테이블의 PK를 가져온 것입니다.
  • 보통 join을 할 때 많이 사용하는데, 다른 릴레이션과 연관관계를 이루게 됩니다.
  • 보통 화살표로 표현을 하며 Foreign key -> Primary Key 로 표현합니다.
728x90

댓글