KHAcademyProject2020 / Spring-Project-Trip2Reap

국내 여행 사이트
Apache License 2.0
0 stars 0 forks source link

[2020.11.20] 테이블 정리 #7

Closed loveAlakazam closed 3 years ago

loveAlakazam commented 3 years ago

접속계정은 SYSTEM입니다.

1. 계정생성 및 권한 부여 (접속계정: SYSTEM)

CREATE USER TRIP2REAP IDENTIFIED BY TRIP2REAP;
GRANT RESOURCE, CONNECT TO TRIP2REAP;

GRANT CREATE VIEW TO TRIP2REAP; --VIEW 생성권한 부여

GRANT CREATE SYNONYM TO TRIP2REAP; --SYNONYM 생성권한 부여

# 접속계정은 **TRIP2REAP**입니다. # 2. 기존 테이블 & 시퀀스 삭제 ```SQL -- TABLE 삭제 DROP TABLE MEMBER CASCADE CONSTRAINTS; DROP TABLE KAKAOMEMBER CASCADE CONSTRAINTS; DROP TABLE CATEGORY CASCADE CONSTRAINTS; DROP TABLE HOTEL CASCADE CONSTRAINTS; DROP TABLE HOTEL_RESERVATION CASCADE CONSTRAINTS; DROP TABLE HOTEL_REVIEW CASCADE CONSTRAINTS; DROP TABLE IMG_FILE CASCADE CONSTRAINTS; DROP TABLE REPLY CASCADE CONSTRAINTS; DROP TABLE LOCAL_INFO CASCADE CONSTRAINTS; DROP TABLE ROOM CASCADE CONSTRAINTS; DROP TABLE BOARD CASCADE CONSTRAINTS; DROP TABLE LIKES CASCADE CONSTRAINTS; DROP TABLE CERTIFICATION; DROP TABLE COURSE CASCADE CONSTRAINTS; DROP TABLE COURSE_DETAIL CASCADE CONSTRAINTS; DROP TABLE TRAVEL CASCADE CONSTRAINTS; --시퀀스 삭제 DROP SEQUENCE SEQ_BO_NO; DROP SEQUENCE SEQ_FILE_NO; DROP SEQUENCE SEQ_RE_NO; DROP SEQUENCE SEQ_TRNO; DROP SEQUENCE SEQ_ROOM_NO; DROP SEQUENCE SEQ_RESERVE_NO; ```
## 뷰 삭제 ```sql --뷰 삭제 SQL쿼리문 DROP VIEW HOTEL_DETAIL_IMG_VIEW; DROP VIEW HOTEL_REVIEW_INFO_VIEW; DROP VIEW HOTEL_ROOM_INFO_VIEW; DROP VIEW THUMBNAIL_IMG_VIEW; DROP VIEW HOTEL_VIEW; DROP VIEW TLIST; ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP입니다.

3. 회원관련 (김기쁨)

3-1. MEMBER 테이블


CREATE TABLE MEMBER(
   MEMBER_ID VARCHAR2(30) PRIMARY KEY,
   MEMBER_PWD VARCHAR2(100),
   MEMBER_NAMES VARCHAR2(30),
   NICKNAME VARCHAR2(30) NOT NULL,
   GENDER VARCHAR2(10),
   PHONE VARCHAR2(30),
   MEMBER_EMAIL VARCHAR2(50),
   M_CATEGORY VARCHAR2(10) NOT NULL,
   M_STATUS VARCHAR2(10) NOT NULL,
      CHECK(GENDER IN('남자','여자')),
      CHECK(M_STATUS IN('Y','N'))
);

ALTER TABLE MEMBER MODIFY (M_STATUS DEFAULT 'Y');
ALTER TABLE MEMBER ADD UNIQUE(PHONE);

