프로젝트/G.O.A.T(여행 스케줄러)

eXERD 설계(1차 최종), 오라클 사용자 생성,지도 SVG

찌서니 2021. 12. 31. 10:04

처음 프로젝트를 할때는 데베설계가 중요하지 않다고 생각했는데,

실제로 코딩을 해보니까 제일 중요하다는 거를 알았다.

데이터를 입력하면 서로 주키와 외래키가 엮여있고, 크기를 너무 적게 하면 

too many values가 떠서 오류나고,,, 그래서 이번에는 심의를 기울여서 했는데

아마 하다보면 테이블은 수정될 수 밖에 없는 존재라는걸 깨닫겠지^^

 

 

이거도 처음에 했다가, 이거 필요없지않아요? 이거는 필요할거 같은데,, 이래서 바뀐거고 컬럼명 정하는거 쉽지않아,,,

 

오라클에서 생성 할때도 주의사항이 있는데 외래키가 존재하는 테이블을 먼저 만들면

부모테이블이 없기 때문에 오류난다! 그래서 우리는 Member 테이블을 제일 먼저 생성!

 

 

/* 회원 */
CREATE TABLE MEMBER (
	M_NUM NUMBER NOT NULL, /* 회원번호 */
	M_ID VARCHAR2(20), /* 아이디 */
	M_PASS VARCHAR2(20), /* 비밀번호 */
	M_NICK VARCHAR2(40), /* 닉네임 */
	M_EMAIL VARCHAR2(40), /* 이메일 */
	M_NAME VARCHAR2(20), /* 이름 */
	M_TEL NUMBER, /* 전화번호 */
	M_BIRTH DATE, /* 생년월일 */
	M_ADDR VARCHAR(200), /* 주소 */
	M_ADDRD VARCHAR2(200), /* 상세주소 */
	REG_DATE DATE, /* 가입일 */
	M_PHOTO VARCHAR2(50), /* 사진 */
	DEL CHAR DEFAULT 'n', /* 회원삭제 */
	ADMIN CHAR /* 관리자 */
);
ALTER TABLE MEMBER
	ADD
		CONSTRAINT PK_MEMBER
		PRIMARY KEY (
			M_NUM
		);


/* 여행 게시판 */
CREATE TABLE TRIP (
	T_NUM NUMBER NOT NULL, /* 글번호 */
	T_TITLE VARCHAR2(100), /* 제목 */
	T_CONTENT VARCHAR2(3000), /* 내용 */
	REG_DATE DATE, /* 작성일 */
	T_VIEW NUMBER, /* 조회수 */
	T_PHOTO VARCHAR2(50), /* 사진 */
	DEL CHAR DEFAULT 'n', /* 여행글 삭제 */
	M_NUM NUMBER /* 회원번호 */
);
ALTER TABLE TRIP
	ADD
		CONSTRAINT PK_TRIP
		PRIMARY KEY (
			T_NUM
		);
ALTER TABLE TRIP
	ADD
		CONSTRAINT FK_MEMBER_TO_TRIP
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);


/* 여행 게시판 댓글 */
CREATE TABLE TRIP_REPLY (
	TRE_NUM NUMBER NOT NULL, /* 댓글 번호 */
	TRE_CONTENT VARCHAR2(1000), /* 댓글 내용 */
	REG_DATE DATE, /* 작성일 */
	DEL CHAR DEFAULT 'n', /* 댓글삭제 */
	TRE_REF NUMBER, /* 참조번호 */
	TRE_RE_STEP NUMBER, /* 답글순서 */
	TRE_RE_LEVEL NUMBER, /* 들여쓰기 레벨 */
	T_NUM NUMBER, /* 글번호 */
	M_NUM NUMBER /* 회원번호 */
);
ALTER TABLE TRIP_REPLY
	ADD
		CONSTRAINT PK_TRIP_REPLY
		PRIMARY KEY (
			TRE_NUM
		);

ALTER TABLE TRIP_REPLY
	ADD
		CONSTRAINT FK_TRIP_TO_TRIP_REPLY
		FOREIGN KEY (
			T_NUM
		)
		REFERENCES TRIP (
			T_NUM
		);

ALTER TABLE TRIP_REPLY
	ADD
		CONSTRAINT FK_MEMBER_TO_TRIP_REPLY
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);


/* 공지사항 */
CREATE TABLE NOTICE (
	NO_NUM NUMBER NOT NULL, /* 글번호 */
	NO_TITLE VARCHAR2(100), /* 제목 */
	NO_CONTENT VARCHAR2(2000), /* 내용 */
	REG_DATE DATE, /* 작성일 */
	NO_VIEW NUMBER, /* 조회수 */
	DEL CHAR DEFAULT 'n', /* 공지사항 삭제 */
	M_NUM NUMBER /* 회원번호 */
);
ALTER TABLE NOTICE
	ADD
		CONSTRAINT PK_NOTICE
		PRIMARY KEY (
			NO_NUM
		);

