Conversation
mission/chapter01/mission.md
Outdated
|
|
||
| 필요한 데이터 분류: | ||
| - 평점, 내용, 생성일자를 사용자가 남긴 리뷰 DB에 넣어준다. | ||
| - INSERT VALUSE INTO REVIEW(score, text, user_id, store_id, created_at, updated_at) |
There was a problem hiding this comment.
ERD 테이블 이름과 동일하게 REVEIW -> review로 변경하면 좋을 것 같아요!
mission/chapter01/mission.md
Outdated
|
|
||
| - 필요한 데이터 분류: | ||
| 사용자 테이블에서 이름, 메일, 번호, 포인트 가 필요하다. | ||
| - SELECT NAME, ADDRESS, BIRTH, USER_POINT |
mission/chapter01/mission.md
Outdated
| - SELECT NAME, ADDRESS, BIRTH, USER_POINT | ||
| FROM USER | ||
| WHERE id = 1 | ||
| 설명: 내가 설계했던 DB에는 메일과 번호 데이터가 없어서 주소와 생년월일을 조회하기로 했다. |
There was a problem hiding this comment.
지금은 괜찮지만 나중에 메일이랑 번호 컬럼 추가해주면 좋을 것 같아요!
| - 사용자 미션 테이블과 미션 테이블을 조인해서 사용 | ||
| - 수행상태 | ||
| - 쿼리문: | ||
| SELECT m.mission_point AS reward_point, |
There was a problem hiding this comment.
저는 AS가 테이블 이름을 짧게 줄이는 기능만 있는줄 알았는데 별칭 기능도 있었군요!
| m.content AS mission_content, | ||
| um.id AS cursor_id | ||
| FROM user_mission um | ||
| JOIN mission m ON m.id = um.mission_id |
There was a problem hiding this comment.
제가 알기로는 SELECT, FROM, JOIN 모든 곳에서 AS 사용해도 되는 것으로 알고 있어서 mission AS m이 맞을 것 같아요!
mission/chapter01/mission.md
Outdated
| JOIN mission m ON m.id = um.mission_id | ||
| JOIN store s ON s.id = m.store_id | ||
| WHERE user_id = 1 | ||
| AND um.status = “success” |
There was a problem hiding this comment.
SQL문에서는 '로만 적는걸로 알고있는데 한 번 확인해주세요!!
| WHERE user_id = 1 | ||
| AND um.status = “success” | ||
| AND um.deleted_at = IS NULL | ||
| AND um.id < 25 |
|
|
||
| - 하단: SELECT s.name AS store_name, | ||
| s.category AS store_category, | ||
| DATEDIFF(m.mission_time, CURRENT_DATE()) AS d_day, |
There was a problem hiding this comment.
created_at()을 front에 넘기는게 아니라 직접 시간 넘겨주는게 멋있어요!
YoungJJun
left a comment
There was a problem hiding this comment.
1번 오타랑 문법오류만 수정해주세요~
INSERT INTO ~ () VALUES ()
2번 메일과 번호 데이터가 없어서 주소와 생년월일을 조회한다고 하셨는데 이 경우 ERD를 수정해서 해당 데이터를 추가해 주셔야 합니다! ERD에 해당 데이터 추가 후 쿼리만 다시 작성해주세요.
3번 스터디때 말씀드린 것처럼 IS NULL은 um.deleted_at IS NULL 이런식으로 수정해주세요. 4번에도 동일한 문제가 몇개 있는것 같아요!
4번
- DATEDIFF 사용해주신거 좋습니다!
- 지역 필터링이 빠진 것 같아요. 관점에 따라 다를 수 있으나 제가 볼 때 해당 미션들은 위쪽에 지역에 따라 바뀌어야 할 것 같아요.
- 아마 um.status = 'unactive'를 작성하신 이유는 해당 사용자가 아직 시작하지 않은 미션을 조회하려는 것으로 보입니다. ERD 피드백때 전달드린 내용으로 미션과 사용자를 항상 연결하면 사용자가 시작하지 않아도 해당 미션과 사용자를 unactive 상태로 연결해 데이터를 추가해야 합니다. 이 경우 작성해주신 방법대로 unactive를 조회하는게 맞습니다.
- 만약 사용자가 도전을 하지 않으면 데이터를 생성조차 하지않고 사용자가 도전하는 타이밍에만 user mission 테이블에 추가하는 방향으로 ERD 설계를 바꾸신다면 해당 지역 미션들을 모두 조회하고 NOT IN 조건을 통해 해당 사용자가 이미 완료했거나 포기한 미션들을 제외할 수 있어요.
1주차도 수고하셨습니다! 위 피드백 한 번 확인후 수정할 부분 수정하시고 피어리뷰 첨부 후 머지해주세요. 다음주도 화이팅입니다 미키~
✅ 워크북 체크리스트
✅ 컨벤션 체크리스트
📌 주안점
미션에 해당하는 쿼리문을 작성할 때 AS 를 통해 별칭을 사용했습니다.
SELECT 부분에는 사용하고 FROM이나 JOIN에는 사용하지 않았는데 이 부분이 확실하지 않아서 궁금합니다.
이 부분 때문에 가독성이 조금 떨어진 거 같아 자세히 봐주시면 감사하겠습니다.