CS/데이터베이스

[CS] 데이터베이스 - 키

장아장 2023. 6. 9. 22:43

나 혼자 산다 체널에서 말하길 집에서 농사짓는 사람인줄 안다고 한다. 이게 세대차이인가???

키에 대해서 알기 전에 두 가지를 알 필요가 있다. 

  • 유일성 : 다른 튜플에 중복되는 값이 없는 성질(유일성을 갖춘 것들을 슈퍼키라고 부른다.)
  • 최소성 : 다른 속성과 묶여 판단되는 것이 아닌, 단순 속성 자체로 판단될 수 있는 성질, 그리고 최대한 단순한 상태

이를 종합해 유일성과 최소성을 갖춰야 기본키가 될 수 있다고 한다. 

유일성 + 최소성 = 속성 하나로 이루어진 데이터이며 다른 튜플과 중복되지 않는 값인 상태

를 갖춰야 기본키로 쓸 수 있다. 

 

그러면 기본키는 뭘까?

  • 유일성과 최소성을 만족시킨다. 
  • null값을 허용하지 않으며 중복되지 않아야 한다(유일성)
  • 기본키는 자연키, 인조키중에 더 단순하게 생긴 것을 사용한다(최소성)

이런 키를 기본키라고 한다. 

이런 녀석을 찾기 위해 우리는 후보키 라는 것을 정한다. 

기본키가 될 자질(유일성 & 최소성)이 있는 녀석들을 후보키라고 한다. 

후보키중에 기본키가 되지 못하고 나가 떨어진 것들을 대체키라고 한다. 

 

근데, 우리는 MySQL을 쓰면서 기본키로써 알게모르게 인조키를 써왔다. 

아아... 이것은 '인조키' 라는 거다...

인조키는 우리가 자연적으로 들어온 데이터를 이용한 키(자연키)가 아닌, 인조적으로 만든 기본키이다. 

외래키는 관계를 표현하기 위해 다른 테이블의 기본키를 가져와 사용한 상태이다. 

이에 대해서는 저번처럼 JPA의 관계를 찾아보자!!!