후보키(Candidate Key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합으로 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 수퍼키 중에서 최소성을 만족하는 것이 후보키가 된다. 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성값이 바뀌어도 유지되어야 한다.
[1]
개요
후보키는 수퍼키중에서 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어진 키이다.
[2]
후보키는 기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야한다.
[3]
예를 들어 학번 속성과 이름, 학년 속성이 있다고 하자. 학번 속성은 단독으로 학생 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다. 하지만 이름이나, 학년은 후보키가 될 수 없다. 이름 속성이 없어도 학번 속성만으로 유일성을 만족할 수 있기 때문이다. 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유일성과 최소성은 유지되어야 한다.
또한, 후보키의 경우 하나의 관계(테이블)에서 관계를 정의할 때, 적어도 하나의 후보키가 존재한다.
[2]
특징
후보키는 하나의 릴레이션 내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다. 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다. 여기서 유일성이란 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 하는 것을 말하며, 최소성은 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야 하는 것을 말한다. 즉, 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다.
[4]
위 테이블에 사람은 3명이 있다. 이 3명을 구분하는 수퍼키들이 모여있는데, 수퍼키들 중에서 속성은 최소한의 갯수로 3명을 구분할 수 있어야 후보키가 될 수 있다. 학번과 주민번호 수퍼키는 속성들이 각 1개씩 이루어져 있다. 하지만 이름+나이 수퍼키는 이름과 나이를 묶어서 2개의 속성으로 되어있다. 즉, 이름+나이 수퍼키는 2개이므로 최소성을 만족하지 못해서 후보키가 될 수 없다.
각주
- ↑ , 〈후보키〉, 《기본키》
- ↑ 2.0 2.1 , 〈후보키 개요〉, 2020-08-05《릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)》
- ↑ 3.0 3.1 , 〈후보키 개요 및 특징〉, 2018-04-24《[SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)》
- ↑ , 〈후보키 특징〉, 2018-08-14《[DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념》
참고자료
- 후보키〈후보키〉, 《Naver 지식백과》
- [DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념〈후보키 특징〉, 2018-08-14《Tistory - 코딩팩토리》
- [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)〈후보키 개요 및 특징〉, 2018-04-24《Tistory - 쩨리쩨리》
- 릴레이션 특징과 릴레이션 키 종류(슈퍼키,후보키,기본키,외래키)〈후보키 개요〉, 2020-08-05《Tistory - iamdaeyun》
같이 보기
이 후보키 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.
|
개발 : 프로그래밍, 소프트웨어, 데이터 □■⊕, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
데이터
|
ACID • CRUD • CSV • DAO • DB • DBMS • DB 명령어 • DCL • DDL • DML • DTO • ERD • ETL • JDBC • LOD • MDM • ODBC • RDBMS • RDF • SQL • 가상 데이터베이스 • 관계형 데이터베이스 • 그래프 • 기본키(PK) • 내부조인 • 널 • 노드 • 다이어그램 • 대리키 • 대체키 • 데이터 • 데이터댐 • 데이터마트 • 데이터 모델링 • 데이터뱅크 • 데이터베이스(DB) • 데이터베이스 언어 • 데이터 사이언스 • 데이터 사전 • 데이터 웨어하우스 • 데이터 정의어(DDL) • 데이터 제어어(DCL) • 데이터 조작어(DML) • 데이터 클러스터 • 데이터 토큰 (문자열) • 데이터 통합 • 덱 • 디비서버 • 라이트조인 • 락 • 레코드 • 레프트조인 • 로그 • 로그파일 • 로깅 • 롤백 • 리두로그 • 릴레이션 • 마스터데이터 • 마스터데이터관리(MDM) • 마이그레이션 • 메타데이터 • 배열 • 뷰 • 빅데이터 • 서브쿼리 • 수퍼키 • 순차리스트 • 스키마 • 스택 • 슬로우쿼리 • 엔티티 • 역정규화 • 연결리스트 • 외래키(FK) • 외부조인 • 인덱스 • 인덱싱 • 인젝션 • 자료구조 • 정규화 • 정보 • 조인 • 커밋 • 쿼리 • 큐 • 키 • 타깃 • 테이블 • 튜플 • 트랜잭션 • 트리 • 트리거 • 티비마이그레이터 • 풀조인 • 프로시저 • 필드 • 해시 • 해시맵 • 해시태그 • 해시테이블 • 해시함수 • 해싱 • 후보키
|
|
데이터베이스 관리 시스템 (DBMS)
|
관계형 데이터베이스 관리 시스템(RDBMS) • 노에스큐엘(NoSQL) • 데이터베이스 관리 시스템(DBMS) • 더비 • 디비투(DB2) • 레디스 • 마리아디비(MariaDB) • 마이에스큐엘(MySQL) • 몽고디비 • 빅테이블 • 사이베이스 • 선디비 • 알티베이스 • 액세스 • 에스큐엘(SQL) • 에스큐엘라이트(SQLite) • 에이치베이스 • 엠에스에스큐엘(MS-SQL) • 오라클(Oracle) • 인터베이스 • 인포믹스 • 카산드라 • 카우치디비 • 큐브리드 • 티베로 • 파이어버드 • 포스트그레스큐엘(PostgreSQL) • 하이퍼테이블
|
|
DB 명령어
|
alter • array • create • delete • drop • from • full join • grant • inner join • insert • join • left join • null • order by • outer join • rename • revoke • right join • select • truncate • update • where
|
|
시스템 연계
|
API • CGI • EAI • ESB • JPA • RSS • SOA • SOAP • SSL • SSO • web3.js • XML • 디비투디비(DB-to-DB) • 레스트풀(RESTful) • 상호운용성 • 시스템 인터페이스 • 신디케이션 API • 오픈 API • 웹 API • 웹개방성 • 윈도우 API • 자바 API • 크롤링 • 프라이빗 API
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|