키 개념은 아래 링크를 보면 잘 알 수 있다.
키의 종류
https://terms.naver.com/entry.nhn?docId=3431147&cid=58430&categoryId=58430&expCategoryId=58430
수퍼키
https://terms.naver.com/entry.nhn?docId=3431148&cid=58430&categoryId=58430&expCategoryId=58430
레코드들을 식별할 수 있는 ‘필드의 집합’ (유일성)
테이블은 적어도 1개의 슈퍼키를 가져야 한다.
후보키
https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430&expCategoryId=58430
슈퍼키에서 레코드를 식별할 수 있는 최소한의 필드만 남겨놓은 집합 (유일성, 최소성)
Ex. 슈퍼키 { 학번, 학생이름, 학과 } 집합은 학번만으로도 레코드를 식별할 수 있으므로 부분집합 중 { 학번 } 집합만 후보키가 될 수 있다.
기본키
https://terms.naver.com/entry.nhn?docId=3431150&cid=58430&categoryId=58430&expCategoryId=58430
설계자가 여러 후보키 중 하나를 선택하여 정의한 식별자 (유일성, 최소성)
기본키의 모든 필드의 값은 null 이 될 수 없다.
외래키
https://terms.naver.com/entry.nhn?docId=3431152&cid=58430&categoryId=58430&expCategoryId=58430
다른 테이블의 기본키를 참조한다.
외래키의 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖는다.
외래키의 모든 필드의 값은 참조하는 기본키와 동일하거나 null 이다.
대체키
기본키로 선택되지 못한 후보키들이다.
이름에서 알 수 있듯이 대체키는 기본키를 대신할 수 있지만 기본키가 되지 못하고 탈락한 이유가 있을 수 있다.
기본키를 선택할 때 고려할 사항을 하나씩 따져보면 기본키의 [주소 속성이 추가된 릴레이션의 예]의 고객 릴레이션은 고객아이디 속성을 기본키로 선택하는 것이 무난하다.
따라서 기본키로 선택되지 못한 (고객이름, 주소) 속성 집합이 대체키가 된다.
키는 관계형 데이터 모델에서 특정 레코드를 식별하기 위해 사용한다. 두 개 이상의 필드로 구성된 키를 복합키라고 한다. 키의 종류에는 슈퍼키, 후보키, 기본키, 외래키, 대체키가 있다.
기본키
https://www.w3schools.com/sql/sql_primarykey.asp
개인키를 테이블 생성 시에 삽입하는 방법은 아래와 같다.
여러 필드를 PRIMARY KEY를 묶기 위한 방법이다.
를 통해 PRIMARY KEY를 수정 할 수 있고
를 통해 기본키로 구성되어있던 것을 DROP 할 수 있다.
외래키
https://www.w3schools.com/sql/sql_foreignkey.asp
FOREIGN KEY Constraint
외래키는 두 테이블을 함께 쓸 때 연결하는 키이다.
외래키는 또다른 테이블에서 기본키를 지칭하기 위한 필드(or collection of fields)이다.
외래키를 포함하는 테이블은 child table라고 보통 말하고 후보키를 포함하는 테이블은 parent table라고 불린다.
를 이용하여 외래키 설정이 가능하다.
외래키를 여러 컬럼을 함께 설정하고싶거나 CONSTRAINT를 이용하기 위해서는 아래와 같이 이용한다.
외래키를 추가하기 위해서는 위와 같이 이용한다.
외래키를 DROP 하기 위해서는 위와 같이 사용한다.
'Applied > Database' 카테고리의 다른 글
[175번] Combine Two Tables (0) | 2019.04.27 |
---|---|
데이터베이스 CHECK, DEFAULT (0) | 2018.08.24 |
데이터베이스 CREATE / DROP / ALTER DB, TABLE (0) | 2018.08.20 |
데이터베이스 SELECT INTO, INSERT INTO SELECT, ISNULL, PROCEDURES (0) | 2018.08.18 |
데이터베이스 UNION, GROUP BY, HAVING, EXISTS, ANY, ALL (0) | 2018.08.16 |