# 3-2. MEMBER 테이블 데이터 삽입 ```SQL INSERT INTO MEMBER VALUES('admin', '$2a$10$D3RWlUNOhYRLaCGFSYbJg.YXwHYGfHvhr6BhZ8UH9sgHWI0Vn4kLO', '관리자', '관리자', '여자', '01012345678','admin@naver.com','member' ,default); INSERT INTO MEMBER VALUES('soo', '$2a$10$D3RWlUNOhYRLaCGFSYbJg.YXwHYGfHvhr6BhZ8UH9sgHWI0Vn4kLO', '김수진', '수진k', '여자', '01095266236','sjrlaa@gmail.com','member' ,default); INSERT INTO MEMBER VALUES('ko1850', '$2a$10$D3RWlUNOhYRLaCGFSYbJg.YXwHYGfHvhr6BhZ8UH9sgHWI0Vn4kLO', '이규호', '규호', '남자', '01024593141','ko1804@naver.com','member' ,default); INSERT INTO MEMBER VALUES('TRIP', '$2a$10$a3KAdt7hoVH02YhsqIWszuXUumRpihW3kHnEe1z3hRMbcrs7.bAjK', '최은강', 'loveAlakazam', '여자', '01071685268','dmsrkd1216@gmail.com','member' ,default); INSERT INTO MEMBER VALUES('joy', '$2a$10$D3RWlUNOhYRLaCGFSYbJg.YXwHYGfHvhr6BhZ8UH9sgHWI0Vn4kLO', '김기쁨', 'joy', '여자', '01030987909','lcocvce@naver.com','member' ,default); ```
# 3-3. CERTIFICATION 테이블 ```SQL --인증번호 테이블 CREATE TABLE CERTIFICATION( EMAIL VARCHAR2(50) NOT NULL, RANDOMKEY VARCHAR2(50) NOT NULL, PRIMARY KEY(EMAIL, RANDOMKEY)); ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다

4. 게시판(여행지, 여행코스, 여행후기, 호텔 ) 공통 테이블

4-1. CATEGORY

--카테고리 테이블
CREATE TABLE CATEGORY(
    CA_CODE NUMBER(5) NOT NULL,
    CA_NAME VARCHAR2(30) NOT NULL,
    PRIMARY KEY (CA_CODE),
    CHECK(CA_CODE BETWEEN 1 AND 5) --카테고리번호는 1~5로만 제한한다.
);

--카테고리 데이터 삽입
INSERT INTO CATEGORY VALUES(1, '여행지');
INSERT INTO CATEGORY VALUES(2, '여행 코스');
INSERT INTO CATEGORY VALUES(3, '여행후기 사진');
INSERT INTO CATEGORY VALUES(4, '여행후기 목록');
INSERT INTO CATEGORY VALUES(5, '호텔');

> # 4-2. BOARD 테이블 ```SQL --BOARD 테이블 CREATE TABLE BOARD( BO_NO NUMBER(10) NOT NULL, CA_CODE NUMBER(5) NOT NULL, BO_TITLE VARCHAR2(300) NOT NULL, BO_CONTENT LONG NOT NULL, MEMBER_ID VARCHAR2(30) NOT NULL, BO_COUNT NUMBER(10) DEFAULT 0 NOT NULL, BO_TAG VARCHAR2(300), BO_DELETE_YN VARCHAR2(10) DEFAULT 'N' NOT NULL, REGDATE DATE DEFAULT SYSDATE, PRIMARY KEY (BO_NO), FOREIGN KEY (CA_CODE) REFERENCES CATEGORY(CA_CODE), FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER(MEMBER_ID), CHECK (CA_CODE BETWEEN 1 AND 5), --테이블 카테고리번호는 1,2,3,4,5 로 제한한다. CHECK (BO_DELETE_YN IN ('Y', 'N')) ); ```

> # 4-3. IMG_FILE ```SQL --첨부 파일테이블 CREATE TABLE IMG_FILE( FILE_NO NUMBER(10) NOT NULL, BO_NO NUMBER(10) NOT NULL, ORIGIN_NAME VARCHAR2(300) NOT NULL, CHANGE_NAME VARCHAR2(300) NOT NULL, FILE_LEVEL NUMBER(5) NOT NULL, FILE_PATH VARCHAR2(1000) NOT NULL, FILE_DELETE_YN VARCHAR2(10) DEFAULT 'N' NOT NULL, -- 제약조건 PRIMARY KEY(FILE_NO), FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO), CHECK(FILE_LEVEL IN (1,2) ), --파일레벨 1(썸네일) / 2(기본 이미지) CHECK(FILE_DELETE_YN IN ('Y', 'N')) ); ```
> # 4-4. LIKES ```SQL CREATE TABLE LIKES( BO_NO NUMBER(10) NOT NULL, LIKE_YN VARCHAR2(10) DEFAULT 'N' NOT NULL, MEMBER_ID VARCHAR2(30) NOT NULL, PRIMARY KEY(BO_NO, MEMBER_ID), FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID), CHECK(LIKE_YN IN ('Y', 'N')) ); ```

