데이터베이스 키(Key)의 개념

2019. 5. 11. 19:10정보처리 산업기사/데이터베이스

반응형

튜플(Tuple)

릴레이션을 구성하는 요소로서 행을 의미한다. 같은 의미로 레코드(Record), 로우(Row)가 있다. 튜플은 릴레이션에서 유일해야 하므로 중복되지 않게끔 다른(Key) 값을 지닌다. 튜플의 수를 의미하는 카디날리티(Cardinality)를 사용.

 

 

애트리뷰트(Attirbute)

릴레이션을 구성하며 열을 의미하며, 속성이라고도 한다. 같은 의미의 용어로 칼럼(Column)이 있다. 애트리뷰트는 열을 의미하면서 열을 구성하는 한칸의 자료를 의미하기도 한다. 튜플의 카디날리티처럼, 애트리뷰트의 수를 의미하는 단어로 디그리(Degree)가 있다.

 

 

데이터베이스에서 말하는 키(Key)

키(Key)는 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 애트리뷰트이다.

 

 

다음 두가지의 릴레이션을 예로 알아보자.

 

<Student> 릴레이션

 

<Career> 릴레이션

 

후보키(Candidate Key)

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성을 말한다.
  • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.

ex) <Student> 릴레이션에서 'Number'나 'P.Num'은 다른 튜플(레코드)과 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키가 된다.

 

 

기본키(Primary Key)

  • 후보키 중에서 선택한 메인 키(Main Key)
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 애트리뷰트(속성)이다.
  • Null* 값을 가질 수 없다.
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
* Null 값은 아직 정의되지 않은 값을 의미하며, 0 또는 공백과는 다른 의미.

ex) <Student> 릴레이션에서는 'Number'이나 'P.Num'가 기본키가 될 수 있고, <Career> 릴레이션에서는 'Number'+'Class'으로 조합해야 기본키가 만들어진다.

ex) 'Number'가 <Student> 릴레이션의 기본키로 정의되면 이미 입력된 '10001'은 다른 튜플의 'P.Number' 속성의 값으로 입력할 수 없다.

 

 

대체키(Alternate Key)

  • 후보키가 2개 이상일 때 기본키를 제외한 나머지 후보키들을 말하며, 보조키라고도 한다.

ex) <Student> 릴레이션에서 'Number'를 기본으로 정의하면 'P.Number'는 대체키가 된다.

 

 

슈퍼키(Super Key)

  • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성**은 만족시키지만, 최소성**이라는 조건은 만족시키지 못한다.
** 최소성과 유일성 : 'Number'+'P.Number'를 사용하여 슈퍼키를 만들면 다른 튜플들과 구분할 수 있는 유일성은 만족하지만, 'Number'나 'P.Number' 하나만 가지고도 다른 튜플들을 구분할 수 있으므로 최소성의 조건을 만족하지 못함.

ex) <Student> 릴레이션에서는 'Number', 'P.Number', 'Number+P.Number', 'Number+Name', 'P.Number+Name' 등으로 슈퍼키를 구성할 수 있다.

 

 

외래키(Foreign Key)

  • 관계(Relationship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성
  • 관계형 데이터 모델에서 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용된다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력될 수 없다.

ex) <Career> 릴레이션이 <Student> 릴레이션을 참조하고 있으므로 <Student> 릴레이션의 'Number'은 기본키이고, <Career> 릴레이션의 'Number'는 외래키이다.

ex) <Career> 릴레이션의 'Number'에는 <Studnet> 릴레이션의 'Number'에 없는 값은 입력할 수 없다.

 

 

반응형