컴퓨터(Computer Science)/데이터베이스, DB, DataBase

데이터베이스에서의 키(Key)

게임이 더 좋아 2020. 12. 11. 22:02
반응형
728x170

 

데이터베이스를 다룰 때 항상 우린 키를 이용한다. 

왜인지 알아보자

 

키가 필요한 이유?

 

저번에 글에서 레코드 간의 순서가 의미가 없다고 했다. 그렇다면 레코드의 무엇이 의미가 있을까 생각해봤더니

레코드를 고르는 방법이다.

 

데이터베이스에서 레코드의 순서는 의미가 없다. 하지만 우리가 사용하려는 것은 레코드다!

그러므로 레코드를 구분해주는 무엇인가가 필요한데 그것이 바로 키(key)이다.

 

키의 특징으로는

필드들의 일부로 각 레코드들을 유일한 식별자(identifier) 역할

일반적으로 하나의 필드를 지정하여 key로 정한다 (대부분 id를 키로 가짐)

+여러 개의 필드를 키로 구성할 수 있음 (복합 키 composite key)라고도 부름

레코드 간의 서로 같은 값이 있으면 키가 될 수 없음 -> identification이 불가능하기 때문

 

관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법이다.

-> 데이터를 사용하려면 키는 무조건 사용해야한다는 것을 의미

 


하지만 키에게도 여러가지 종류의 키가 있었으니 그것이 바로

1. 슈퍼키(super key)

2. 후보키(candidate key)

3. 기본키(primary key)

그 삼형제이다.

 

슈퍼키는 아무런 제약조건 없이 레코드들을 식별할 수 있는 필드의 집합을 의미한다.

(사람으로 친다면 주민번호, 대학생은 학번, 여권번호 등)

 

후보키는 최소한의 필드만으로 구성된 키이다.

(슈퍼키와 물론 겹칠 수 있다.)

 

기본키는 후보키 중에서 식별자로 정의한 하나의 키이다.

되도록 하나의 필드로 구성되는 것이 베스트이다.

 

++ 외래 키(foreign key)

외래키는 다른 테이블의 기본 키를 참조하는 필드집합이다.

이해가 안간다??? 밑에 설명과 그림을 보자

 

 

번외

** 키는 NULL이 될 수 있나??

물론 NULL값을 가질 수 있다. 근데 만약 2개의 레코드가 NULL인 키 값을 가지면 둘이 구분이 가능한가?

불가능하다. 즉 기본키로는 NULL이 될 수 없다는 말이다.

 

 

728x90
반응형
그리드형