> # 4-5. REPLY ```SQL CREATE TABLE REPLY( RE_NO NUMBER(10) NOT NULL, BO_NO NUMBER(10) NOT NULL, MEMBER_ID VARCHAR2(30) NOT NULL, RE_DATE DATE DEFAULT SYSDATE NOT NULL, RE_CONTENT VARCHAR2(1500) NOT NULL, RE_DELETE_YN VARCHAR2(10) DEFAULT 'N' NOT NULL, PRIMARY KEY(RE_NO), --파일번호 FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO), --게시판 번호 FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID), --작성자 아이디 CHECK(RE_DELETE_YN IN ('Y', 'N')) --파일 삭제여부 (Y/N) ); ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다.

5. 시퀀스(SEQUENCE)

5-1. BOARD (컬럼: BO_NO ) 시퀀스 - SEQ_BO_NO

CREATE SEQUENCE SEQ_BO_NO
START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999
NOCYCLE
NOCACHE;

5-2. IMG_FILE (컬럼: FILE_NO ) 시퀀스 - SEQ_FILE_NO

CREATE SEQUENCE SEQ_FILE_NO
START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999
NOCYCLE
NOCACHE;

5-3. REPLY (컬럼: RE_NO ) 시퀀스 - SEQ_RE_NO

CREATE SEQUENCE SEQ_RE_NO
START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999
NOCYCLE
NOCACHE;

# 5-4. TRAVEL (컬럼: **`TR_NO`** ) 시퀀스 - `SEQ_TRNO` ```SQL CREATE SEQUENCE SEQ_TRNO START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 NOCYCLE NOCACHE; ```
# 5-5. ROOM(컬럼: **`ROOM_NO`** ) 시퀀스 - `SEQ_ROOM_NO` ```SQL CREATE SEQUENCE SEQ_ROOM_NO START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 NOCYCLE NOCACHE; ```
# 5-6. HOTEL_RESERVATION(컬럼: **`RESERVE_NO`** ) 시퀀스 - `SEQ_RESERVE_NO` ```SQL CREATE SEQUENCE SEQ_RESERVE_NO START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 NOCYCLE NOCACHE; ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다.

6. 여행후기 관련 (이규호)

여행후기 사진게시판(CA_CODE: 3)

여행후기 목록게시판(CA_CODE: 4)

6-1. BOARD테이블에 샘플 데이터 삽입

-- BOARD테이블에 여행후기샘플데이터 삽입

-- SEQ_BO_NO 현재값 출력확인
SELECT SEQ_BO_NO.CURRVAL FROM DUAL; -- 6이 출력됩니다.

# 6-2. - 업데이트 날짜: 2020. ```SQL ```
# 6-3. INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'soo',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'1.jpg','101.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',4,'노을이 지는 석양','#바다 #여행지 #짱이쁘다','하지만 이렇게 글자를 무작위로 나열하는 것은 아무런 의미를 가지지 않습니다. 일반적으로 한국어 텍스트는 초성, 중성, 종성으로 구성된 낱개의 음절들이 모여 단어를 이루고 [1] 이 단어들이 다시 모여 문장을 이루는데, 글자들을 랜덤으로 타이핑해서는 음절이나 단어를 이룰 수 있는 확률은 극히 희박하겠죠. 그래서 이번에는 고양이에게 음절을 타이핑하는 방법을 (어떻게든) 가르쳐봅니다:') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'2.jpg','102.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'joy',3,'노을진 산 좀 보고가세요','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'3.jpg','103.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'TRIP',3,'신기한 곳에 다녀왔습니다.','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'4.jpg','104.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'TRIP',3,'우포늪에 다녀왔습니다','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'5.jpg','105.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'TRIP',4,'한국에 이런곳이 있다니','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'6.jpg','106.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'joy',3,'노을진 하늘','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'7.jpg','107.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'TRIP',4,'아침 안개낀 바다','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'8.jpg','108.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',3,'남산타워','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'9.jpg','109.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'soo',4,'초원이 정말 이쁘네요','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'10.jpg','110.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',4,'여기가 어딘지 궁금하십니까?','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'11.jpg','111.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'joy',4,'신기한 곳이 있네요','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'12.jpg','112.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',3,'신기하다','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'13.jpg','113.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'14.jpg','114.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'joy',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'15.jpg','115.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'soo',4,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'16.jpg','116.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'soo',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'17.jpg','117.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'18.jpg','118.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'ko1850',4,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'19.jpg','119.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; INSERT ALL INTO BOARD(BO_NO,MEMBER_ID,CA_CODE,BO_TITLE,BO_TAG,BO_CONTENT) VALUES(SEQ_BO_NO.NEXTVAL,'joy',3,'경치 좋은 바닷가','#바다 #여행지 #짱이쁘다','오늘은 바닷가에 놀러갔다왔습니다') INTO IMG_FILE VALUES(SEQ_FILE_NO.NEXTVAL,SEQ_BO_NO.NEXTVAL,'20.jpg','120.jpg',1,'null',DEFAULT) SELECT * FROM DUAL; - 업데이트 날짜: 2020. ```SQL ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다.

