on
JDBC-MiniProject : Dear.Diary
구체적인 기억보다 더 깊고 오래 남는 그 때의 ‘감정’으로 기억하는 나의 하루!
Dear Diary와 함께하는 하루하루가 쌓여서 일주일, 한달, 일년이 되고나면 누구나 멘탈갑이 될 수 있습니다!
Dear.Diary는
날씨, 수면상태, 그 날의 기분, 하루 단상 등
자신의 감정과 연관된 외부 및 내부 상태를 매일 간단히 기록 및 분석하고,
다른 사람의 기록을 살펴보는 과정을 통해
나와 주변의 마음건강을 유지하도록 돕는
셀프 멘탈 헬스케어 체크 SNS입니다.
WHY WE SELECT THIS TOPIC?
topic
정신줄 꽉 잡아요!
사회적 거리두기의 일상화로 우울감이 심해지고 있는 포스트 코로나 시대,
사람들은 다양한 방식으로 이를 해결하려 노력하고 있습니다.
자기를 알고, 남을 안다. 아는 만큼 보인다!
정신건강 전문의들은 일기쓰기를 추천합니다.
사소한 것이라도 자신의 감정을 글로 적어보면
그 감정에서 떨어져서 바라볼 수 있기 때문에 마음을 다스리는데 도움이 되기 때문입니다.
또 이럴 때일수록 서로를 살피고 공감하는 것이 필요하다고 권합니다.
바쁘다 바빠 현대사회
하지만… 늦어지는 퇴근시간, 휴대폰만 열면 넘쳐나는 재미있는 컨텐츠들 사이에서
마지막으로 일기를 써본 적이 언제인지도 모르겠어요.
마스크 속에 가려진 감정들을 속시원하게 끄집어내 본 적도 언제인지 모르겠고요.
Dear.Diary
이렇게 메말라 가는 현대인의 감정을 돌보기 위해
셀프 멘탈 헬스케어 체크 SNS 플랫폼
Dear.Diary가 탄생했습니다!!<p></p>
CASE 1. REGULAR DIARY를 사용 중인 A씨 일기
오늘은 아침부터 이유없이 기분이 울적했다.
퇴근 길에 기분전환하려 만난 연인은 지루한지 하품을 해댔다.
즉석떢볶이 집에서는 맵기 정도를 두고는 싸웠다.<p> 연인과 싸우고 돌아오는 골목길,비가 쏟아진다.<p> 우산도 없는데 서럽다.
지금 내 얼굴 위 빗방울이 빗물인지 눈물인지 모르겠ㄷㅏ…★ <p></p>
CASE 2. DEAR DIARY를 사용 중인 B씨 일기
아침에 일어났는데 기분이 울적했다.
DEAR DIARY에 누적된 일기데이터 분석에 의하면 나는 비오는 날
평소보다 울적해진다. 일기예보를 보니 역시 비가 올 예정이다.
왜인지 아니까 안 우울하다.<p> 퇴근 길엔 연인을 만났는데 자꾸 하품을 했다.
DD의 커플정보를 보니 요즘 못 자던데 피로한 모양이다. 안쓰럽다.
연인이 내가 꾸물꾸물한 날 우울해지니까 매운 거 먹자고 하길래,
잠도 못잤는데 매운 거 먹으면 배탈난다고 죽집에 갔다.
나는 매운낙지, 그는 전복죽을 먹고 가서 푹 자라고 일찍 헤어졌다.
골목길에 들어서는데 비가 쏟아졌다. 아침에 우산 챙겼지롱!
STRUCTURE
MODELING
메뉴트리
Service
1. USER 행동 시나리오
로그인
내 다이어리 보기
:couplekiss: 커플 이용자 다이어리 보기
다이어리 쓰기
다이어리 수정
다이어리 삭제
오늘 내 기분과 같은 기분인 사람들의 한줄 코멘트 보기
나의 감정상태 측정
① 자신이 지금까지 기록했던 기분점수 평균과
② 최근 7일간의 기분점수 평균 비교
id님,
(감정상태가 평균과 같거나 더 높을 경우)
이번주도 해피해피하게 아주 잘 보내고 있어요!
(감정상태가 평소보다 낮을 경우)
이번주는 평소보다 우울하신가요? 오늘 간식으로 달콤한 케이크 한 조각 어때요?
9) 나의 수면상태 측정
① 지금까지 기록했던 수면시간 평균과
② 최근 7일간의 수면시간 평균 비교
id님,
id님, 푹 쉬셨네요 ! 주말엔 등산처럼 활기찬 야외활동을 해보는 게 어떨까요 ~?!
이번주는 평소보다 덜 주무셨어요. 주말엔 꼭 포근한 이불 속에서 푹 쉬세요!
2. 관리자 행동 시나리오
1) 모든 다이어리 정보 CRUD
2) 감정 테이블에 감정 추가/수정 (향후 Update용)
3) 날씨 테이블에 날씨 추가/수정 (향후 Update용)
SQL TABLE
- USER INFORMAITON
drop table USERINFO;
create table USERINFO(
id varchar2(50) constraint userinfo_id_pk primary key,
pw number(7) not null,
matchingid varchar2(50) constraint userinfo_fk references USERINFO(id)
);
insert into USERINFO values('ace123', 123456, null);
insert into USERINFO values('bestyou1', 1111111, null);
insert into USERINFO values('coral2', 222222, 'ace123');
insert into USERINFO values('doglover3', 333333, 'bestyou1');
insert into USERINFO values('enough4', 444444, null);
insert into USERINFO values('forever5', 555555, null);
insert into USERINFO values('admin', 1234, null);
commit;
- EMOTIONS
drop sequence EMOTIONS_SEQ;
drop table EMOTIONS;
create sequence EMOTIONS_SEQ;
create table EMOTIONS(emotionno number(1) constraint emotions_emotionno_pk primary key,
emotionstats varchar2(20) not null);
insert into EMOTIONS values(emotions_seq.nextval, '화가나');
insert into EMOTIONS values(emotions_seq.nextval, '짜증나');
insert into EMOTIONS values(emotions_seq.nextval, '걱정돼');
insert into EMOTIONS values(emotions_seq.nextval, '그럭저럭');
insert into EMOTIONS values(emotions_seq.nextval, '평온해');
insert into EMOTIONS values(emotions_seq.nextval,' 최고');
commit;
- WEATHER
drop table WEATHER;
create sequence weather_seq;
create table WEATHER(weatherno number(1) constraint weather_weatherno_pk primary key,
weatherstats varchar2(20) not null);
insert into WEATHER values(weather_seq.nextval, '따뜻해');
insert into WEATHER values(weather_seq.nextval, '더워');
insert into WEATHER values(weather_seq.nextval, '비가와');
insert into WEATHER values(weather_seq.nextval, '추워');
insert into WEATHER values(weather_seq.nextval, '구름둥둥');
insert into WEATHER values(weather_seq.nextval, '눈온다');
commit;
- DIARY
drop sequence DIARY_SEQ;
drop table DAIRY;
create sequence diary_seq;
create table DIARY(
diaryno number(2) constraint diary_diaryno_pk primary key,
id varchar2(50) constraint diary_id_fk references USERINFO(id),
emotionno number(1) constraint diary_emotionno_fk references EMOTIONS(emotionno),
weatherno number(1) constraint diary_weatherno_fk references WEATHER(weatherno),
reportingdate DATE,
sleepingtime number(2) not null,
diarycomment varchar2(200) not null,
isPublic number(1) not null
);
insert into DIARY values(diary_seq.nextval, 'ace123', 6, 1, to_date('2020-12-01'), 6, '돈 주웠다 최고!', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 5, 1, to_date('2020-12-01'), 7, '오늘 하루도 끝', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 6, 2, to_date('2020-12-01'), 8, '도자기가 잘 구워졌다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 6, 1, to_date('2020-12-01'), 8, '예약해둔 맛집에서 저녁 먹었다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 1, to_date('2020-12-01'), 7, '저녁이 맛있었다.', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 1, to_date('2020-12-01'), 5, '12월 첫날이라니 벌써...', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 5, 3, to_date('2020-12-02'), 6, '무난무난한 하루였다.', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 6, 3, to_date('2020-12-02'), 7, '보고싶었던 공연을 봤다', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 4, 3, to_date('2020-12-02'), 8, '배고픈데 간식을 선물받았다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 2, 3, to_date('2020-12-02'), 6, '아이스크림 바닥에 흘렸다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 3, to_date('2020-12-02'), 6, '택배가 왔다', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 2, 3, to_date('2020-12-02'), 7, '지갑을 놓고 나왔다', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 4, 4, to_date('2020-12-03'), 5, '내일만 지나면 주말!!', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 2, 2, to_date('2020-12-03'), 6, '왜 다 나한테 시키지', 1);
insert into DIARY values(diary_seq.nextval, 'coral2', 5, 1, to_date('2020-12-03'), 5, '알고리즘 문제 4개 풀었다 그리고 드디어 하나 맞았다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 5, 5, to_date('2020-12-03'), 7, '지하철에서 앉아서 왔다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 5, to_date('2020-12-03'), 3, '길가다 친구를 만났다', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 5, to_date('2020-12-03'), 5, '내일 기말고사 마지막 시험', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 2, 2, to_date('2020-12-04'), 6, '친구가 아프다고 한다.', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 5, 2, to_date('2020-12-04'), 7, '떡볶이 먹었다', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 2, 2, to_date('2020-12-04'), 5, '되는일이 없었다', 1);
insert into DIARY values(diary_seq.nextval, 'doglover3', 6, 1, to_date('2020-12-04'), 6, '쇼핑 최고다...진짜', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 2, to_date('2020-12-04'), 6, '부장님이 월차를 썼다', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 4, 2, to_date('2020-12-04'), 7, '점심 메뉴가 나쁘지 않았다', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 6, 3, to_date('2020-12-05'), 7, '월급이 들어왔다!', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 6, 3, to_date('2020-12-05'), 6, '오랜만에 친구들 만났다', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 4, 3, to_date('2020-12-05'), 7, '돈까스를 먹었다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 1, 3, to_date('2020-12-05'), 5, '엄마가 아프다.', 0);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 3, to_date('2020-12-05'), 7, '오늘 요리가 잘됐다', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 3, to_date('2020-12-05'), 6, '알바하는데 손님 너무 없어서 지루했다', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 4, 4, to_date('2020-12-06'), 6, '평온한 주말이다', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 6, 4, to_date('2020-12-06'), 8, '강릉에서 킹크랩을 먹었다', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 4, 4, to_date('2020-12-06'), 6, '집에서 운동했다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 3, 4, to_date('2020-12-06'), 5, '지우개 잊어버렸다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 5, 4, to_date('2020-12-06'), 6, '배민 쿠폰 1만원 당첨', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 4, to_date('2020-12-06'), 6, '은행업무 보러가기 귀찮다', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 4, 1, to_date('2020-12-07'), 7, '일요일이다!', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 5, 1, to_date('2020-12-07'), 6, '오늘은 버스가 시간에 맞춰왔다', 1);
insert into DIARY values(diary_seq.nextval, 'coral2', 2, 1, to_date('2020-12-07'), 6, '안경이 깨졌다', 1);
insert into DIARY values(diary_seq.nextval, 'doglover3', 4, 1, to_date('2020-12-07'), 7, '부장님 없는 틈타 퇴근했다', 1);
insert into DIARY values(diary_seq.nextval, 'enough4', 6, 1, to_date('2020-12-07'), 7, '생일선물로 조던 받았따', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 6, 2, to_date('2020-12-07'), 7, '밀린 드라마 다 몰아봄. 눈이부시게 최고., ', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 2, 4, to_date('2020-12-08'), 7, '상사한테 깨졌다', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 2, 4, to_date('2020-12-08'), 5, '내일은 출장이다', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 3, 4, to_date('2020-12-08'), 7, '배고프다', 0);
insert into DIARY values(diary_seq.nextval, 'doglover3', 4, 4, to_date('2020-12-08'), 6, '새우튀김을 먹었다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 6, 4, to_date('2020-12-08'), 7, '일이 꼬인 줄 알았는데 해결됐다', 0);
insert into DIARY values(diary_seq.nextval, 'forever5', 5, 4, to_date('2020-12-08'), 6, '오랜만에 친구들 만나서 수다 떨었다.', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 3, 5, to_date('2020-12-09'), 4, '실수했다. 어떡하지', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 3, 5, to_date('2020-12-09'), 3, '출장인지 짐셔틀인지...', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 1, 5, to_date('2020-12-09'), 3, '교통사고가 났다.', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 5, 5, to_date('2020-12-09'), 7, '꼬북칩 초코맛 편의점에서 발견해서 3봉지 삼', 1);
insert into DIARY values(diary_seq.nextval, 'enough4', 1, 5, to_date('2020-12-09'), 0, '친구가 죽었다.....', 0);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 5, to_date('2020-12-09'), 7, '길에서 죽은 새를 보았다.', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 5, 6, to_date('2020-12-10'), 7, '점심으로 제육볶음을 먹었다.', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 3, 6, to_date('2020-12-10'), 3, '에고 피곤해', 0);
insert into DIARY values(diary_seq.nextval, 'coral2', 5, 6, to_date('2020-12-10'), 6, '첫눈 내림', 1);
insert into DIARY values(diary_seq.nextval, 'doglover3', 6, 6, to_date('2020-12-10'), 8, '맛집에 웨이팅이 없었다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 4, 6, to_date('2020-12-10'), 7, '오랜만에 드라마를 봤다', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 3, 6, to_date('2020-12-10'), 2, '아 테스형! 세상이 왜 이래!', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 4, 1, to_date('2020-12-11'), 8, '무난무난', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 3, 1, to_date('2020-12-11'), 8, '길냥이가 불쌍해', 1);
insert into DIARY values(diary_seq.nextval, 'coral2', 6, 1, to_date('2020-12-11'), 7, '티켓팅, 성공했다!!!!, ', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 5, 1, to_date('2020-12-11'), 8, '오랜만에 중학교 동창한테 연락이 왔다!! 반가웠다!!!!', 1);
insert into DIARY values(diary_seq.nextval, 'enough4', 4, 1, to_date('2020-12-11'), 6, '쇼미더머니 결승전 ㄷㄷㄷㅈ', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 2, 1, to_date('2020-12-11'), 7, '컨디션 너무 안 좋다. 코로나면 어뜨카지...', 0);
insert into DIARY values(diary_seq.nextval, 'ace123', 3, 5, to_date('2020-12-12'), 4, '주말인데 걱정된다.', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 4, 5, to_date('2020-12-12'), 10, '토!요!일!!!!!!!', 2);
insert into DIARY values(diary_seq.nextval, 'coral2', 1, 5, to_date('2020-12-12'), 4, '사이드미러가 깨졌다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 4, 5, to_date('2020-12-12'), 5, '간단하게 회식했다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 3, 5, to_date('2020-12-12'), 4, '병원에 가야된다', 0);
insert into DIARY values(diary_seq.nextval, 'forever5', 2, 5, to_date('2020-12-12'), 9, '친구 결혼식 다녀왔다. 나빼고 다 결혼해', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 2, 5, to_date('2020-12-13'), 5, '짜증난다.', 0);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 5, 5, to_date('2020-12-13'), 7, '이승우 작가님 신작 읽었다, 크', 0);
insert into DIARY values(diary_seq.nextval, 'coral2', 2, 5, to_date('2020-12-13'), 7, '밥먹다가 머리카락 나왔다', 2);
insert into DIARY values(diary_seq.nextval, 'doglover3', 3, 5, to_date('2020-12-13'), 4, '운동하다가 다쳤다', 2);
insert into DIARY values(diary_seq.nextval, 'enough4', 2, 5, to_date('2020-12-13'), 4, '이사짐 싸느라 매우 힘듦...', 0);
insert into DIARY values(diary_seq.nextval, 'forever5', 4, 5, to_date('2020-12-13'), 5, '오늘치 목표량 공부 다 했다.', 1);
insert into DIARY values(diary_seq.nextval, 'ace123', 6, 1, to_date('2020-12-14'), 6, '최고다!', 2);
insert into DIARY values(diary_seq.nextval, 'bestyou1', 4, 1, to_date('2020-12-14'), 6, '월요일인데 안피곤하다', 1);
insert into DIARY values(diary_seq.nextval, 'coral2', 6, 1, to_date('2020-12-14'), 6, '이제 카페갈 수 있다', 1);
insert into DIARY values(diary_seq.nextval, 'doglover3', 5, 1, to_date('2020-12-14'), 6, '점심이 맛있었다', 0);
insert into DIARY values(diary_seq.nextval, 'enough4', 6, 1, to_date('2020-12-14'), 6, '이사 첫 날, 새 집에는 햇살이 잘 들어서 좋다.', 1);
insert into DIARY values(diary_seq.nextval, 'forever5', 6, 1, to_date('2020-12-14'), 6, '일년만에 오프라인 공연 보러 다녀옴! 매우 신남!!', 1);
commit;
PROTOTYPE LINK
INSPRATION
- GITHUB 연동 문제점
1) 버전 오류
- git에 올린 초기 버전에 맞지 않게 다운로드하고 수정하다보니 push, pull에 문제가 있었는데, 인터넷으로 버전 정리를 하면서 해결했다. 2) denied 되는 문제
- window 자격증명 삭제로 해결했다.
- UPDATE를 고려한 설계
1) LOGIN 2) 구조 짜기
- MVC를 위해 CONTROLLER, VIEW, SERVICE, DAO, DTO 등 여러 개로 클래스를 나눠서 개발했다.
- 덕분에 수정과정에서 에러가 발생할 때마다 어느 지점으로 가서 손을 볼 지 파악할 수 있어 유용했다 3) SEQUENCE 기능의 활용
- 관리자가 개발자와 다를 경우를 고려해 감정, 날씨 등의 정보를 추가할 때 따로 일련번호를 확인할 필요가 없도록 각 테이블의 일련번호를 SEQUENCE로 매겨지게 했다.