본문 바로가기
DATABASE

oracle primary key, foreign key

by 개폰지밥 2019. 4. 15.
반응형

* 기본키(Primary key)

보통 테이블에 키를 생성했다라고 할때, 이는 기본키를 의미한다. 기본키는 UNIQUE와 NOT NULL 속성을 동시에 가진 제약조건으로 테이블 당 1개의 기본키만 생성할 수 있다.

컬럼명 데이터타입 PRIMARY KEY
혹은
CONSTRAINTS 제약조건명 PRIMARY KEY(컬럼명, ...)

오라클을 비롯한 여러 DBMS는 데이터 무결성을 보장하고 있는데, 데이터 무결성이란 데이터의 정확성과 이관성을 유지한다는 뜻이다.

예를 들어 사원테이블에는 사번과 사원명 컬림이 있는데 특정한 사람을 식별하려면 사번은 반드시 한개 이어야 한다. 만약 홍길동이란 사원의 사번이 두개 이거나 사번 자체가 들어가지 않고 데이터가 생성됐다면, 이 홍길동이란 사람을 정확히 식별할 수 있는 방법은 없다. 이런 식으로 데이터 무결성을 DBMS에서 실질적으로 구현한 것이 바로 기본키(NOT NULL+ UNIQUE)이다.

 

* 외래키

외래키는 테이블 간의 참조 데이터 무결성을 위한 제약조건이다.

CONSTRAINT 외래키명 FOREIGN KEY(컬럼명, ...)
REFERENCES 참조 테이블(참조 테이블 컬럼명, ...)

사원 테이블에 부서번호 컬럼이 있고, 부서정보는 부서 테이블에 있다. 만약 신규 사원이 입사해 데이터를 입력하는 와중에 부서 테이블에 없는 부서번호를 입력한다면 이 신입사원에 대한 부서정보를 제대로 찾을 수 없다. 즉 참조 무결성이 깨진다. 하지만 외래키를 생성해 놓으면 부서정보에 없는 부서번호를 입력할 때 오라클은 오류를 발생시켜 잘못된 데이터가 입력되는 것을 방지한다. 참조 무결성을 보장하는 것이다. (삭제할 때도 마찬가지이다.)

 

- 외래키 제약사항

반드시 참조하는 테이블이 먼저 생성되어야 하며, 참조키가 참조 테이블의 기본키로 만들어져 있어야 한다.
외래키의 사용할 수 있는 컬럼 개수는 최대 32개다.
여러 컬럼을 외래키로 만들려면, 참조하는 컬럼과 외래키 컬럼의 순서와 개수는 같아야 한다.
반응형

댓글