7. 여행지 관련 (김수진)

여행지(CA_CODE: 1)

7-1. TRAVEL

--여행지 테이블 생성
  CREATE TABLE "TRIP2REAP"."TRAVEL" 
   (    "TR_NO" NUMBER(10,0), 
    "BO_NO" NUMBER(10,0) NOT NULL ENABLE, 
    "TR_ADDR" VARCHAR2(300 BYTE) NOT NULL ENABLE, 
    "TR_THEME" VARCHAR2(50 BYTE) NOT NULL ENABLE, 
    "TR_REG" VARCHAR2(50 BYTE) NOT NULL ENABLE, 
    "TR_TITLE" VARCHAR2(100 BYTE), 
    "TR_PHONE" VARCHAR2(20 BYTE), 
     PRIMARY KEY ("TR_NO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE, 
     FOREIGN KEY ("BO_NO")
      REFERENCES "TRIP2REAP"."BOARD" ("BO_NO") ENABLE
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

# 7-2. 샘플 여행지 데이터 삽입 - (1) BOARD테이블에 데이터 삽입 - (2) TRAVEL테이블에 데이터 삽입 ```SQL --(1) 샘플데이터 삽입 -- BOARD테이블에 삽입 insert into BOARD values(SEQ_BO_NO.NEXTVAL,1,'롯데월드','롯데월드 어드벤처가 지난해 선풍적인 열풍을 몰고 온 가을시즌 축제 호러 할로윈 :The Invitation, 9월 5일부터 11월 15일(일)까지 개최한다. 낮에는 남녀노소 누구나 신나게 즐기는 큐티 할로윈이, 저녁 6시 이후엔 심장을 쫄깃하게 만드는 본격적인 호러 할로윈이 파크 곳곳에서 펼쳐진다.','admin',0,'놀이공원','N',SYSDATE); insert into BOARD values(SEQ_BO_NO.NEXTVAL,1,'서울디저트페어 [초코&딸기전]',' "국내 최대 수제 디저트페어 “서울디저트페어” 26회 서울디저트페어 [초코&딸기전]에서는 발렌타인데이의 설렘 가득한 초콜릿과 딸기를 컨셉으로 달콤!상콤한 디자인 마카롱, 수제청 및 에이드 카놀리 등 초코와 딸기컨셉 디저트와 함께 꿀케이크나 두부 아이스크림 등 이색 디저트로 달콤한 즐거움을 선보일 예정이다. 취향을 저격하는 핸드메이드'수공예존' 까지 한 전시장에서 만나 볼 수 있는 서울디저트페어! 각 지역의 디저트 맛집이 한 자리에 모인 서울디저트페어를 강남에서 만나보자."','admin',0'디저트페어#축제#2020','N',SYSDATE); -- TRAVEL테이블에 삽입 INSERT INTO TRAVEL VALUES(SEQ_TRNO.NEXTVAL,'서울 송파구 올림픽로 240','관광지', SEQ_BO_NO.CURRVAL, ,'서울', null,null); INSERT INTO TRAVEL VALUES(SEQ_TRNO.NEXTVAL,'서울 서초구 강남대로 27','서울 크리스마스 페스티벌',축제',SEQ_BO_NO.CURRVAL,'서울', null,null); ```
# 7-3. TLIST VIEW생성하기 ```SQL --TLIST 뷰 생성하기 CREATE OR REPLACE FORCE VIEW "TRIP2REAP"."TLIST" ("BO_NO", "CA_CODE", "BO_TITLE", "BO_CONTENT", "MEMBER_ID", "BO_COUNT", "BO_TAG", "BO_DELETE_YN", "TR_ADDR", "TR_THEME", "CHANGE_NAME") AS SELECT BOARD.BO_NO, BOARD.CA_CODE, BO_TITLE, BO_CONTENT, BOARD.MEMBER_ID, BO_COUNT, BO_TAG, BO_DELETE_YN, TR_ADDR, TR_THEME, CHANGE_NAME FROM BOARD JOIN TRAVEL T ON (T.BO_NO = BOARD.BO_NO) JOIN MEMBER M ON (M.MEMBER_ID = BOARD.MEMBER_ID) JOIN CATEGORY C ON (C.CA_CODE = BOARD.CA_CODE) JOIN IMG_FILE I ON (BOARD.BO_NO = I.BO_NO) WHERE BO_DELETE_YN = 'N' ORDER BY REGDATE DESC; ``` --TDETAIL뷰 생성 CREATE OR REPLACE FORCE VIEW "TRIP2REAP"."TDETAIL" ("BO_NO", "CA_CODE", "BO_TITLE", "BO_CONTENT", "MEMBER_ID", "BO_COUNT", "BO_TAG", "BO_DELETE_YN", "REGDATE", "TR_ADDR", "TR_THEME", "CHANGE_NAME") AS SELECT BOARD.BO_NO, BOARD.CA_CODE, BO_TITLE, BO_CONTENT, BOARD.MEMBER_ID, BO_COUNT, BO_TAG, BO_DELETE_YN, REGDATE, TR_ADDR, TR_THEME, CHANGE_NAME FROM BOARD JOIN TRAVEL T ON (T.BO_NO = BOARD.BO_NO) JOIN MEMBER M ON (M.MEMBER_ID = BOARD.MEMBER_ID) JOIN CATEGORY C ON (C.CA_CODE = BOARD.CA_CODE) JOIN IMG_FILE I ON (BOARD.BO_NO = I.BO_NO) WHERE BO_DELETE_YN = 'N' ORDER BY REGDATE DESC;
# 7-4. - 업데이트 날짜: 2020. ```SQL ```
# 7-5. - 업데이트 날짜: 2020. ```SQL ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다.

8. Course 관련 (이수진 👉 김수진, 김기쁨, 아규호, 최은강)

여행코스(CA_CODE: 2)

References


8-1. COURSE (여행코스 테이블)

--여행코스 테이블
CREATE TABLE COURSE(
    BO_NO NUMBER(10) NOT NULL,
    CO_THEME VARCHAR2(50) NOT NULL,
    CO_DAY_TRIP VARCHAR2(20) NOT NULL,
    CO_DISTANCE NUMBER(10) NOT NULL,
    CO_DELETE_YN VARCHAR2(10) NOT NULL,

    PRIMARY KEY(BO_NO),
    FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO),
    CHECK(CO_DELETE_YN IN ('Y', 'N'))
);

# 8-2. COURSE_DETAIL ```sql --코스별 여행지 목록 테이블 CREATE TABLE COURSE_DETAIL( BO_NO NUMBER(10) NOT NULL, TR_NO NUMBER(10) NOT NULL, CO_TR_LEVEL NUMBER(3) NOT NULL, PRIMARY KEY(BO_NO), FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO), FOREIGN KEY(TR_NO) REFERENCES TRAVEL(TR_NO) ); ```
# 8-3. ```sql ```
# 8-4. ```sql ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP 입니다.

9. 호텔관련 (최은강)

HOTEL(CA_CODE:5)

9-0. LOCAL_INFO (지역정보 테이블)

CREATE TABLE LOCAL_INFO(
    LOCAL_CODE NUMBER(5) NOT NULL,      --지역번호
    LOCAL_NAME VARCHAR2(50) NOT NULL,    --지역이름
    PRIMARY KEY(LOCAL_CODE)
);

9-0-2. 지역정보 테이블 데이터 삽입

--지역정보 데이터 삽입
INSERT INTO LOCAL_INFO VALUES(1,'강원도');
INSERT INTO LOCAL_INFO VALUES(2,'경기도');
INSERT INTO LOCAL_INFO VALUES(3,'경상남도');
INSERT INTO LOCAL_INFO VALUES(4,'경상북도');
INSERT INTO LOCAL_INFO VALUES(5,'광주광역시');
INSERT INTO LOCAL_INFO VALUES(6, '대구광역시');
INSERT INTO LOCAL_INFO VALUES(7, '대전광역시');
INSERT INTO LOCAL_INFO VALUES(8, '부산광역시');
INSERT INTO LOCAL_INFO VALUES(9, '서울특별시');
INSERT INTO LOCAL_INFO VALUES(10, '세종특별자치시');
INSERT INTO LOCAL_INFO VALUES(11, '인천광역시');
INSERT INTO LOCAL_INFO VALUES(12, '울산광역시');
INSERT INTO LOCAL_INFO VALUES(13, '전라남도');
INSERT INTO LOCAL_INFO VALUES(14, '전라북도');
INSERT INTO LOCAL_INFO VALUES(15, '제주특별자치도');
INSERT INTO LOCAL_INFO VALUES(16, '충청남도');
INSERT INTO LOCAL_INFO VALUES(17, '충청북도');

9-1. HOTEL

--호텔(HOTEL)테이블
CREATE TABLE HOTEL(
    BO_NO NUMBER(10) NOT NULL, --호텔번호
    HOTEL_ADDRESS VARCHAR2(1000) NOT NULL,--호텔주소

    HOTEL_LOCAL_CODE NUMBER(5) NOT NULL,--지역코드

    HOTEL_SITE VARCHAR2(1000),--호텔사이트
    HOTEL_TEL VARCHAR2(30) NULL,--전화번호
    HOTEL_REVIEW_SCORE NUMBER(5,1) DEFAULT 0 NOT NULL, --호텔 후기 평점
    HOTEL_RANK NUMBER(5),  --호텔등급(1~5, 없음)

    HOTEL_OPEN_TIME NUMBER(5) DEFAULT 0 NOT NULL,--호텔오픈시각
    HOTEL_CLOSE_TIME NUMBER(5) DEFAULT 23 NOT NULL,--호텔종료시각
    HOTEL_OPTION VARCHAR2(2000), --호텔옵션
    CHECK_IN NUMBER(5) DEFAULT 10 NOT NULL, --체크인
    CHECK_OUT NUMBER(5) DEFAULT 15 NOT NULL,--체크아웃

    -- 제약조건
    CONSTRAINT HT_PK PRIMARY KEY (BO_NO),       --기본키(BO_NO)
    FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO),  --외래키(BO_NO)
    FOREIGN KEY(HOTEL_LOCAL_CODE) REFERENCES LOCAL_INFO(LOCAL_CODE) --외래키(HOTEL_LOCAL_CODE)
);

