Key
데이터베이스에서 튜플(Tuple)을 검색 또는 정렬시에 구분할 수 있는 기준이 되는 속성(attribute)
튜플:테이블을 구성하는 데이터들 중 가로 1줄. 즉 테이블에서의 속성들의 값을 가지고 있는 데이터 셋.
데이터베이스에선 로우(row)라고 부르고, 관계형 데이터베이스에선 튜플(Tuple) 또는 레코드(record)라고 부름
키의 종류
후보키(Candidate Key)
- 릴레이션에서 tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합.
- 2가지 조건에 만족해야함.
- 유일성: ket를 통해 하나의 tuple을 유일하게 식별 가능해야한다.
- 최소성: 꼭 필요한 속성으로만 이루어져야한다.
- 키를 구성하는 속성 중 하나라도 빠지면, 유일하게 식별되지 않도록 구성해야함.
릴레이션: 관계형 데이터베이스에서의 테이블을 뜻함.
기본키(Primary Key)
- 후보키 중에서 선택한 main key
- null값 X
- 키본키 정의된 속성엔 중복 값 저장 불가
대체키(Alternate Key)
- 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키
- 보조키라고도 부름
슈퍼키(Super Key)
- 튜플들에 대해 유일성 만족, 최소성 만족x인 키
외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 집합
그림을 통한 이해
<사원 테이블>
사번 | 주민번호 | 성명 | 입사날짜 | 부서번호 |
1001 | 831122-1024516 | 장독대 | 1986-06-26 | 1 |
1002 | 931027-2123852 | 성소영 | 2022-10-27 | 2 |
1003 | 931122-1234567 | 계해범 | 2022-04-01 | 3 |
1004 | 960319-2012354 | 김나라 | 2012-08-14 | 3 |
<부서 테이블>
부서번호 | 부서명 |
1 | 인사 |
2 | 검색 |
3 | 회계 |
사원 테이블을 기준으로 설명
후보키
- 사번,주민번호 : 사원번호는 사원마다 배분되므로 유일. 주민번호도 유일성을 가짐(튜플을 유일하게 구분 가능)
- 나머지는 유일하지 않음.
- 입사날짜가 지금은 다 다르므로 가능하지만, 추후에 중복된 데이터 들어올 수 있으므로 해당 안됨.
기본키
- 사번: 후보키 중 사번을 기본키로 선택.
대체키
- 주민번호: 기본키 '사번'을 제외한 후보키.
슈퍼키
- 사번, 주민번호, 사번+주민번호, 사번+주민번호+성명 등등
- 다 튜플을 유일하게 구분할 수 있지만, 최소성을 만족하지 않을 수 있음.
- 여기선 둘 이상의 조합 슈퍼키의 경우, 사번이나 주민번호만으로 유일성이 지켜지는데 2개 이상을 썼기 때문에 최소성을 만족하지 못함.
외래키
- 부서번호: 부서 테이블의 기본키인 부서번호를 참조하는 속성
My SQL에서의 키
Primary Key
- 기본키를 뜻함.
- null을 허용하지 않고, 유일성 보장
- 테이블에 한개만 가능
- primary Key를 설정해두면 클러스터링 인덱스 생성
Unique Key
- 보조키를 뜻함
- null을 허용
- 유일성 보장
- 테이블에 여러개 가능
- Unique Key 설정해두면 보조 인덱스 생성(다른 DBMS에선 비클러스터형 인덱스라고 부름)
인덱스 관련 글
'DB > MySQL' 카테고리의 다른 글
DB Lock (s lock, x lock, index lock 등등) (0) | 2023.03.26 |
---|---|
[DB] 트리거(Trigger) / MySQL 사용법 (0) | 2022.02.23 |
[DB] 스토어드 프로시저(SP)와 스토어드 함수 / MySQL 사용법 (0) | 2022.02.23 |
[DB] View / MySQL 사용법 (0) | 2022.02.23 |
[DB] 인덱스(index) / MySql에서 사용법 (0) | 2022.01.31 |
댓글