처음 프로젝트를 할때는 데베설계가 중요하지 않다고 생각했는데,
실제로 코딩을 해보니까 제일 중요하다는 거를 알았다.
데이터를 입력하면 서로 주키와 외래키가 엮여있고, 크기를 너무 적게 하면
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은 생각보다 간단하게 적용할 수 있을거 같다!!
http://www.gisdeveloper.co.kr/?p=8555
https://myhappyman.tistory.com/36
이분들꺼 참고하면 충분히 될듯!
우선 마우스 올리면 지역 바탕색이랑 글자색 바꾸는거까지는 해결됐음!(지찬오빠가^^)
style에서 fill이라는거 처음봤는데 이거도 되더라 기존에꺼 참고해서 바꾸면 될거 같당~
나름 제 시간에 생각보다 빨리 해결됨
이제 진짜 코딩 시작이다,,,
'프로젝트 > G.O.A.T(여행 스케줄러)' 카테고리의 다른 글
고객문의 게시판(글 등록후 리스트 보여주기) (0) | 2022.01.04 |
---|---|
깃 연동,, 이번에도 어김없이 충돌 (0) | 2022.01.03 |
1주차 PPT (0) | 2021.12.28 |
이름 정하기, 목적/기대효과, 맡은 역할 (0) | 2021.12.27 |
새로운 프로젝트 시작 (0) | 2021.12.22 |