데이터베이스 - PK, FK

한결·2022년 1월 26일
1

Study

목록 보기
4/13

PK

Primary Key는 데이터베이스 릴레이션 - 릴레이션과 테이블의 개념이 헷갈렸는데, 테이블은 릴레이션이지만 릴레이션은 테이블이 아니란다. 릴레이션이 테이블보다 큰 개념으로 테이블은 그냥 2차원의 구조지만, 릴레이션은 관계형 데이터베이스의 테이블과 매핑시켜 말 그대로 연관된 테이블들이라고 이해하고 있다. -에서 투플을 구별하기 위해 여러 개의 후보키 중 기본적으로 사용할 키를 반드시 선택해야 하는데 이것을 PrimaryKey, 기본키라고 한다.


해당 릴레이션에서 기본키로 적합한것은
1) Null값을 가질 수 있는 속성이 포함되지 않은 후보키

기본키는 투플을 식별할 뿐만 아니라 릴레이션에서 원하는 투플을 찾기 위해 기본 접근 방법을 제공하는 중요한 역할을 한다. 그러므로 널 값이 들어갈 수 있는 투플은 구별이 불가능하기때문에 후보키로 선택하지 않도록 한다.
-> '고객아이디'와 '고객이름'이 가능하다

2) 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합

기본키는 다른 투플과 구별되는 값을 가지고 null값을 허용하지 않는다. 하지만 기본키가 자주 변경된다면 속성 값이 바뀔 때마다 기본키 값으로 적합한지 여부를 판단해야하므로 값이 자주 변경되지 않는 속성으로 구성된 후보키를 기본키로 선택하는 것이 좋다.
-> '고객이름'과 '고객주소'는 변경될 가능성이 높다

3) 단순한 후보키를 기본키로 선택
단순한 후보키란 자리수가 적은 정수나 단순 문자열인 속성으로 구성되거나, 구성하는 속성의 개수가 적은 후보키다.
-> '고객아이디'와 '고객이름, 주소' 후보키 중 두개로 구성된 속성보다 하나로 구성된 '고객아이디'가 후보키로 적합한 것을 알 수 있다.

FK

Foriegn Key는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다. 다른 릴레이션에 기본키를 참조하는 속성의 집합.

그림에서 고객 릴레이션의 '고객아이디' 속성이 기본키이고, 주문 릴레이션의 기본키는 '주문번호'이다. 주문 릴레이션의 '주문고객' 속성이 고객 릴레이션의 기본키인 '고객아이디' 속성을 참조하면 '주문고객' 속성을 외래키라고 한다. 외래키를 통해 고객 릴레이션과 주문 릴레이션이 관계를 맺어 주문 릴레이션의 투플과 연관성 있는 고객 일레이션의 투플을 연결시킬 수 있다.


하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있다. 그리고 외래키를 기본키로 사용할 수 있고, 외래키를 포함하여 기본키를 구성할 수 도 있다.

또한 같은 릴레이션을 참조할 수도 있다.

외래키는 기본키를 참조하지만 기본키와는 다르게 NULL값을 가질 수 있다. 또한 속성의 값이 같을 수 있다.

출처:(기본키) https://terms.naver.com/entry.naver?docId=3431150&cid=58430&categoryId=58430&expCategoryId=58430 (외래키)https://terms.naver.com/entry.naver?docId=3431152&cid=58430&categoryId=58430&expCategoryId=58430

0개의 댓글