일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보 은닉
- 백준
- 파이프 필터 패턴
- 브로커 패턴
- 요구사항 확인
- 동적 모델링
- 데이터베이스
- Unreal Engint4
- UnrealEngine5
- 정보처리기사 실기
- C++
- 팬아웃
- UnrealEngine
- 요구사항 분석
- 정처기
- 아키텍처 패턴
- UML 다이어그램
- 알고리즘 문제
- 클라이언트 서버 패턴
- 메타 데이터
- baekjoon
- DBMS
- 언리얼엔진5
- 데이터 입출력
- 마스터 슬레이브 패턴
- 언리얼엔진 함수
- 단계적 분해
- 기능 모델링
- UML
- 정보처리기사
- Today
- Total
게임 개발자를 향해
관계형 데이터베이스의 제약 조건 - 키(Key) 본문
1. 키(Key)
키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다.
<키의 종류>
- 슈퍼키(Super Key)
- 후보키(Candidate Key)
- 기본키(Primary Key)
- 대체키(Alternate Key)
- 외래키(Foreign Key)
조건 | 설명 |
유일성 (Unique) |
하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다. |
최소성 (Minimality) |
키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야함 |
<여기서 Tip!>
같은 값을 가질 수 있는 속성은 키가 될 수 없다. 튜플마다 유일하게 가질 수 있는 값이어야 튜플을 식별할 수 있다.
이것이 바로 유일성이다.
유일성이 만족하지 않은 속성 : 나이(같은나이), 이름(동명이인), 생년월일(같은생일) 등.
유일성을 만족하는 속성 : 회원번호, 주민번호 등.
최소성은 이해하기 힘들 것이다.사실 키는 두 개 이상의 속성으로도 만들 수 있다.예를들어 [주민번호], [회원번호] 두 속성을 사용하여 튜플을 구분할 수도 있다.
이처럼 두 개 이상의 속성들을 묶은 키도 키에 포함된다.
하지만 주민번호가 같은 사람이나 회원번호가 같은 사람은 없기 때문에 여기서 둘 중 하나만 키로 사용해도 문제가 없다.
최소성이 만족하지 않은 속성 : ( [회원번호], [주민번호] )
최소성이 만족하는 속성 : 회원번호, 주민번호
한마디로 튜플을 식별하는데는 최소의 속성을 사용하여 키를 만들라는 의미이다.
<슈퍼키(Super Key)>
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말한다.
- 속성들 중 유일성을 만족하면 전부 슈퍼키이다.
- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
<후보키(Candidate Key)>
- 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합이다.
- 기본키로 사용할 수 있는 속성들을 말한다.
<기본키(Primary Key)>
- 기본키는 후보키 중에서 최종 선정된 키이다.
- 기본키는 NULL 값을 가질 수 없다. (기본키 값이 없으면 튜플을 구분할 수 없기 때문이다.)
<대체키(Alternate Key)>
- 대체키는 후보키 중에서 기본키로 선정되지 못한 키이다.
<외래키(Forign Key)>
- 외래키는 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
<여기서 Tip!>
아래 표를 예를 들어 설명하겠다.
<등록상품 릴레이션>
상품명 | 상품코드 | 가격 |
감자칩 | 00F3 | 1,500 |
크림빵 | 91AC | 1,700 |
초코우유 | C3B6 | 1,200 |
<거래내역 릴레이션>
상품코드 | 거래날짜 | 거래코드 | 구매자 |
00F3 | 2022/09/05 | 167954F3 | 김뿌단 |
91AC | 2022/09/05 | 543784AB | 김뿌단 |
C3B6 | 2022/09/05 | 689425C3 | 김뿌단 |
위 키를보면 등록상품 릴레이션과 거래내역 릴레이션에 같은 속성이 존재한다.
등록상품 릴레이션에 기본키인 상품코드를 거래내역 릴레이션이 외래키로 가져온것이다.
결론적으로 거래내역의 상품코드는 외래키이다.
이런 외래키를 이용하여 릴레이션의 연관성을 표현할 수 있다.
그리고 참조한 등록상품 릴레이션의 상품코드에 없는 값은 외래키에 입력할 수 없다.
위에서 설명한 키를 벤다이어그램으로 나타내면 아래와 같다.
이미지 출처: http://wiki.hash.kr/index.php/%EB%8C%80%EC%B2%B4%ED%82%A4
회원번호 | 나이 | 이름 | 주민번호 |
07FC | 20 | 김뿌단 | 1038543 |
A049 | 19 | 김춘자 | 2023665 |
속성이 "유일성"만 만족해도 슈퍼키가 된다.
그리고 속성이 2개 이상여도 투플을 구분할 수 있으면 전부 키가 될 수 있다.
그럼 만약 위 릴레이션에서 슈퍼키는?
<슈퍼키 종류>
1. [회원번호]
2. [주민번호]
3. [ [회원번호], [주민번호] ]
4. [ [회원번호], [이름] ]
5. [ [회원번호], [주민번호], [나이] ]
...
등등이 있겠다.
다적으면 너무 많다.
그중 "최소성"을 만족한 것이 후보키이다.
<후보키 종류>
1. [회원번호]
2. [주민번호]
이중 하나는 기본키가 되고 나머지는 대체키로 분류하는 것이다.

읽어주셔서 감사합니다!
정처기 화이팅!
'정보처리기사 > 2. 데이터 입출력 구현' 카테고리의 다른 글
관계대수 및 관계해석 (0) | 2022.09.05 |
---|---|
관계형 데이터베이스의 제약조건 - 무결성(Integrity) (0) | 2022.09.05 |
관계형 데이터베이스의 구조 / 관계형 데이터 모델 (0) | 2022.09.05 |
E-R(개체 - 관계) 모델 (0) | 2022.09.04 |
데이터 모델의 구성 요소 (0) | 2022.09.04 |