/*
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'));