일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 액티비티
- 앱 개발
- Database
- 운영체제
- Kotlin
- 앱
- 안드로이드 개발
- MVVM
- 디자인 패턴
- reactnative
- 디자인패턴
- 데이터베이스
- React
- 안드로이드 디자인 패턴
- 코틀린
- 메모리
- CS지식
- 리액트네이티브
- db
- 리액트
- 안드로이드
- OS
- Android
- Operating System
- github
- 개발
- cs
- 앱개발
- 프로세스
- 스레드
- Today
- Total
Tech Log
[DataBase] 키(Key) 본문
키(Key)
테이블 간의 관계를 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치다.
데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성이다.
키에는 여러 종류가 있는데, 종류에 따라 위 그림과 같은 관계를 가진다.
슈퍼키는 유일성이 있다. 후보키는 유일성에 최소성까지 갖추었다.
후보키 중에서 기본키로 선택되지 못하면 대체키가 된다.
*유일성(Unique) : 중복되는 값이 없는 것. 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다.
*최소성(Minimality) : 필드를 조합하지 않고 최소 필드만 써서 키를 형성할 수 있는 것. 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 한다는 특성이다.
기본키(Primary Key)
테이블의 데이터 중 고유하게 존재하는 속성.
기본키에 해당하는 데이터는 중복되어서는 안된다.
기본키는 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
기본키는 NULL 값을 가질 수 없다. 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안된다.
유일성과 최소성을 만족한다.
PK 또는 프라이머리키라고 불린다.
위 그림의 ID는 PDT-0002이 중복되므로 기본키가 되지 말아야 한다.
기본키는 자연키 또는 인조키 중에 골라서 설정한다.
자연키
중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑다가 나오는 키.
예를 들어 유저 테이블을 만들 때, 주민등록번호, 이름, 성별의 속성 중 중복된 값을 가질 수 있는 키가 무엇인지 생각한다.
이름, 성별은 중복된 값이 들어올 수 있으므로 제외시키고 자연스럽게 남는 것은 주민등록번호이다.
이때 주민등록번호는 자연키가 된다.
자연키는 언젠가는 변하는 속성을 가진다.
인조키
인위적으로 생성한 키를 말한다.
예를 들어 유저 테이블을 만들 때, 주민등록번호, 이름, 성별 등의 속성을 만든다.
이때 인위적으로 유저 아이디를 레코드마다 부여한다.
이를 통해 고유 식별자가 생겨난다.
이 고유 식별자를 오라클은 sequence, MySQL은 auto increment라고 한다.
그리고 이렇게 인위적으로 생성한 키를 인조키라고 한다.
자연키와는 대조적으로 변하지 않는다.
따라서 보통 기본키는 인조키로 설정한다.
외래키(Foreign Key)
다른 테이블의 기본키를 그대로 참조하는 값.
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합이다.
개체와의 관계를 식별하는데 사용한다.
FK라고도 한다.
외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
외래키는 중복되어도 된다.
위 그림에서는 user_id가 외래키이고 a_2라는 값이 중복된다.
후보키(candidate key)
기본키가 될 수 있는 후보들.
유일성과 최소성을 동시에 만족한다.
대체키(alternate key)
후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키.
슈퍼키(super key)
각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키.
한 릴레이션 내에 있는 속성들의 집합으로 구성된 키.
릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못한다.
참조
- 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)
- 김정준, 시나공 정보처리기사 실기, 길벗(2022)
'Computer Science > DataBase' 카테고리의 다른 글
[DataBase] 정규화(Normalization) (0) | 2023.02.18 |
---|---|
[DataBase] ERD(Entity Relationship Diagram) (0) | 2023.02.17 |
[DataBase] 데이터베이스 관계(Relationship) (0) | 2023.02.13 |
[DataBase] 필드 타입 (0) | 2023.02.13 |
[DataBase] 데이터베이스의 구성 (0) | 2023.02.13 |