본문 바로가기

Database/식별, 비식별 관계설정

식별. 비식별관계의 설정

식별관계

 - 부모 테이블의 주키(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)
);