# 9-2. ROOM ```SQL --호텔방(ROOM)테이블 CREATE TABLE ROOM( ROOM_NO NUMBER(10), --방번호 BO_NO NUMBER(10) NOT NULL, --호텔번호 ROOM_TYPE VARCHAR2(200) NOT NULL, --방종류 ROOM_NAME VARCHAR2(1000) NOT NULL, --방이름 PRICE_PER_DAY NUMBER(10) NOT NULL, --1인당 이용가격 CONSTRAINT RO_PK PRIMARY KEY(ROOM_NO), --기본키(ROOM_NO) CONSTRAINT RO_FK FOREIGN KEY(BO_NO) REFERENCES HOTEL(BO_NO) --외래키(BO_NO) ); ```
# 9-3. HOTEL_RESERVATION ```SQL --호텔예약(HOTEL_RESERVATION) 테이블 --호텔예약(HOTEL_RESERVATION) 테이블 CREATE TABLE HOTEL_RESERVATION( RESERVE_NO NUMBER(10), --예약번호 MEMBER_ID VARCHAR2(30) NOT NULL, --예약자ID BO_NO NUMBER(10) NOT NULL, --호텔번호 ROOM_NO NUMBER(10) NOT NULL, --방번호 RESERVE_PRICE NUMBER(10) NOT NULL, --예약가격(총가격) RESERVE_ROOM_CNT NUMBER(10) DEFAULT 1 NOT NULL, --예약 객실 수(기본값:1) RESERVE_TOTAL_PERSON_CNT NUMBER(10) DEFAULT 2 NOT NULL, --예약인원수(전체인원수: 기본값 2) RESERVE_PERSON_ADULT_CNT NUMBER(10) DEFAULT 2 NOT NULL,--성인수(기본값: 2) RESERVE_PERSON_CHILD_CNT NUMBER(10) DEFAULT 0 NOT NULL,--어린이수(기본값: 0) CHECK_IN_DATE DATE DEFAULT SYSDATE NOT NULL, --체크인 날짜 CHECK_OUT_DATE DATE DEFAULT SYSDATE NOT NULL, --체크아웃 날짜 RESERVE_CHECK VARCHAR2(5) DEFAULT 'N' NOT NULL, --예약확인 REFUND_CHECK VARCHAR2(5) DEFAULT 'N' NOT NULL, --환불확인 CONSTRAINT RS_PK PRIMARY KEY(RESERVE_NO), --기본키(RESERVE_NO) CONSTRAINT RS_FK_MID FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID), --외래키(MEMBER_ID) CONSTRAINT RS_FK_BN FOREIGN KEY(BO_NO) REFERENCES HOTEL(BO_NO), --외래키(BO_NO) CONSTRAINT RS_FK_RN FOREIGN KEY(ROOM_NO) REFERENCES ROOM(ROOM_NO), --외래키(ROOM_NO) CONSTRAINT RS_CK_RSC CHECK(RESERVE_CHECK IN ('Y', 'N')), --제약조건(RESERVE_CHECK) CONSTRAINT RS_CK_RFC CHECK(REFUND_CHECK IN('Y','N')) --제약조건(REFUND_CHECK) ); ```
# 9-4. HOTEL_REVIEW ```SQL --호텔리뷰 댓글 CREATE TABLE HOTEL_REVIEW( RE_NO NUMBER(10), --댓글번호 REVIEW_SCORE NUMBER(5) NOT NULL, CONSTRAINT HR_PK_RVN PRIMARY KEY(RE_NO), --기본키(RE_NO) CONSTRAINT HR_FK_RVN FOREIGN KEY(RE_NO) REFERENCES REPLY(RE_NO), --외래키(RE_NO) CONSTRAINT HR_CK_RVS CHECK(REVIEW_SCORE BETWEEN 0 AND 5) --제약조건(REVIEW_SCORE 0~5점만 부여가능) ); ```
# 9-5-1. (VIEW) HOTEL_VIEW ```SQL CREATE OR REPLACE VIEW HOTEL_VIEW AS SELECT * FROM BOARD JOIN HOTEL USING(BO_NO) WHERE BO_DELETE_YN='N' AND CA_CODE=5; ```


