FOREIGN KEY
FOREIGN KEY는 두 테이블을 서로 연결하는 데 사용되는 키
외래 키가 포함된 테이블을 하위 테이블(자식 테이블)이라고 하고
외래 키 값을 제공하는 테이블을 상위 테이블(부모 테이블)이라고 한다.
기본키 값이거나 NULL 값이다
추가적인 제약조건을 지정해 NULL을 가질 수 없다고 제약을 걸 수 있다
참조 무결성
기본 키와 참조 키 간의 관계가 항상 유지됨을 보장
참조되는 테이블의 행을 이를 참조하는 참조키가 존재하는 한 삭제될 수 없고, 기본키도 변경될 수 없다
관련된 테이블의 레코드 간의 관계를 유효하게 하는 규칙
사용자의 실수로 관련 데이터가 삭제되거나 수정되는 것을 방지
기본 테이블에서 일치하는 칼럼이 'PRIMARY KEY'이거나 또는 고유 인덱스를 가지고 있고
또한 관련 칼럼의 데이터 형식이 같아야 한다
FIREIGN KEY 생성
- CONSTRAINT ~ REFERENCES 사용
CREATE TABLE [테이블명] (
[컬럼1] [데이터형식] CONSTRAINT [제약조건명] PRIMARY KEY ,
[컬럼2] [데이터형식],
[컬럼3] [데이터형식] CONSTRAINT [제약조건명] REFERENCES [참조할 테이블명]);
- REFERENCES 사용
CREATE TABLE [테이블명] (
[컬럼1] [데이터형식] PRIMARY KEY ,
[컬럼2] [데이터형식],
[컬럼3] [데이터형식] REFERENCES [참조할 테이블명]);
예제
DROP TABLE EMP_SECOND; --기존 테이블 있다면 삭제
CREATE TABLE EMP_SECOND (
ENO NUMBER(4) CONSTRAINT EMP_SECOND_ENO_PK PRIMARY KEY ,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
DNO NUMBER(4) CONSTRAINT EMP_SECOND_DNO_FK REFERENCES DEPARTMENT);
CREATE TABLE EMP_SECOND (
ENO NUMBER(4) CONSTRAINT EMP_SECOND_ENO_PK PRIMARY KEY ,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
DNO NUMBER(4) REFERENCES DEPARTMENT);
주의 사항
references 테이블의 primary key 컬럼 타입 일치
references 테이블의 primary key 순서 일치
'SQL > ORACLE SQL' 카테고리의 다른 글
VIEW : 뷰 (0) | 2022.11.10 |
---|---|
제약 조건 : CHECK, DEFAULT (0) | 2022.11.10 |
제약 조건 : PRIMARY KEY (기본 키) (0) | 2022.11.09 |
제약 조건 : NOT NULL, UNIQUE (0) | 2022.11.09 |
제약 조건 : CONSTRAINT (0) | 2022.11.08 |