ALTER TABLE NOTICE
	ADD
		CONSTRAINT FK_MEMBER_TO_NOTICE
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);


/* 공지사항 댓글 */
CREATE TABLE NOTICE_REPLY (
	NOR_NUM NUMBER NOT NULL, /* 댓글 번호 */
	NOR_CONTENT VARCHAR2(1000), /* 댓글내용 */
	REG_DATE DATE, /* 작성일 */
	DEL CHAR DEFAULT 'n', /* 댓글 삭제 */
	NOR_REF NUMBER, /* 참조번호 */
	NOR_RE_STEP NUMBER, /* 댓글순서 */
	NOR_RE_LEVEL NUMBER, /* 들여쓰기 레벨 */
	M_NUM NUMBER, /* 회원번호 */
	NO_NUM NUMBER /* 글번호 */
);
ALTER TABLE NOTICE_REPLY
	ADD
		CONSTRAINT PK_NOTICE_REPLY
		PRIMARY KEY (
			NOR_NUM
		);

ALTER TABLE NOTICE_REPLY
	ADD
		CONSTRAINT FK_MEMBER_TO_NOTICE_REPLY
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);

ALTER TABLE NOTICE_REPLY
	ADD
		CONSTRAINT FK_NOTICE_TO_NOTICE_REPLY
		FOREIGN KEY (
			NO_NUM
		)
		REFERENCES NOTICE (
			NO_NUM
		);
        
        
/* 스케줄 내역 */
CREATE TABLE SCHEDULE (
	SCH_NUM NUMBER NOT NULL, /* 스케줄 번호 */
	SCH_NAME VARCHAR2(200), /* 스케줄명 */
	S_DATE DATE, /* 여행 시작일자 */
	E_DATE DATE, /* 여행 종료일자 */
	M_NUM NUMBER /* 회원번호 */
);
ALTER TABLE SCHEDULE
	ADD
		CONSTRAINT PK_SCHEDULE
		PRIMARY KEY (
			SCH_NUM
		);

ALTER TABLE SCHEDULE
	ADD
		CONSTRAINT FK_MEMBER_TO_SCHEDULE
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);


/* 여행 게시판 사진 */
CREATE TABLE TIRP_PHOTO (
	TP_NUM NUMBER NOT NULL, /* 번호 */
	FILENAME VARCHAR2(200), /* 파일명 */
	T_NUM NUMBER /* 글번호 */
);
ALTER TABLE TIRP_PHOTO
	ADD
		CONSTRAINT PK_TIRP_PHOTO
		PRIMARY KEY (
			TP_NUM
		);

ALTER TABLE TIRP_PHOTO
	ADD
		CONSTRAINT FK_TRIP_TO_TIRP_PHOTO
		FOREIGN KEY (
			T_NUM
		)
		REFERENCES TRIP (
			T_NUM
		);


/* 좋아요 */
CREATE TABLE TRIP_LIKE (
	LIKE_NUM NUMBER NOT NULL, /* 번호 */
	M_NUM NUMBER, /* 회원번호 */
	T_NUM NUMBER /* 글번호 */
);
ALTER TABLE TRIP_LIKE
	ADD
		CONSTRAINT PK_TRIP_LIKE
		PRIMARY KEY (
			LIKE_NUM
		);

ALTER TABLE TRIP_LIKE
	ADD
		CONSTRAINT FK_MEMBER_TO_TRIP_LIKE
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);

ALTER TABLE TRIP_LIKE
	ADD
		CONSTRAINT FK_TRIP_TO_TRIP_LIKE
		FOREIGN KEY (
			T_NUM
		)
		REFERENCES TRIP (
			T_NUM
		);


/* 고객문의 */
CREATE TABLE CS (
	NUM NUMBER NOT NULL, /* 글번호 */
	CS_TITLE VARCHAR2(100), /* 제목 */
	REG_DATE DATE, /* 작성일 */
	CS_CONTENT VARCHAR2(2000), /* 내용 */
	CS_VIEW NUMBER, /* 조회수 */
	CS_REF NUMBER, /* 참조번호 */
	CS_RE_STEP NUMBER, /* 답글순서 */
	CS_RE_LEVEL NUMBER, /* 들여쓰기 레벨 */
	M_NUM NUMBER /* 회원번호 */
);
ALTER TABLE CS
	ADD
		CONSTRAINT PK_CS
		PRIMARY KEY (
			NUM
		);

