본문 바로가기

KOSTA

파이널 sql

CREATE TABLE MEMBER(
  user_id number PRIMARY KEY,
  id VARCHAR2(30) NOT NULL,
  password VARCHAR2(30) NOT NULL,
  nickname VARCHAR2(30) NOT NULL,
  email VARCHAR2(30) NOT NULL,
  phone_number VARCHAR2(30) NOT NULL,
  address VARCHAR2(50),
  holding_coin NUMBER DEFAULT 0,
  evaluation NUMBER DEFAULT 0
);



CREATE TABLE CATEGORY(
  category_id NUMBER PRIMARY KEY,
  category_name VARCHAR2(20) NOT NULL
);


CREATE TABLE MEMBER_IMG(
  image_id NUMBER PRIMARY KEY,
  user_id NUMBER,
  CONSTRAINT FK_USER_ID FOREIGN KEY(user_id) REFERENCES MEMBER(USER_ID) ON DELETE CASCADE,
  url VARCHAR2(200) NOT NULL
);


CREATE TABLE PRODUCT(
  product_id NUMBER PRIMARY KEY,
  user_id NUMBER,
  category_id NUMBER,
  product_name VARCHAR2(30) NOT NULL,
  title VARCHAR2(50) NOT NULL,
  product_info VARCHAR2(200) NOT NULL,
  min_price NUMBER NOT NULL,
  pay_method VARCHAR2(10) NOT NULL,
  create_date DATE NOT NULL,
  sale_date DATE NOT NULL,
  status CHAR(1) CONSTRAINT status_boolean CHECK(status IN ('0', '1')),
  buyer_id NUMBER NOT NULL,
  sale_price NUMBER DEFAULT 0,
  CONSTRAINT FK_USERID_PRODUCT FOREIGN KEY(user_id) REFERENCES MEMBER(user_id) ON DELETE CASCADE,
  CONSTRAINT FK_CATEGORY_PRODUCT FOREIGN KEY(category_id) REFERENCES CATEGORY(category_id)
);



CREATE TABLE VIDEOS(
  video_id NUMBER PRIMARY KEY,
  product_id NUMBER,
  video_url VARCHAR2(200) NOT NULL,
  CONSTRAINT FK_PRODUCTID_VIDEOS FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id) ON DELETE CASCADE
);



CREATE TABLE IMAGES(
  image_id NUMBER PRIMARY KEY,
  product_id NUMBER,
  image_url VARCHAR2(200) NOT NULL,
  CONSTRAINT FK_PRODUCTID_IMAGES FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id) ON DELETE CASCADE
);



CREATE TABLE DEAL(
  deal_id NUMBER PRIMARY KEY,
  product_id NUMBER,
  user_id NUMBER,
  status NUMBER DEFAULT 0,
  CONSTRAINT FK_PRODUCTID_DEAL FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id) ON DELETE CASCADE,
  CONSTRAINT FK_MEMBERID_DEAL FOREIGN KEY(user_id) REFERENCES MEMBER(user_id) ON DELETE CASCADE
);



CREATE TABLE PRODUCT_COMMENTS(
  comment_id NUMBER PRIMARY KEY,
  product_id NUMBER,
  comment_contents CLOB,
  comment_writer VARCHAR2(30) NOT NULL,
  comment_date DATE NOT NULL,
  CONSTRAINT FK_PRODUCTID_PROD_COMMENT FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id)
);



CREATE TABLE WISHLIST(
  wish_id NUMBER PRIMARY KEY,
  product_id NUMBER,
  user_id NUMBER,
  wish_date DATE NOT NULL,
  CONSTRAINT FK_PRODUCTID_WISH FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id) ON DELETE CASCADE,
  CONSTRAINT FK_USERID_WISH FOREIGN KEY(user_id) REFERENCES MEMBER(user_id) ON DELETE CASCADE
);


/*
ALTER TABLE PRODUCT ADD CONSTRAINT UNIQ_USERID_PRODUCT UNIQUE(user_id);
*/

