[project] 미니프로젝트 03/03 테이블 수정 / 계획 수정

kafa·2023년 3월 3일
0

프로젝트

목록 보기
3/6

계획수정

지난시간에 우리는 날씨별 옷추천이라는 기능을 구현하기 위해서 여러 의류쇼핑몰의 데이터베이스를 가져오는 단계에서 합법적인 웹 크롤링을 이용하려 했다. 그러나 방법을 배우지 않아 어려움이 많다는 한계가 생겼다.

그래서 추천코디를 미리 recommend 테이블에 넣어두고, 그날 날씨와 기온으로 코디를 불러와 보여주는 것으로 변경했다.

weather 테이블에 정해진 10가지 값과 TEMPERATURE의 기온을 일정하게 나눠 경우의 수에 따라 다른 코디를 추천하기로 했다.

WEATHER1 테이블 수정

  • 컬럼변경 TEMPHIGH, TEMPROW -> temperature
  • 제약조건 TEMPHIGH_HOTTER_THEN_TEMPROW X
  • temperature NUMBER -> FLOAT
  • 오타 고침 : func_SEQ_WEATHER1_CODE_nextval (naxt->next)

WEATHER1에서 TEMPERATURE의 기온은 현재기온으로 설정했다.
이때 '현재'란 로그인시점, 접속시점을 기준으로 한다.
접속 혹은 로그인 이벤트가 발생하면 시간을 가져온다.

  • WEATHER1 테이블 삭제 후 다시 만듦

-- WEATHER1 테이블 다시 만듦

SELECT * FROM WEATHER1 ;

DROP SEQUENCE SEQ_WEATHER1_CODE;
DROP TABLE WEATHER1 CASCADE CONSTRAINTS;
DROP FUNCTION FUNC_SEQ_WEATHER1_CODE_NAXTVAL;



CREATE TABLE weather1
(
  code        number(10)   NOT NULL,
  regdate     TIMESTAMP    NOT NULL,
  weather     VARCHAR2(50),
  temperature NUMBER(10)  ,
  no          NUMBER(5)    NOT NULL,
  CONSTRAINT PK_weather1 PRIMARY KEY (code)
);


--- 제약조건

-- location1-weather1 외래키 (1대n)
ALTER TABLE weather1
  ADD CONSTRAINT FK_location1_TO_weather1
    FOREIGN KEY (no)
    REFERENCES location1 (no);
-- 외래키 삭제하기

-- recommend1-weather1 외래키 (1대n)
ALTER TABLE weather1 DROP CONSTRAINT FK_location1_TO_weather1;
ALTER TABLE recommend1
  ADD CONSTRAINT FK_weather1_TO_recommend1
    FOREIGN KEY (code)
    REFERENCES weather1 (code);
  • WEATHER1 데이터 입력

오타 많이 잡았고
TEMPERATURE의 데이터 유형에 처음에 number를 사용했는데
무슨 연유에선지 소숫점 값이 안들어가서 float으로 바꿨다.


--- WEATHER1 데이터 입력

-- 시퀀스
CREATE SEQUENCE SEQ_WEATHER1_CODE INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCACHE;
-- 삭제
DROP SEQUENCE SEQ_WEATHER1_CODE;

-- 함수
CREATE OR REPLACE FUNCTION func_SEQ_WEATHER1_CODE_nextval RETURN NUMBER
IS
BEGIN
    RETURN SEQ_WEATHER1_CODE.NEXTVAL;
EXCEPTION WHEN OTHERS THEN
    RETURN null;
END;
/
-- 삭제
DROP FUNCTION func_SEQ_WEATHER1_CODE_nextval;



-- 일괄입력

INSERT ALL 
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '맑음', 9.8, 30)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '구름조금', 14.0, 31)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '구름많음', 14.1, 32)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '흐림', 7.1, 33)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '비', 13.1, 34)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '눈', 12.0, 35)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '비 또는 눈', 13.6, 36)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '천둥번개', 9.8, 37)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '안개', 9.2, 38)
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE+1 , '황사', 11.2, 39)
SELECT * FROM DUAL;

-- 소숫점 기온이 안들어가서
-- WEATHER1 편집에서 TEMPERATURE의 데이터 유형을 NUMBER -> FLOAT으로 바꿈

-- 소숫점 들어가는지 보려고 한개 넣기 시도
INSERT
INTO WEATHER1 (code, regdate, weather, TEMPERATURE, NO)
VALUES(func_SEQ_WEATHER1_CODE_nExtval, CURRENT_DATE+1 , '구름많음', 10.4, 32);

-- 잘 들어감

SELECT * FROM WEATHER1;

ROLLBACK;

COMMIT;

ERD

(과연최종일까)

이제
옷 코디 추가하고
Jframe에 화면 구상하고
만들면
되겠다
(과연그럴까)

profile
kafa is kafa. not be something other.

0개의 댓글