ALTER TABLE CS
	ADD
		CONSTRAINT FK_MEMBER_TO_CS
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);
        
        
/* 플레이스 */
CREATE TABLE PLACE (
	PLACE_NUM NUMBER NOT NULL, /* 플레이스 번호 */
	PLACE_NAME VARCHAR2(100), /* 명칭 */
	PLACE_CATE VARCHAR2(20), /* 카테고리 */
	PLACE_ADDR VARCHAR2(200), /* 주소 */
	PLACE_ADDRD VARCHAR2(200), /* 상세주소 */
	PLACE_PHOTO VARCHAR2(200), /* 사진 */
	LAT VARCHAR2(30), /* 위도 */
	LNG VARCHAR2(30), /* 경도 */
	REG_DATE DATE /* 등록일자 */
);
ALTER TABLE PLACE
	ADD
		CONSTRAINT PK_PLACE
		PRIMARY KEY (
			PLACE_NUM
		);


/* 플레이스 후기 */
CREATE TABLE PLACE_REVIEW (
	PREV_NUM NUMBER NOT NULL, /* 후기 번호 */
	PREV_TITLE VARCHAR2(100), /* 제목 */
	SCORE NUMBER, /* 평점 */
	PREV_CONTENT VARCHAR2(2000), /* 내용 */
	DEL CHAR DEFAULT 'n', /* 후기 삭제 */
	REG_DATE DATE, /* 작성일 */
	M_NUM NUMBER, /* 회원번호 */
	PLACE_NUM NUMBER /* 플레이스 번호 */
);
ALTER TABLE PLACE_REVIEW
	ADD
		CONSTRAINT PK_PLACE_REVIEW
		PRIMARY KEY (
			PREV_NUM
		);

ALTER TABLE PLACE_REVIEW
	ADD
		CONSTRAINT FK_MEMBER_TO_PLACE_REVIEW
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);

ALTER TABLE PLACE_REVIEW
	ADD
		CONSTRAINT FK_PLACE_TO_PLACE_REVIEW
		FOREIGN KEY (
			PLACE_NUM
		)
		REFERENCES PLACE (
			PLACE_NUM
		);


/* 플레이스 즐찾 */
CREATE TABLE BOOKMARK (
	BOOK_NUM NUMBER NOT NULL, /* 즐겨찾기 번호 */
	M_NUM NUMBER, /* 회원번호 */
	PLACE_NUM NUMBER /* 플레이스 번호 */
);
ALTER TABLE BOOKMARK
	ADD
		CONSTRAINT PK_BOOKMARK
		PRIMARY KEY (
			BOOK_NUM
		);

ALTER TABLE BOOKMARK
	ADD
		CONSTRAINT FK_MEMBER_TO_BOOKMARK
		FOREIGN KEY (
			M_NUM
		)
		REFERENCES MEMBER (
			M_NUM
		);

ALTER TABLE BOOKMARK
	ADD
		CONSTRAINT FK_PLACE_TO_BOOKMARK
		FOREIGN KEY (
			PLACE_NUM
		)
		REFERENCES PLACE (
			PLACE_NUM
		);
        
        
/* 스케줄 상세내역 */
CREATE TABLE SCHEDULE_DETAIL (
	SCHD_NUM NUMBER NOT NULL, /* 스케줄 상세번호 */
	DAY DATE, /* 일자별 분류 */
	VEHICLE VARCHAR2(20), /* 이동수단 */
	SCH_NUM NUMBER, /* 스케줄 번호 */
	PLACE_NUM NUMBER /* 플레이스 번호 */
);
ALTER TABLE SCHEDULE_DETAIL
	ADD
		CONSTRAINT SCHEDULE_DETAIL
		PRIMARY KEY (
			SCHD_NUM
		);

ALTER TABLE SCHEDULE_DETAIL
	ADD
		CONSTRAINT FK_SCHEDULE_TO_SCHEDULE_DETAIL
		FOREIGN KEY (
			SCH_NUM
		)
		REFERENCES SCHEDULE (
			SCH_NUM
		);

ALTER TABLE SCHEDULE_DETAIL
	ADD
		CONSTRAINT FK_PLACE_TO_SCHEDULE_DETAIL
		FOREIGN KEY (
			PLACE_NUM
		)
		REFERENCES PLACE (
			PLACE_NUM
		);

 

 

📌 이클립스에서 자동으로 sql문 만들어주는거 돌렸더니, 처음 테이블을 만들때

primary key와 foreign를 지정하지 않고, 나중에 변경으로 추가해서 만들어줌

 

 

 