CREATE TABLE CHAT_ROOM(
  room_id NUMBER PRIMARY KEY,
  user_id NUMBER,
  product_id NUMBER,
  participant NUMBER,
  CONSTRAINT FK_USERID_CHATROOM FOREIGN KEY(user_id) REFERENCES MEMBER(user_id),
  CONSTRAINT FK_PRODUCTID_CHATROOM FOREIGN KEY(product_id) REFERENCES PRODUCT(product_id)
  /*,
  CONSTRAINT FK_PATICIPANT_CHATROOM FOREIGN KEY(participant) REFERENCES PRODUCT(user_id)*/
);


CREATE TABLE MESSAGE(
  message_id NUMBER PRIMARY KEY,
  room_id NUMBER,
  message_content CLOB,
  log_time DATE NOT NULL,
  CONSTRAINT FK_ROOMID_MESSAGE FOREIGN KEY(room_id) REFERENCES CHAT_ROOM(room_id) ON DELETE CASCADE
);


CREATE TABLE MANAGER(
  manager_id NUMBER PRIMARY KEY,
  id VARCHAR2(30) NOT NULL,
  password VARCHAR2(30) NOT NULL
);



CREATE TABLE PAYMENT(
  payment_id NUMBER PRIMARY KEY,
  user_id NUMBER,
  CONSTRAINT FK_USERID_PAYMENT FOREIGN KEY(user_id) REFERENCES MEMBER(user_id)
);



CREATE TABLE BOARD_CATEGORY(
  category_id NUMBER PRIMARY KEY,
  category_name VARCHAR2(20) NOT NULL
);


CREATE TABLE REPORT_CATEGORY(
  category_id NUMBER PRIMARY KEY,
  category_name VARCHAR2(30) NOT NULL
);



CREATE TABLE QNA(
  qna_id NUMBER PRIMARY KEY,
  category_id NUMBER,
  user_id NUMBER,
  qna_title VARCHAR2(30) NOT NULL,
  qna_writer VARCHAR2(30) NOT NULL,
  qna_contents CLOB NOT NULL,
  qna_date DATE NOT NULL,
  CONSTRAINT FK_CATEGORYID_QNA FOREIGN KEY(category_id) REFERENCES BOARD_CATEGORY(category_id),
  CONSTRAINT FK_USERID_QNA FOREIGN KEY(user_id) REFERENCES MEMBER(user_id)
);



CREATE TABLE COMMENTS(
  comment_id NUMBER PRIMARY KEY,
  manager_id NUMBER,
  qna_id NUMBER,
  comment_contents CLOB NOT NULL,
  commnet_date DATE NOT NULL,
  comment_writer VARCHAR2(30) NOT NULL,
  CONSTRAINT FK_MANAGERID_COMMENTS FOREIGN KEY(manager_id) REFERENCES MANAGER(manager_id),
  CONSTRAINT FK_QNAID_COMMENTS FOREIGN KEY(qna_id) REFERENCES QNA(qna_id)
);



CREATE TABLE FAQ(
  faq_id NUMBER PRIMARY KEY,
  category_id NUMBER,
  manager_id NUMBER,
  faq_category NUMBER NOT NULL,
  faq_title VARCHAR2(30) NOT NULL,
  faq_contents CLOB NOT NULL,
  faq_date DATE NOT NULL,
  CONSTRAINT FK_CATEGORYID_FAQ FOREIGN KEY(category_id) REFERENCES BOARD_CATEGORY(category_id),
  CONSTRAINT FK_MANAGERID_FAQ FOREIGN KEY(manager_id) REFERENCES MANAGER(manager_id)
);


CREATE TABLE REPORT(
  report_id NUMBER PRIMARY KEY,
  category_id NUMBER,
  user_id NUMBER,
  report_contents CLOB NOT NULL,
  report_writer VARCHAR2(30) NOT NULL,
  report_target VARCHAR2(30) NOT NULL,
  report_date DATE NOT NULL,
  CONSTRAINT FK_CATEGORYID_REPORT FOREIGN KEY(category_id) REFERENCES REPORT_CATEGORY(category_id) ON DELETE CASCADE,
  CONSTRAINT FK_USERID_REPORT FOREIGN KEY(user_id) REFERENCES MEMBER(user_id) ON DELETE CASCADE
);