# 9-6. (VIEW) HOTEL_ROOM_INFO_VIEW ```SQL -- 2020.12.08 where조건 추가했어여! CREATE OR REPLACE VIEW HOTEL_ROOM_INFO_VIEW AS SELECT * FROM BOARD JOIN HOTEL USING(BO_NO) JOIN ROOM USING(BO_NO) WHERE BO_DELETE_YN='N'; COMMIT; ```
# 9-7. (VIEW) HOTEL_REVIEW_INFO_VIEW ```SQL CREATE OR REPLACE VIEW HOTEL_REVIEW_INFO_VIEW AS SELECT * FROM REPLY JOIN HOTEL_REVIEW USING(RE_NO); ```
# 2020.12.08 ## IMG_FILE 제약조건 없애기 ```SQL ALTER TABLE IMG_FILE DROP CONSTRAINT IMG_FK_BNO; ```
# 9-8. 썸네일 이미지 뷰 생성(HOTEL_THUMBNAIL_IMG_VIEW) ```SQL CREATE OR REPLACE VIEW HOTEL_THUMBNAIL_IMG_VIEW AS SELECT * FROM BOARD JOIN IMG_FILE USING(BO_NO) WHERE BO_DELETE_YN='N' AND FILE_DELETE_YN='N' AND FILE_LEVEL=1 AND CA_CODE=5; COMMIT; ```
# 9-9. 디테일 이미지 뷰 생성(HOTEL_DETAIL_IMG_VIEW) ```SQL CREATE OR REPLACE VIEW HOTEL_DETAIL_IMG_VIEW AS SELECT * FROM BOARD JOIN IMG_FILE USING(BO_NO) WHERE BO_DELETE_YN='N' AND FILE_DELETE_YN='N' AND FILE_LEVEL=2 AND CA_CODE=5; COMMIT; ```
# 9-10. (VIEW) HOTEL_MINPRICE_ORDER_VIEW - 호텔 BO_NO로 그룹화하여, 각 호텔중 최소방가격을 나타낸 뷰 ```SQL CREATE OR REPLACE VIEW HOTEL_MINPRICE_ORDER_VIEW AS SELECT BO_NO, MIN(PRICE_PER_DAY) AS MIN_PRICE FROM HOTEL_ROOM_INFO_VIEW GROUP BY BO_NO; COMMIT; ```
loveAlakazam commented 3 years ago