📌 이번에는 scott-tiger말고 계정을 하나 추가해보자고해서 따로 cmd에서 명령어 실행시켜야됨!!!

윈도우 + R 눌러서 실행창에서 cmd 눌러서 관리자창 띄움

✔ sqlplus "/as sysdba -> sysdba 권한으로 로그인

✔ create user goat identified by 1234; -> 핑크색은 유저아이디, 연두색은 유저비밀번호

                                                      (되도록 잊어버리지않게 쉽게 하는게 좋음!)

                                                      User created. 글이 뜨면 성공

✔ grant dba to goat; -> 권한 주기

                                마찬가지로 Grant succeeded. 뜨면 성공

✔ exit -> 프로그램 종료

 

 

오라클 프로그램 실행해서 새로만들기 눌러서 goat를 추가해준다.

cmd에서 생성한대로 유저아이디랑 비밀번호쳐서 테스트 눌러서 성공뜨면 끝~

이제 접속 눌러주면 새로운 유저가 추가된다

 

 

우리의 이번 프로젝트 핵심은 지도!이다

데이터가 너무 많기 때문에 전체를 할 수는 없고, 보여주는건 제주도로 정하고

우선 지도는 전체를 다 보여주기로 했는데, 구역나누는 법을 모르니까

처음에 지찬오빠가 포토샵으로 하나씩 다 누끼땀...

(근데 분명 지도한 사람이 많은데 이거를 이렇게 다 딴다고? 뭔가 이상해서 찾아봤는데

홀리.. 대단한거를 알아버렸다 ->  지도 SVG  )

역시 개발의 세계는 넓고 넓었다,, 많은 정보가 있지만 몰라서 활용을 못 할뿐ㅋㅋㅋㅋ

 

SVG라는걸 처음 들어봤는데 -> 화질에 영향을 받지 않는 벡터 이미지를 의미했다.

(Scalable Vector Graphics의 약자) 이미지의 크기를 늘리거나 줄여도 화질에 영향 XXX

✔ <svg></svg> 태그로 사용하고 width와 height로 이미지 길이 조절

✔ <circle>은 원을 그릴 때 사용, cx와 cy은 원의 중심으로 부터 x,y 좌표를 표시, r은 원의 반지름을 나타낸다

    cx,cy가 생략되면 (0,0)이 default이다

✔ stroke은 선의 색상, stroke-width은 선의 굵기

✔ fill은 내부 색상

인터넷을 찾아보면 style은 생각보다 간단하게 적용할 수 있을거 같다!!

 

https://gomc.co.kr/%EC%BD%94%EB%A1%9C%EB%82%98%EB%A7%B5-%EB%A7%8C%EB%93%A4%EA%B8%B0-3-svg-%EB%A7%88%EC%9A%B0%EC%8A%A4%EC%98%A4%EB%B2%84-%ED%85%8D%EC%8A%A4%ED%8A%B8-%EB%B3%B4%EC%9D%B4%EA%B8%B0-2/

 

코로나맵 만들기 (4) - SVG 마우스오버 텍스트 보이기 (2) - 곰씨

곰씨 아무 코딩 코로나맵 만들기 (4) - SVG 마우스오버 텍스트 보이기 (2) 편! SVG맵 위에 마우스오버 할 때 텍스트를 표현해 보자. 제 2편 텍스트박스 마우스 포인터로 옮기기!

gomc.co.kr

http://www.gisdeveloper.co.kr/?p=8555 

 

대한민국 행정구역(SVG) 다운로드 – GIS Developer

대한민국의 행정구역을 SVG(Scalable Vector Graphics) 형식으로 제공합니다. 연구 목적, 논문 저술 등의 학술 목적 또는 비영리의 개인적인 용도에 비용없이 사용하실 수 있습니다. 단, 반드시 출처는

www.gisdeveloper.co.kr

https://myhappyman.tistory.com/36

 

Javascript - Free SVG 한국맵 제어 처리

한국 지도 사용에 대해 알아 보겠습니다. https://www.amcharts.com/svg-maps/ Free SVG Maps - amCharts www.amcharts.com amchart에 가시면 각국 나라를 무료로 다운받아서 커스텀해서 사용할 수 있습니다. 그중..

myhappyman.tistory.com

 

이분들꺼 참고하면 충분히 될듯!

우선 마우스 올리면 지역 바탕색이랑 글자색 바꾸는거까지는 해결됐음!(지찬오빠가^^)

style에서 fill이라는거 처음봤는데 이거도 되더라 기존에꺼 참고해서 바꾸면 될거 같당~

나름 제 시간에 생각보다 빨리 해결됨

 

이제 진짜 코딩 시작이다,,,