본문 바로가기

CS/데이터베이스 DB

[데이터베이스] 키(keys)

1. 테이블의 특성

   1) 중복된 레코드가 존재하지 않는다.

    - 테이블 인스턴스는 레코드들의 "집합"이다.

       중복된 레코드(속성 값이 모두 같은 레코드)가 있더라도 

       테이블 인스턴스는 집합이므로 하나의 레코드로 본다.

   2) 레코드간의 순서는 의미가 없다.

    - 테이블 인스턴스는 레코드들의 "집합"이므로 순서는 의미가 없다.

   3) 레코드 내에서의 필드의 순서가 의미가 없다.

    - 테이블 스키마는 필드들의 "집합"이므로 순서가 의미 없다.

   4) 키가 필요한 이유

    - 레코드 간의 순서가 의미가 없으므로 레코드를 구분하기 위해서 각 레코드의 값을 이용한다.

    - 즉 키는 객체의 식별 등을 위해 사용하는 속성의 집합이다.

  5) 키(key)

   - 데이터를 검색, 입력, 수정, 삭제하기 위해서는 데이터를 식별할 수 있어야 한다.

     따라서 테이블 인스턴스는 속성의 값에 따라 식별한다.

     즉 키는 개체를 식별하기 위한 속성의 집합이다.

 

2. 키(key)

 1) 슈퍼키(Super Key)

   - 개체 집합에서 어떤 개체를 유일하게 가리킬(식별할) 수 있는 하나 이상 속성의 집합

   - 모든 레코드에서 대해서 어떤 속상 집합의 값들이 모두 다르다면

     해당 속성 집합은 슈퍼키가 된다.

   - 어떤 테이블에서 어떤 키가 슈퍼키가 될지는 상황과 조건에 따라 결정된다.

2) 후보키(Candidate Key)

   - 주어진 슈퍼키의 속성에서,

     속성을 하나라도 뺀다면 슈퍼키가 될 수 없는 경우 이 속성의 집합을 후보키라 한다.

    → minimal super key(최소성)

     다시 말해 속성을 모두 다 가지고 있어야만 슈퍼키가 된다면 후보키이다.

   - 후보키는 슈퍼키의 식별성에 최소성을 더한 것이다.

   - 속성 하나짜리 슈퍼키는 바로 후보키가 된다.

3) 기본키(Primary Key)

   - 레코드 식별의 기준이 되는 속성 집합이라 할 수 있다.

   - 슈퍼키들 중에서 후보키를 고른다.

     만일 후보키가 하나 뿐이면 그것이 저절로 기본키가 된다.

     만일 주어진 집합에 후보키가 둘 이상이 있으면,

     데이터베이스를 설계할 때 그 가운데 하나를 기본키로 고르고 나머지는 후보키가 된다.

   - 기본키는 테이블마다 하나씩 정하는 것이 좋다.

     (다수의 DBMS에서 기본키를 정하면 그 기본키를 가지고 primary index 구조를 만들어준다.)

   - 기본키는 null이 될 수 없다.

     (예를 들어 휴대폰 번호는 기본키가 될 수 없다.

     휴대폰을 가지고 있지 않은 사람도 있을 수도 있기 때문에

     그런 경우 null이 될 수 있으니 기본키가 안된다.)

4) 외래키(Foreign Key)

  - 다른 테이블에서 기본키인 속성의 집합이 주어진 테이블에 있을 때,

    이 속성의 집합을 주어진 테이블에서 외래키라고 한다.

  - 외래키는 null이 될 수도 있다.

  - 외래키는 참조키라고도 한다. 즉 다른 테이블과의 관계를 표현하기 위한 것이기도 하다.

  - 외래키는 참조 무결성을 지켜줄 수 있다.