접속계정은 TRIP2REAP입니다.

10. 공통

10-1. 주석 추가

--컬럼에 주석
COMMENT ON COLUMN "TRIP2REAP"."TRAVEL"."TR_NO" IS '여행지번호';
COMMENT ON COLUMN "TRIP2REAP"."TRAVEL"."BO_NO" IS '참고게시글번호';
COMMENT ON COLUMN "TRIP2REAP"."TRAVEL"."TR_ADDR" IS '여행지주소';
COMMENT ON COLUMN "TRIP2REAP"."TRAVEL"."TR_THEME" IS '여행지테마';

# 10-2. ```SQL ```
loveAlakazam commented 3 years ago

2020.12.06

11. 제약조건


--[1. HOTEL_REVIEW 제약조건]
--호텔리뷰 제약조건 삭제
ALTER TABLE HOTEL_REVIEW DROP CONSTRAINT HR_FK_RVN; --기존 제약조건 삭제

-- 제약조건 다시 추가.
ALTER TABLE HOTEL_REVIEW ADD CONSTRAINT HR_FK_RVN -- 리뷰삭제되면 호텔리뷰도 같이 삭제
FOREIGN KEY(RE_NO) REFERENCES REPLY(RE_NO) ON DELETE CASCADE;

--[2. LIKES 제약조건]
--회원탈퇴/ 회원정보 수정시에 발생하는 참조테이블도 같이 업데이트 시키기
--@@LIKES 기존 외래키 제약조건 삭제(MEMBER 테이블을 참조하는 FOREIGN KEY)
--@@사람마다 제약조건 이름이 다를수있으니, 제약조건보고 CONSTRAINT_NAME 확인!!
ALTER TABLE LIKES DROP CONSTRAINT SYS_C007142;

