"후보키"의 두 판 사이의 차이
(새 문서: '''후보키'''(Candidate Key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의...) |
잔글 (→개요) |
||
(사용자 3명의 중간 판 8개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''후보키'''(Candidate Key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 [[수퍼키]] 중에서 최소성을 만족하는 것이 후보키가 된다. 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 | + | '''후보키'''(Candidate Key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 [[수퍼키]] 중에서 최소성을 만족하는 것이 후보키가 된다. 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성값이 바뀌어도 유지되어야 한다. |
<ref> , 〈[https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430 후보키]〉, 《기본키》</ref> | <ref> , 〈[https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430 후보키]〉, 《기본키》</ref> | ||
6번째 줄: | 6번째 줄: | ||
<ref name="후보키 개요"> , 〈[https://iamdaeyun.tistory.com/entry/%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%82%A4-%EC%A2%85%EB%A5%98%EC%8A%88%ED%8D%BC%ED%82%A4%ED%9B%84%EB%B3%B4%ED%82%A4%EA%B8%B0%EB%B3%B8%ED%82%A4%EC%99%B8%EB%9E%98%ED%82%A4 후보키 개요]〉, 2020-08-05《릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)》</ref> | <ref name="후보키 개요"> , 〈[https://iamdaeyun.tistory.com/entry/%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%82%A4-%EC%A2%85%EB%A5%98%EC%8A%88%ED%8D%BC%ED%82%A4%ED%9B%84%EB%B3%B4%ED%82%A4%EA%B8%B0%EB%B3%B8%ED%82%A4%EC%99%B8%EB%9E%98%ED%82%A4 후보키 개요]〉, 2020-08-05《릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)》</ref> | ||
후보키는 기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야한다. | 후보키는 기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야한다. | ||
− | <ref> , 〈[https://jerryjerryjerry.tistory.com/49 후보키 개요]〉, 2018-04-24《[SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)》</ref> | + | <ref name="후보키 개요 및 특징"> , 〈[https://jerryjerryjerry.tistory.com/49 후보키 개요 및 특징]〉, 2018-04-24《[SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)》</ref> |
− | + | 예를 들어 학번 속성과 이름, 학년 속성이 있다고 하자. 학번 속성은 단독으로 학생 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다. 하지만 이름이나, 학년은 후보키가 될 수 없다. 이름 속성이 없어도 학번 속성만으로 유일성을 만족할 수 있기 때문이다. 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유일성과 최소성은 유지되어야 한다. | |
또한, 후보키의 경우 하나의 관계(테이블)에서 관계를 정의할 때, 적어도 하나의 후보키가 존재한다. | 또한, 후보키의 경우 하나의 관계(테이블)에서 관계를 정의할 때, 적어도 하나의 후보키가 존재한다. | ||
− | <ref name="후보키 개요"/> | + | <ref name="후보키 개요"/> |
− | |||
− | |||
==특징== | ==특징== | ||
17번째 줄: | 15번째 줄: | ||
<ref> , 〈[https://coding-factory.tistory.com/220 후보키 특징]〉, 2018-08-14《[DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념》</ref> | <ref> , 〈[https://coding-factory.tistory.com/220 후보키 특징]〉, 2018-08-14《[DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념》</ref> | ||
− | == | + | ===예시<ref name="후보키 개요 및 특징"/>=== |
+ | |||
+ | [[파일:후보키예시.png|600픽셀|섬네일|가운데|후보키 예시]] | ||
+ | 위 테이블에 사람은 3명이 있다. 이 3명을 구분하는 수퍼키들이 모여있는데, 수퍼키들 중에서 속성은 최소한의 갯수로 3명을 구분할 수 있어야 후보키가 될 수 있다. 학번과 주민번호 수퍼키는 속성들이 각 1개씩 이루어져 있다. 하지만 이름+나이 수퍼키는 이름과 나이를 묶어서 2개의 속성으로 되어있다. 즉, 이름+나이 수퍼키는 2개이므로 최소성을 만족하지 못해서 후보키가 될 수 없다. | ||
{{각주}} | {{각주}} | ||
25번째 줄: | 26번째 줄: | ||
* 후보키〈[https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430 후보키]〉, 《Naver 지식백과》 | * 후보키〈[https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430 후보키]〉, 《Naver 지식백과》 | ||
* [DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념〈[https://coding-factory.tistory.com/220 후보키 특징]〉, 2018-08-14《Tistory - 코딩팩토리》 | * [DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념〈[https://coding-factory.tistory.com/220 후보키 특징]〉, 2018-08-14《Tistory - 코딩팩토리》 | ||
− | * [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)〈[https://jerryjerryjerry.tistory.com/49 후보키 개요]〉, 2018-04-24《Tistory - 쩨리쩨리》 | + | * [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)〈[https://jerryjerryjerry.tistory.com/49 후보키 개요 및 특징]〉, 2018-04-24《Tistory - 쩨리쩨리》 |
− | * 릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)〈[https://iamdaeyun.tistory.com/entry/%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%82%A4-%EC%A2%85%EB%A5%98%EC%8A%88%ED%8D%BC%ED%82%A4%ED%9B%84%EB%B3%B4%ED%82%A4%EA%B8%B0%EB%B3%B8%ED%82%A4%EC%99%B8%EB%9E%98%ED%82%A4 후보키 개요]〉,2020-08-05《Tistory - iamdaeyun》 | + | * 릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)〈[https://iamdaeyun.tistory.com/entry/%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98-%ED%82%A4-%EC%A2%85%EB%A5%98%EC%8A%88%ED%8D%BC%ED%82%A4%ED%9B%84%EB%B3%B4%ED%82%A4%EA%B8%B0%EB%B3%B8%ED%82%A4%EC%99%B8%EB%9E%98%ED%82%A4 후보키 개요]〉, 2020-08-05《Tistory - iamdaeyun》 |
==같이 보기== | ==같이 보기== | ||
36번째 줄: | 37번째 줄: | ||
*[[기본키]] | *[[기본키]] | ||
− | {{ | + | {{데이터|검토 필요}} |
2021년 11월 19일 (금) 09:40 기준 최신판
후보키(Candidate Key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 수퍼키 중에서 최소성을 만족하는 것이 후보키가 된다. 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성값이 바뀌어도 유지되어야 한다. [1]
개요[편집]
후보키는 수퍼키중에서 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어진 키이다. [2] 후보키는 기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야한다. [3] 예를 들어 학번 속성과 이름, 학년 속성이 있다고 하자. 학번 속성은 단독으로 학생 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다. 하지만 이름이나, 학년은 후보키가 될 수 없다. 이름 속성이 없어도 학번 속성만으로 유일성을 만족할 수 있기 때문이다. 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유일성과 최소성은 유지되어야 한다. 또한, 후보키의 경우 하나의 관계(테이블)에서 관계를 정의할 때, 적어도 하나의 후보키가 존재한다. [2]
특징[편집]
후보키는 하나의 릴레이션 내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다. 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다. 여기서 유일성이란 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 하는 것을 말하며, 최소성은 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야 하는 것을 말한다. 즉, 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다. [4]
예시[3][편집]
위 테이블에 사람은 3명이 있다. 이 3명을 구분하는 수퍼키들이 모여있는데, 수퍼키들 중에서 속성은 최소한의 갯수로 3명을 구분할 수 있어야 후보키가 될 수 있다. 학번과 주민번호 수퍼키는 속성들이 각 1개씩 이루어져 있다. 하지만 이름+나이 수퍼키는 이름과 나이를 묶어서 2개의 속성으로 되어있다. 즉, 이름+나이 수퍼키는 2개이므로 최소성을 만족하지 못해서 후보키가 될 수 없다.
각주[편집]
참고자료[편집]
- 후보키〈후보키〉, 《Naver 지식백과》
- [DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념〈후보키 특징〉, 2018-08-14《Tistory - 코딩팩토리》
- [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)〈후보키 개요 및 특징〉, 2018-04-24《Tistory - 쩨리쩨리》
- 릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)〈후보키 개요〉, 2020-08-05《Tistory - iamdaeyun》
같이 보기[편집]