CS 공부

Database의 Key 본문

CS공부/데이터베이스

Database의 Key

kluiop1 2021. 7. 16. 23:35

자료의 고유성

관계형 데이터베이스의 중요한 요소들 중에 하나가 특정 주제의 정보들을 체계적으로 모아 놓는 것이다.

이때 중요한 것은 자료를 구분할 수 있어야 한다는 점이다.

 

Key 값 이란

자료의 고유성을 유지하기 위한 개념이다.

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

 

Key의 구별

 

엔티티 내에서 대표성을 가지는가

yes -> 주 식별자(Primary)

no -> 보조 식별자(Alternate)

 

단일 속성으로 식별되는가

Yes -> 단일 식별자

no -> 복합 식별자

 

엔티티 내에서 스스로 생성되었는가

yes -> 내부 식별자

no -> 외부 식별자

 

원래 업무적으로 의미가 있던 식별자 속성을 대체하는가

Yes -> 본질 식별자

no -> 인조식별자(일련번호 같은)

 

key의 특성

Key 종류

예시로 사용할 이미지

1. 후보키 (Candidate Key)

릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합을 의미. (기본키로 사용할 수 있는 속성들)

모든 릴레이션은 반드시 하나 이상의 후보키를 가져야한다.

릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야한다.

 

ex) <학생> 릴레이션에서 '학번'이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키가 될 수 있다. 즉 기본키가 될 수 있는 키들을 후보키라고 한다.

 

유일성 : Key로 하나의 Tuple을 유일하게 식별할 수 있음

최소성 : 꼭 필요한 속성으로만 구성

 

2. 기본키 (Primary Key)

후보키 중에서 선택한 주키(Main Key)

한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

Null 값을 가질 수 없다. (개체 무결성의 첫번째 조건)

기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.(개체 무결성의 두번째 조건)

Key의 특성 4가지를 만족해야함(최소성, 유일성 불변성, 존재성)

 

ex)

<학생> 릴레이션에는 '학번'이나 '주민번호'가 기본키가 될 수 있다.

<학생> 릴레이션에서 '학번'을 기본키로 정의되면 이미 입력된 '1001'은 다른 튜플의 '학번' 속성 값으로 입력할 수 없다.

 

<수강> 릴레이션에는 '학번'+'과목명'으로 조합해야 기본키가 만들어 질 수 있다.

왜냐면 <수강> 릴레이션에서는 '학번' 속성과 '과목명' 속성은 다른 튜플들과 구별되지 않기 때문에 개별적으로 기본키로 사용할 수 없다.

 

3. 대체키 (Alternate Key)

보조식별자. 후보키가 2개 이상일 때, 하나를 기본 키로 정하고 남은 후보키를 대체키라고 한다.

 

ex) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 된다.

 

 

4. 슈퍼키 (Super Key)

슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않는다.

릴레이션을 구성하는 모든 튜플에 대해 유일성만 만족하면 됨

 

ex)

<학생> 릴레이션에서는 '학번', '주민번호', '학번'+'주민번호', '학번'+'주민번호'+'성명' 등으로 슈퍼키를 구성할 수 있다.

또한 여기서 최소성을 만족시키지 못한다는 말은 '학번'+'주민번호'+'성명' 가 슈퍼키인 경우 3개의 속성 조합을 통해 다른 튜플과 구별이 가능하지만, '성명' 단독적으로 슈퍼키를 사용했을 때는 구별이 가능하지 않기 때문에 최소성을 만족시키지 못한다.

즉 뭉쳤을 경우 유일성이 생기고, 흩어지면 몇몇 속성들은 독단적으로 유일성 있는 키로 사용할 수 없는 것을 최소성을 만족하지 못한다고 한다.

 

5. 외래키 (Foreign Key)

관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성

 

외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용된다.

외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다. (참조 무결성 조건)

 

ex) <수강> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키이다.

 

6. 유니크 키 (UNIQUE KEY)

유일성을 가지기 위함입니다. 그러기 위해 설정한다고 생각하면 됩니다. 테이블에 있는 데이터를 유일하게 식별합니다. 그러기 위해, 무결성 이라는 제약 조건 중 하나입니다. 유일한 값을 식별하는 것이 주된 목적입니다. 이 목적에 맞게 사용해야 합니다. 따라서 null을 허용할 이유는 없다고 할 수 있습니다.

 

primary key와 unique key의 차이점

기본키는 즉, 프라이머리 키는 해당 테이블의 식별자 역할을 합니다. 바로 이 제약조건으로 테이블에 하나만 지정할 수 있습니다. 예를 들면, 사람을 식별할 때는 사람의 이름 대신 주민등록번호를 사용합니다. 그 이유는, 바로 유일한 성질을 가지고 있기 떄문입니다. 이렇게 중복성이 없는 유일성을 가진 성질을 의미합니다. 그 중 사용자가 선택한 것을 기본키라고 할 수 있습니다.

유니크 키는 유일성을 가지기 위해 설정한 것입니다. 따라서 지정이 되면 중복이 되는 것을 제어하는 역할을 하게 됩니다. 에를 들면 회원 이름을 중복으로 설정하지 않게 하는 것입니다. 중복되는 이름의 경우에는 뒤에 숫자를 붙여서 최초의 한 사람만 기입할 수 있도록 하는 것입니다.

 

결국, 프라이머리 키는 유니크 키의 성질을 포함하는 것을 알 수 있습니다. 그 중에, 설계자가 기본적으로 선택한 키라고 할 수 있습니다. 유니크키는 하나의 테이블에 각각 컬럼마다 지정이 가능합니다. 그러나 프라이머리키는 오직 하나만 설정할 수 있습니다. 

 

참고: https://limkydev.tistory.com/108

 

[DataBase] 키(Key)의 개념 및 종류

데이터 베이스 키(Key)의 개념 및 종류 키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성)입니다. *

limkydev.tistory.com

https://jjeongil.tistory.com/1234

'CS공부 > 데이터베이스' 카테고리의 다른 글

트랜잭션(Transaction) 1(트랜잭션이란+트랜잭션 작동방식)  (0) 2021.07.20
SQL vs NoSQL  (0) 2021.07.17
SQL Injection  (0) 2021.07.17
SQL-JOIN  (0) 2021.07.17
데이터 베이스 개요  (0) 2021.07.16