자바 웹 개발자가 될거야/DB
[Oracle] 기본키, 외래키 2개 이상일 때 테이블 만들기
whitz
2021. 12. 17. 12:04
① 기본키를 2개로 조합하여 테이블 만들기
- 기본키가 2개이상일 때는 Table Level 문법을 사용한다.
- 아래 표 대로 테이블을 만들어 보겠다.
- COPY_ID와 TITLE_ID가 PK여야 하는 상황이다.
더보기
CREATE TABLE title_copy(
copy_id NUMBER(10),
title_id NUMBER(10) CONSTRAINT tc_id_fk REFERENCES title(title_id),
status VARCHAR2(15) CONSTRAINT tc_status_nn NOT NULL
CONSTRAINT tc_status_ck CHECK (status IN ('AVAILABLE','DESTROYED','RENTED','RESERVED')),
CONSTRAINT tc_id_pk PRIMARY KEY (copy_id, title_id));
※ 제약조건명은 내맘대로 지은거니까 사용자 마음대로 변경해도 된다.
② 기본키 3개를 조합하여 테이블 만들기
- 기본키 2개일때와 크게 달라지는 점은 없다.
- 컬럼명만 하나 더 써주면 되기때문 !
더보기
CREATE TABLE reservation(
res_date date,
member_id number(10) constraint rv_mid_fk references member(member_id),
title_id number(10) constraint rv_tid_fk references title(title_id),
constraint rv_rmt_pk primary key(res_date, member_id, title_id));
③ 외래키 2개를 조합하여 테이블 만들기
- 외래키는 기본키와 달리 참조하는 테이블과 컬럼을 써줘야 하기때문에 헷갈릴 수 있다.
- 이 상황 역시 Table Level 문법으로 진행하겠다.
더보기
CREATE TABLE rental(
book_date date default sysdate,
member_id number(10) constraint r_mid_fk references member(member_id),
copy_id number(10),
act_ret_date date,
exp_ret_date date default sysdate+2,
title_id number(10),
constraint r_bdate_pk primary key(book_date, member_id, copy_id, title_id),
constraint r_ctid_fk foreign key(copy_id, title_id) references title(copy_id, title_id));
- 참조하는 테이블이 다르다면 Constraint ~ References절을 따로 써주면 된다.