식별관계
- 부모 테이블의 주키(Primary Key)가 자식 테이블의 주키로 사용되는 관계
- 부모 테이블의 주키가 자식 테이블의 FK이자 PK로 사용되는 경우를 말한다
- 자식 테이블의 행을 추가할 때 부모 테이블의 참조행이 없다면 자식 테이블의 행을 추가하는 일이 불가능하다
- 게시판 글과 글에 딸린 첨부파일과의 관계를 예로 들 수 있다 (첨부파일은 반드시 포함되는 글이 있어야 한다)
비식별관계
- 부모 테이블의 주키가 자식 테이블의 일반 컬럼이나 외부키(Foreign Key) 컬럼에 저장되는 관계
- 자식 테이블의 행을 추가할 때 부모 테이블에 참조 행이 없이도 자식 테이블에는 행을 추가하는 일이 가능하다
- 부모 테이블의 주키가 자식 테이블의 FK컬럼에 저장되더라도 FK는 null 을 허용하기 때문에 부모 테이블의 참조행이 없어도 자식 테이블의 행을 추가할 수 있다
- 부서 테이블과 사원 테이블의 관계를 예로 들 수 있다(부서를 배정 받지 못한 사원도 사원 테이블에 추가할 수 있어야 한다)
한개의 테이블에서 다수개의 컬럼에 Primary Key(복합키)를 설정하는 문장의 예
create table test_tb
(
num number,
name varchar2(20),
addr varchar2(20),
CONSTRAINT test_pk PRIMARY KEY(num, name)
);
특정 컬럼에 PK, FK를 동시에 설정하는 문장의 예
CREATE TABLE OrderDetails2
(
PFOrder_ID NUMBER(3),
PFProduct_ID NUMBER(3),
CONSTRAINT PF PRIMARY KEY (PFOrder_ID, PFProduct_ID),
CONSTRAINT FK_1 FOREIGN KEY (PFProduct_ID) REFERENCES Product(Product_ID),
CONSTRAINT FK_2 FOREIGN KEY (PFOrder_ID) REFERENCES Orderr(Order_ID)
);