키key

키,key =키,key =,key .
{

키,key값,value과 pair(쌍, 짝, 2-tuple)을 이루고 그 사이에 함수관계(associated_array , hash_function , dictionary , mapping , ....)를 이루는 경우가 많이 등장
키-값,key-value =,key-value .
{
키,key값,value과 pair(쌍, 짝, 2-tuple)을 이루고 그 사이에 함수관계(associated_array , hash_function , dictionary , mapping , ....)를 이루는 경우가 많이 등장



} // key-value


public-key_cryptography =,public-key_cryptography . public-key_cryptography
{
public key cryptography


} // public key cryptography


} // 키,key
이하 예전의 DB-specific 내용

릴레이션relation에서 튜플tuple들을 구별하는 역할을 하는 속성 또는 속성들의 집합.
tuple을 유일하게 구별하기 위해서는, 모든 속성attribute을 이용하는 것 보다는, 일부 속성만 이용하는 것이 효율적. tuple을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키key가 담당.

튜플tuple을 유일하게 식별할 수 있는 하나 이상의 속성attribute 집합.
모든 릴레이션relation를 가짐.
는 릴레이션이 단순한 테이블table이 아님을 보여주는 대표적 개념. QQQ 다른건?
여러 무결성제약조건integrity_constraint과 관련하여 중요한 역할을 함.[1]

먼저 키와 관련된 속성 두가지.[2]
유일성uniqueness : 한 릴레이션relation에서 모든 튜플tuple은 서로 다른 키key 값을 가져야 함.
최소성minimality : 꼭 필요한 최소한의 속성들로만 키를 구성

다섯 가지 키key의 종류
수퍼키super_key : (relation에서 모든 tuple에 대해)
유일성uniqueness을 만족하는 속성들의 집합
후보키candidate_key : (relation에서 모든 tuple에 대해)
유일성uniqueness최소성minimality을 (둘 다) 만족하는 속성 또는 속성들의 집합
기본키primary_key :
후보키 중에서 기본적으로 사용하기 위해 선택한 키
대체키alternate_key
(후보키 중에서) 기본키로 선택되지 않은 후보키
외래키foreign_key
다른 릴레이션relation의 기본키를 참조하는 속성 또는 속성들의 집합

슈퍼키 - 유일성
후보키 - 유일성 + 최소성
기본키 - 후보키 중에서 선택한 것, null값을 가질 수 없음
대체키 - 후보키 중에서 선택하지 않은 것
외래키 - 관계를 맺는 두 relation에서, 참조하는 relation에 attribute로 지정되는 키 값[3]



1. 수퍼키 super key

수퍼키super_key
유일성(uniqueness)의 특성을 만족하는 속성 또는 속성들의 집합.
ex. 고객 relation에서, 나이/직업/적립금/이름 등은 값이 같은 고객이 있을 수 있으므로 유일성을 만족 못해서 super key가 될 수 없음.[4]

모든 tuple에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함.[5]



2. 후보키 candidate key

후보키candidate_key
튜플tuple을 구분할 수 있는 최소한의 속성attribute만으로 구성된 키key
유일성(uniqueness)과 최소성(minimality)을 만족하는 속성 또는 속성들의 집합.
(최소성이란: 꼭 필요한 최소한의 속성attribute들로만 키key를 구성하는 특성. 키를 구성하는 속성들 중 하나만 없으면 유일하게 튜플tuple을 구별할 수 없음.)
수퍼키super_key 중에서 최소성을 만족하는 것이 후보키가 된다.
[6]

릴레이션relation의 모든 tuple에 대해 유일성최소성을 만족시켜야 함.

유일성uniqueness : 하나의 키key 값으로 하나의 tuple만을 유일하게 식별할 수 있어야 함.
최소성minimality : 모든 레코드record들을(tuple들을) 유일하게 식별하는 데 꼭 필요한 속성attribute으로만 구성되어야 함.[7]

3. 기본키 primary key

기본키primary_key
후보키candidate_key가 두 개 이상인 경우에 그 중 하나로 선택된 키key
relation에서, 튜플tuple을 구별하기 위해 여러 후보키candidate_key를 모두 쓸 필요는 없다.
여러 후보키 중에서 기본적으로 쓸 키를 반드시 선택해야 하는데, 이것이 기본키.
기본키는 relation table에서 속성attribute 이름에 밑줄을 그어 표기.

기본키 선택 기준
  • 널 값을 가질 수 있는 속성이 포함된 후보키candidate_key기본키로 부적절.
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적절.
    속성 값이 바뀔 때마다 기본키 값으로 적합한지 여부를 판단하는 것은 번거로움.
  • 단순한 후보키가 좋음.
    정수나 단순 문자열 등
[8]

후보키 중에서 특별히 선정된 주키(main key).
중복된 값과 null 값을 가질 수 없음.
후보키의 성질인 유일성uniqueness최소성minimality을 가짐.
튜플을 식별하기 위해 반드시 필요한 키임.[9]

4. 대체키 alternate key

대체키alternate_key
기본키primary_key로 선택되지 못한 후보키candidate_key.
키의 관계 그림은 링크 참조.
[10]

대체키란, 후보키가 둘 이상일 때, 기본키를 제외한 나머지 후보키를 뜻함.[11]

5. 외래키 foreign key

외래키foreign_key
어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키primary_key가 되는 키.
i.e. 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합.
릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요.
[12]

다른 릴레이션relation기본키primary_key를 참조하는 속성 또는 속성들의 집합.
참조되는 relation의 기본키와 대응되어, relation간의 참조 관계를 표현.[13]

6. 관계 데이터 모델에서, 무결성 제약조건

키와 관련한 무결성 제약조건(integrity constraint)[14]
  • 개체 무결성 제약조건 (entity integrity constraint) - 기본키에 대한 규칙
    : 기본키primary_key를 구성하는 모든 속성attribute은 null 값을 가질 수 없다. 가지면 안된다. 가지면 튜플tuple의 유일성을 판단할 수 없어, 기본키의 목적을 상실한다.[15]
  • 참조 무결성 제약조건 (referential integrity constraint) - 외래키에 대한 규칙
    : 외래키foreign_key는 참조할 수 없는 값을 가질 수 없다. 외래키는 자신이 참조하는 릴레이션에 기본키 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 한다. 외래키가 자신이 참조하는 릴레이션의 기본키와 상관이 없는 값을 가지면, 두 릴레이션을 연관시킬 수 없으므로, 외래키라는 의미가 없어진다.[16]

7. 다섯가지 중요 키를 제외하고, 그 외의 다른 키? 돌아다니다 우연히 발견한것.

7.2. surrogate_key

Srch:surrogate_key
{
surrogate key 대리키
artificial key 인공키

surrogate_key
artificial_key



9. 키의 포함 관계

릴레이션relation에서 키의 포함 관계
https://i.imgur.com/9rtnOrQl.png

// from 변시우 5-2 19:10

10. 기타

key와 비슷한데 key 역할을 할 수 없는 (조금 약한 조건?) discriminator 가 있다. - 수업에서 자세히 설명되지 않음. 나중에.
Google:discriminator in database