데이터베이스의 Key에 대해 알아보자

데이터베이스 용어 정리

키에 대해 공부하기 전, 데이터베이스에서 많이 등장하는 용어에 대해 간략하게 정리해보자.

릴레이션 (Relation)

릴레이션은 DB 테이블을 의미한다.

행(Row) / 튜플(Tuple) / 레코드(Record)

릴레이션에서 한 Row를 의미한다. 튜플은 레코드라고 불리기도 한다.

열(Column) / 필드(Field) / 속성(Attribute)

테이블에 저장되는 항목들을 의미한다. 예를 들어서, Sales 라는 테이블을 만들 때, 판매날짜/판매상품/고객이름 등이 속성이 될 수 있다.

Key란?

데이터베이스에서 Key란, 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)이다.

즉, 각 행들을 구분하는 유일한 식별자라는 것이다. 예를 들면, 대한민국 국민들의 데이터를 저장한다면 주민번호가 Key가 될 수 있는 것이다.

최소성 vs 유일성

최소성

하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질을 말한다. 위에서 말한 주민번호가 최소성을 만족하는 키라고 할 수 있다.

유일성

키를 구성하는 속성들 중에서 최소로 필요한 속성들로만 키를 구성하는 성질을 말한다.

예를 들어서, (이름, 주소, 주민번호, 나이) 가 있다고 해보자. (주민번호, 나이) 가 키라면, 주민번호만으로도 식별할 수 있기 떄문에 이는 유일성을 만족하지 않는다. 따라서, 주민번호 키만이 유일성을 만족하는 것이다.

Key의 역할

Key는 데이터베이스에서 다양한 역할을 한다.

  • 데이터 중복 방지

데이터베이스에 저장된 레코드들은 각각 유일한 Key를 가짐으로써, 각 레코드를 구분하여 데이터 중복을 방지할 수 있다.

  • 레코드 검색 및 정렬

Key를 사용하여 레코드를 찾거나 정렬할 수 있다.

  • RDBMS에서 레코드 연결

RDBMS에서 PrimaryKey와 ForeignKey를 사용하여 레코드 간의 관계를 설정할 수 있다.

PrimaryKey: 테이블에서 유일하게 식별하는 Key ForeignKey: 다른 테이블의 PrimaryKey를 참조하는 Key

Key의 종류

image

Key에는 다양한 종류가 존재하는데 이에 대해 알아보자.

슈퍼키 (Super Key)

유일성 O / 최소성 X

테이블에서 유일하게 식별할 수 있는 속성 또는 속성들의 집합을 말한다.

image

예를 들어, 위 테이블에서는 (id) (이름, 과목) (id, 이름).. 이 슈퍼키가 될 수 있는 것이다.

슈퍼키는 어떤 속성끼리 묶던, 중복값 없이 서로 구별만 할 수 있으면 된다.

후보키 (Candidate Key)

유일성 O / 최소성 O

슈퍼키 중에서 최소한의 속성으로 구성된 키를 말한다.

image

해당 테이블에서 후보키는 (id) (이름, 과목) 이 될 수 있다.

한 테이블에 여러 개의 후보키가 존재할 수 있으며, 이중에서 기본키(Primary Key)로 사용할 속성 집합을 선택할 수 있다.

기본키 (Primary Key)

후보키 중에 선택받은 키를 기본키라고 한다.

테이블에서 반드시 하나만 존재해야 하며, 모든 행에 대해 유일하고 Null 값을 포함하지 않아야 한다.

대체키 (Alternate Key)

대체키란, 기본키(PrimaryKey)를 제외한 나머지 키를 말한다.

대체키는 해당 테이블에서는 기본키가 될 수 없지만, 다른 테이블에서 외래키로 사용할 수 있다.

UniqueKey

UniqueKey란, 유일성(uniqueness)을 강제하는 제약 조건(constraint)으로, 중복값을 허용하지 않는다.

여러 개의 속성을 조합하여 만들 수 있으며, Null 값을 포함할 수 있다. 또한, UniqueKey는 외래키가 될 수 있다.