KEY
키(key)는 DB에서 데이터를 어떤 식으로 정의할지, 규칙을 정하는 값.
DB에서 조건을 만족하는 레코드를 찾거나 순서대로 정렬할 때 레코드를 서로 구분할 수 있는 기준이 되는 속성
데이터를 목록별로 정리하여 나타낸 테이블에는 행과 열(row/column)이 존재하는데 여기서 column을 의미
유일성: 하나의 키값으로 유일하게 식별할 수 있는 성질
최소성: 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
1. 기본키(Primary Key)
최소성과 유일성을 만족하는 키중복값이 있을 수 없고, NULL 값 또한 가질 수 없다.
"테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다."
따라서 테이블 안에서 유일하게 각 행을 식별할 수 있는 키이다.
ID | 학번 | 이름 | 전공 | 학년 |
1 | 22 | 김가나 | 부자학과 | 1 |
2 | 21 | 이다라 | 애플학과 | 3 |
3 | 18 | 박마바 | 갤럭시학과 | 4 |
ID: 해당 테이블의 기본키
2. 외래키(Foreign Key)
테이블간의 관계를 나타낼때 사용하며, 다른 테이블의 기본키를 참조해 외래키로 사용
테이블 A, B가 있을때 테이블 B가 테이블 A를 참조하여 테이블간의 관계를 연결
ID | 학번 | 이름 | 전공 | 학년 |
1 | 22 | 김가나 | 부자학과 | 1 |
2 | 21 | 이다라 | 애플학과 | 3 |
3 | 18 | 박마바 | 갤럭시학과 | 4 |
테이블 A
ID | 나이 | 주소 | 휴대폰번호 |
1 | 25 | 서울특별시 oo구 hh동 | 010-1234-5678 |
2 | 22 | 인천광역시 aa구 bb동 | 010-0000-0000 |
3 | 30 | 미국 | 010-1111-2222 |
테이블 B
테이블 A의 기본키 (ID)가 테이블 B의 외래키(ID)로 사용되었다
관계의 무결성을 방지하기 위해 외래키를 사용한다.
- 무결성: 데이터가 항상 정확한 값을 유지하는 성질
만약 테이블 A의 ID가 변경되었을때 B의 ID가 변경되지 않을 경우 문제가 생긴다.
3. 복합키 (Composite Key)
두개 이상의 컬럼을 묶어 하나의 기본키로 지정하는 것.
본래 기본키는 하나의 테이블에 하나만 존재하고, 하나 이상의 컬럼으로 구성
4. 그외
ID | 학번 | 이름 | 전공 | 학년 |
1 | 22 | 김가나 | 부자학과 | 1 |
2 | 21 | 이다라 | 애플학과 | 3 |
3 | 18 | 박마바 | 갤럭시학과 | 4 |
슈퍼키 (Super key)
유일성 O, 최소성 X.
중복된 값이 존재하지 않는 속성들의 집합.
유일하게 식별할 수 있는 하나 또는 그 이상의 속성 집합
- [ID] : 중복되는 경우 없으므로 슈퍼키 O
- [학번, 이름, 전공] : 중복될 수 있으므로 슈퍼키 X
- [ID, 학번, 이름] : 'ID'가 유일성을 만족하므로 슈퍼키O
후보키 (Candidate Key)
유일성 O, 최소성 O
슈퍼키 중에서 최소성을 만족하는 키.
유일하게 식별할 수 있는 최소한의 속성 집합
- [ID] : 중복되는 경우 없고, 더 줄일 수 없는 형태이므로 후보키 O
- [이름, 전공, 학년] : 중복될 수 있으므로 슈퍼키 X 후보키 X
- [ID, 이름, 전공] : 'ID'가 유일성을 만족하지만 최소성이 부족하므로 슈퍼키 O 후보키 X
대체 키(Alternate Key)
여러개의 후보키가 있을때 기본 키를 제외한 나머지 후보키
테이블 A에서 [학번]이 유일성, 최소성을 만족한다면 대체키가 될 수 있음
추가 기본키 조건)
- 값의 변동이 잦은 후보키 부적절
- NULL 값을 가질 수 있는 속성이 포함된 후보키 부적절
- 후보키 중 가장 단순한 키를 기본키로 선택
- 하나의 테이블에는 반드시 하나의 기본키만 존재
'백엔드 공부일지 > 데이터베이스 공부일지' 카테고리의 다른 글
[DATABASE] 관계형 데이터 베이스, ERD 설계 (0) | 2024.05.22 |
---|---|
[DATABASE] MY SQL 추가 - JOIN, SUBQUERY (1) | 2024.05.16 |
[DATABASE] My SQL 기초 문법 (0) | 2024.05.15 |
[DATABASE] 데이터베이스 개념 (0) | 2024.05.15 |