/* 1. 출판사들에 대한 데이터를 담기위한 출판사 테이블(TB_PUBLISHER) 컬럼 : PUB_NO(출판사번호) NUMBER -- 기본키(PUBLISHER_PK) PUB_NAME(출판사명) VARCHAR2(50) -- NOT NULL(PUBLISHER_NN) PHONE(출판사전화번호) VARCHAR2(13) - 제약조건 없음 - 3개 정도의 샘플 데이터 추가하기 */ CREATE TABLE TB_PUBLISHER ( PUB_NO NUMBER CONSTRAINT PUBLISHER_PK PRIMARY KEY, PUB_NAME VARCHAR2(50) CONSTRAINT PUBLISHER_NN NOT NULL, PHONE VARCHAR2(13) ); INSERT INTO TB_PUBLISHER VALUES(1,'한빛미디어','031-202-2222'); INSERT INTO TB_PUBLISHER VALUES(2,'둘빛미디어','031-203-3333'); INSERT INTO TB_PUBLISHER VALUES(3,'노용철미디어','031-204-4444'); /* 2. 도서들에 대한 데이터를 담기위한 도서 테이블(TB_BOOK) 컬럼 : BK_NO (도서번호) NUMBER -- 기본키(BOOK_PK) BK_TITLE (도서명) VARCHAR2(50) -- NOT NULL(BOOK_NN_TITLE) BK_AUTHOR(저자명) VARCHAR2(20) -- NOT NULL(BOOK_NN_AUTHOR) BK_PRICE(가격) NUMBER BK_PUB_NO(출판사번호) NUMBER -- 외래키(BOOK_FK) (TB_PUBLISHER 테이블을 참조하도록) 이때 참조하고 있는 부모데이터 삭제 시 자식 데이터도 삭제 되도록 옵션 지정 - 5개 정도의 샘플 데이터 추가하기*/ CREATE TABLE TB_BOOK ( BK_NO NUMBER CONSTRAINT BOOK_PK PRIMARY KEY, BK_TITLE VARCHAR2(50) CONSTRAINT BOOK_NN_TITLE NOT NULL, BK_AUTHOR VARCHAR2(50) CONSTRAINT BOOK_NN_AUTHOR NOT NULL, BK_PRICE NUMBER, BK_PUB_NO NUMBER, FOREIGN KEY(BK_PUB_NO) REFERENCES TB_PUBLISHER(PUB_NO)ON DELETE CASCADE ); INSERT INTO TB_BOOK VALUES(1,'흥부와 놀부','김흥부',7000,1); INSERT INTO TB_BOOK VALUES(2,'놀부랑 흥부','김놀부',7500,2); INSERT INTO TB_BOOK VALUES(3,'흥부는 놀부랑','흥놀부',9000,1); INSERT INTO TB_BOOK VALUES(4,'놀부가 두명','놀흥부',9500,2); INSERT INTO TB_BOOK VALUES(5,'흥부가 두명','노용철',30000,3); /* 회원에 대한 데이터를 담기위한 회원 테이블 (TB_MEMBER) 컬럼명 : MEMBER_NO(회원번호) NUMBER -- 기본키(MEMBER_PK) MEMBER_ID(아이디) VARCHAR2(30) -- 중복금지(MEMBER_UQ) MEMBER_PWD(비밀번호) VARCHAR2(30) -- NOT NULL(MEMBER_NN_PWD) MEMBER_NAME(회원명) VARCHAR2(20) -- NOT NULL(MEMBER_NN_NAME) GENDER(성별) CHAR(1)-- 'M' 또는 'F'로 입력되도록 제한(MEMBER_CK_GEN) ADDRESS(주소) VARCHAR2(70) PHONE(연락처) VARCHAR2(13) STATUS(탈퇴여부) CHAR(1) - 기본값으로 'N' 으로 지정, 그리고 'Y' 혹은 'N'으로만 입력되도록 제약조건(MEMBER_CK_STA) ENROLL_DATE(가입일) DATE -- 기본값으로 SYSDATE, NOT NULL 제약조건(MEMBER_NN_EN) - 5개 정도의 샘플 데이터 추가하기*/ CREATE TABLE TB_MEMBER( MEMBER_NO NUMBER CONSTRAINT MEMBER_PK PRIMARY KEY, MEMBER_ID VARCHAR2(30) CONSTRAINT MEMBER_UQ UNIQUE, MEMBER_PWD VARCHAR2(30) CONSTRAINT MEMBER_NN_PWD NOT NULL, MEMBER_NAME VARCHAR2(20) CONSTRAINT MEMBER_NN_NAME NOT NULL, GENDER CHAR(1)CHECK(GENDER IN('M','F')), ADRESS VARCHAR2(70) , PHONE VARCHAR2(13) , STATUS CHAR(1)DEFAULT 'N' CONSTRAINT MEMBER_CK_STA CHECK(STATUS IN('Y','N')), ENROLL_DATE DATE DEFAULT SYSDATE CONSTRAINT MEMBER_NN_EN NOT NULL ); INSERT INTO TB_MEMBER VALUES(1,'user1','1213','노이병','M','수원시','010-2222-7805','N',SYSDATE); INSERT INTO TB_MEMBER VALUES(2,'user2','1223','네이순','F','서울시','010-4321-1251','N',SYSDATE); INSERT INTO TB_MEMBER VALUES(3,'user3','1233','김애용','F','좀비시','010-2555-2314','Y',SYSDATE); INSERT INTO TB_MEMBER VALUES(4,'user4','1243','침착맨','M','안양시','010-8723-7178','N',SYSDATE); INSERT INTO TB_MEMBER VALUES(5,'user5','1253','주호민','M','알수없음시','010-6922-2995','N',SYSDATE); /* 4. 어떤 회원이 어떤 도서를 대여했는지에 대한 대여목록 테이블(TB_RENT) 컬럼 : RENT_NO(대여번호) NUMBER -- 기본키(RENT_PK) RENT_MEM_NO(대여회원번호) NUMBER -- 외래키(RENT_FK_MEM) TB_MEMBER와 참조하도록 이때 부모 데이터 삭제시 자식 데이터 값이 NULL이 되도록 옵션 설정 RENT_BOOK_NO(대여도서번호) NUMBER -- 외래키(RENT_FK_BOOK) TB_BOOK와 참조하도록 이때 부모 데이터 삭제시 자식 데이터 값이 NULL값이 되도록 옵션 설정 RENT_DATE(대여일) DATE -- 기본값 SYSDATE - 3개 정도 샘플데이터 추가하기*/ CREATE TABLE TB_RENT( RENT_NO NUMBER CONSTRAINT RENT_PK PRIMARY KEY, RENT_MEM_NO NUMBER, --자식 테이블 만들어주고 FOREIGN KEY (RENT_MEM_NO) REFERENCES TB_MEMBER(MEMBER_NO)ON DELETE SET NULL, --FOREIGN KEY를 이용해 부모테이블을 참조한 뒤 부모를 삭제하면 자식 테이블이 NULL값을 가지도록 해줌 RENT_BOOK_NO NUMBER, FOREIGN KEY (RENT_BOOK_NO) REFERENCES TB_BOOK(BK_NO) ON DELETE SET NULL, RENT_DATE DATE DEFAULT SYSDATE ); INSERT INTO TB_RENT VALUES(1,1,3,SYSDATE); INSERT INTO TB_RENT VALUES(2,2,4,TO_DATE('2023-10-15','YYYY-MM-DD')); INSERT INTO TB_RENT VALUES(3,3,1,TO_DATE('2023-09-11','YYYY-MM-DD')); INSERT INTO TB_RENT VALUES(4,4,2,TO_DATE('2023-09-26','YYYY-MM-DD'));