CREATE TABLE NOTICE(
  notice_id NUMBER PRIMARY KEY,
  manager_id NUMBER,
  notice_title VARCHAR2(30) NOT NULL,
  notice_contents CLOB NOT NULL,
  notice_writer VARCHAR2(30) NOT NULL,
  notice_date DATE NOT NULL,
  CONSTRAINT FK_MANAGERID_NOTICE FOREIGN KEY(manager_id) REFERENCES MANAGER(manager_id) ON DELETE CASCADE
);


CREATE TABLE PENALTY(
  penalty_id NUMBER PRIMARY KEY,
  user_id NUMBER,
  manager_id NUMBER,
  penalty_contents CLOB NOT NULL,
  penalty_date DATE NOT NULL,
  end_date DATE NOT NULL,
  CONSTRAINT FK_USERID_PENALTY FOREIGN KEY(user_id) REFERENCES MEMBER(user_id) ON DELETE CASCADE,
  CONSTRAINT FK_MANAGERID_PENALTY FOREIGN KEY(manager_id) REFERENCES MANAGER(manager_id) ON DELETE CASCADE
);


CREATE SEQUENCE SEQ_CATEGORYID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_BOARD_CATEGORYID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_CHAT_ROOMID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_COMMENTID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_DEALID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_FAQID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_IMAGEID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_MANAGERID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_MEMBER_IMGID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_MESSAGEID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_NOTICEID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_PAYMENTID
  INCREMENT BY 1
  START WITH 1;

CREATE SEQUENCE SEQ_PENALTYID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_PRODUCT_COMMENTID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_QNAID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_REPORTID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_REPORT_CATEGORYID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_WISHLISTID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_MEMBER
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_PRODUCTID
  INCREMENT BY 1
  START WITH 1;
  
CREATE SEQUENCE SEQ_VIDEOID
  INCREMENT BY 1
  START WITH 1;
 
CREATE SEQUENCE SEQ_USERID
  INCREMENT BY 1
  START WITH 1;

  
ALTER TABLE MEMBER ADD(NAME VARCHAR2(50));
ALTER TABLE MEMBER MODIFY(ADDRESS VARCHAR2(200));

INSERT INTO CATEGORY(
  CATEGORY_ID, CATEGORY_NAME
  )VALUES(
  SEQ_CATEGORYID.NEXTVAL, 'category'
  );

INSERT INTO PRODUCT(
  PRODUCT_ID, USER_ID, CATEGORY_ID, PRODUCT_NAME, TITLE, PRODUCT_INFO, MIN_PRICE,
  PAY_METHOD, CREATE_DATE, SALE_DATE, STATUS, BUYER_ID
  )VALUES(
  SEQ_PRODUCTID.NEXTVAL, 3, 1, 'test', 'testTitle', 'exam for stream', 3000, 'cash', SYSDATE, SYSDATE + 1, 1, 15
  );
  
INSERT INTO VIDEOS(
  VIDEO_ID, PRODUCT_ID, VIDEO_URL
  )VALUES(
  SEQ_VIDEOID.NEXTVAL, 2, 'https://youtube.com/embed/_aM1d3KNPB8?autoplay=1&mute=1'
  );

SET DEFINE OFF;

/*
5.12 final 수정
코인결제 테이블 삭제
회원 - 보유코인 삭제
게시카테고리 테이블 삭제
FAQ, 문의사항 - 카테고리id 삭제
판매상품 - 낙찰가, 시작가격, 판매기간, 결제방식
판매상품 - 구매자 널 허용 수정, 가격(price)컬럼 추가
*/

drop table payment;

alter table product drop column sale_price;
alter table product drop column min_price;
alter table product drop column sale_date;
alter table product drop column pay_method;

alter table product add price number;
alter table product modify (buyer_id number null);

drop table board_category;

/*상품 판매날짜 추가*/
alter table product add sale_date date;

/*상품 이미지 추가*/
alter table product add image varchar2(50);

/*토큰 인증테이블 추가*/
CREATE TABLE member_auth
(user_id number primary key,
auth VARCHAR2(50) NOT NULL,
CONSTRAINT FK_auth_user_id FOREIGN KEY(user_id) REFERENCES member(user_id)
);

alter table member add
enabled char(1) default '1';

/*수정*/
alter table member modify password varchar2(150);