--LIKES 외래키 제약조건 추가
ALTER TABLE LIKES ADD CONSTRAINT FK_LK_MID
FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID) ON DELETE CASCADE;

--[3. BOARD 제약조건]
--@@기존 외래키  제약조건 삭제(MEMBER 테이블을 참조하는 외래키)
--@@사람마다 제약조건이름이 다를 수있으니, 제약조건보고 CONSTRAINT_NAME확인!
ALTER TABLE BOARD DROP CONSTRAINT (외래키이름);

--제약조건 추가
ALTER TABLE BOARD ADD CONSTRAINT BOARD_FK_MID
FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID) ON DELETE CASCADE;

--[4. IMG_FILE 제약조건]
--@@기존 외래키 제약조건 삭제(BOARD 테이블 참조하는 외래키)
--@@사람마다 제약조건 이름이 다를 수 있으니, 제약조건보고 CONSTRAINT_NAME 확인!!
ALTER TABLE IMG_FILE DROP CONSTRAINT SYS_C007025;

-- 이미지 제약조건은 빼주세요!
--ALTER TABLE IMG_FILE ADD CONSTRAINT IMG_FK_BNO
--FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO) ON DELETE CASCADE;

--[5. HOTEL_RESERVATION 제약조건]
ALTER TABLE HOTEL_RESERVATION ADD CONSTRAINT RS_FK_MID
FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID) ON DELETE CASCADE;

--[6. HOTEL 제약조건]
--BOARD를 참조하는 외래키
--@@ 사람마다 다를 수 있으니 제약조건 보고 CONSTRAINT_NAME 확인할것!
--@@기존 호텔테이블 제약조건 삭제! (R_TABLE_NAME: BOARD)
ALTER TABLE HOTEL DROP CONSTRAINT SYS_C007069;

ALTER TABLE HOTEL ADD CONSTRAINT HT_FK_BNO
FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO) ON DELETE CASCADE;

--[7. ROOM 제약조건]
ALTER TABLE ROOM DROP CONSTRAINT RO_FK;
ALTER TABLE ROOM ADD CONSTRAINT RO_FK
FOREIGN KEY(BO_NO) REFERENCES HOTEL(BO_NO) ON DELETE CASCADE;

--[8. REPLY 제약조건]
--@@사람마다 다를 수 있으니 제약조건 보고 CONSTRAINT_NAME 확인할것!
--@@R_TABLE_NAME이 BOARD인 제약조건삭제!
--@@R_TABLE_NAME이 MEMBER인 제약조건도 같이 삭제!
ALTER TABLE REPLY DROP CONSTRAINT SYS_C007040;

--게시글을 삭제하면 reply도 같이 삭제하도록 제약조건 추가.
ALTER TABLE REPLY ADD CONSTRAINT RP_FK_BNO
FOREIGN KEY(BO_NO) REFERENCES BOARD(BO_NO) ON DELETE CASCADE;

--작성자가 탈퇴되어 member테이블에 삭제되면, 탈퇴한 작성자가 작성한 덧글 삭제
ALTER TABLE REPLY ADD CONSTRAINT RP_FK_MID
FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID) ON DELETE CASCADE;

COMMIT;