osamhack2022 / WEB_AI_MILIROUTINE_MILIROUTINE

밀리루틴(MILIROUTINE) - 군생활 루틴 공유 서비스 | 지키고 싶은 밀리루틴을 만들고, 함께 인증해보세요!
MIT License
5 stars 6 forks source link

DB 명세서 논의 #8

Closed yoopark closed 1 year ago

yoopark commented 1 year ago

아래 글은 똑같이 Notion에도 올려놓았습니다!

제가 BE, AI 쪽을 잘 몰라서 혹시 AI 통계 낼 때 힘들겠다거나, BE 내부 로직 상 추가적으로 들어가야 하는 정보가 있다면 말씀해주세요! 없으면 일단 이런 방식으로 DB를 구성하려 합니다.

DATABASE : miliroutine

Created: 2022년 9월 27일 오후 4:57 Last Edited Time: 2022년 10월 3일 오전 1:00

(BE) DB 관련 내용

MySQL types

전화번호, 이메일 등 : VARCHAR(n); n은 바이트가 아니라 글자 수
댓글, 게시글 등 : TEXT(n)

정수 : INT
작은 정수 : TINYINT(-128 ~ 127)
소수 : FLOAT

연월일 : DATE
시분초 : TIME
연월일시분초 : DATETIME

TABLE : user

이름 타입 설명
id VARCHAR(30) 아이디, PK
pw VARCHAR(100) 암호화된 비밀번호
salt VARCHAR(100) 비밀번호 암호화에 필요한 키 값
email VARCHAR(60)
nickname VARCHAR(10)
category_list VARCHAR(100) 관심 카테고리 리스트 (JSON.stringify(list) 형식으로 저장) ex) {”study”, “workout”, “morningroutine”, “economy”, “selfcare”, “dream”, “hobby”, “emotion”, “health”}
point INT UNSIGNED

TABLE : routine

이름 타입 설명
id INT UNSIGNED AUTO_INCREMENT, PK
user_id VARCHAR(30) 주최자 아이디, FK ← user
name VARCHAR(20)
category VARCHAR(5)
thumbnail VARCHAR(300) 대표 이미지 URL
auth_cycle TINYINT UNSIGNED 주 n회
auth_description_list TEXT 인증 방법 단계별로 설명 (JSON.stringify(list) 형식으로 저장) ex) {”스스로 30분 이상 공부하세요”, “오늘 공부한…
start_date DATE 루틴 시작일
duration TINYINT UNSIGNED 루틴 진행기간 (n주)
participants INT UNSIGNED 참여자 수
point_info_list VARCHAR(100) 포인트 지급 기준 (JSON.stringify(list) 형식으로 저장) ex) {{”EVERY_WEEK”, 1, 250}, {”RATE”, 0.8, 500}, {”RATE”, 1.0, 500}}

TABLE : user_routine

이름 타입 설명
id INT UNSIGNED AUTO_INCREMENT, PK
user_id VARCHAR(30) FK ← user
routine_id INT UNSIGNED FK ← routine
type VARCHAR(10) 참여 : “JOIN”, 좋아요 : “LIKE”

TABLE : auth

이름 타입 설명
id INT UNSIGNED AUTO_INCREMENT, PK
user_id VARCHAR(30) FK ← user
routine_id INT UNSIGNED FK ← routine
week TINYINT UNSIGNED n주차
day TINYINT UNSIGNED n회차
img VARCHAR(300) 인증 이미지
text TEXT 인증 글

TABLE : goods

이름 타입 설명
id INT UNSIGNED AUTO_INCREMENT, PK
name VARCHAR(20)
description TEXT 상품 설명
thumbnail VARCHAR(300) 대표 이미지 URL
price INT UNSIGNED

TABLE : user_goods

이름 타입 설명
id INT UNSIGNED AUTO_INCREMENT, PK
user_id VARCHAR(30) FK ← user
goods_id INT UNSIGNED FK ← goods
datetime DATETIME 상품 구매 시각
yoopark commented 1 year ago

user, routine, goods -> 기본 user_routine, user_goods -> 다대다 auth -> 일대다

이해가 안되는 정보가 있다면 언제든지 이곳에 올려주세요~~``

minchan02 commented 1 year ago

user table에 salt와 pw는 암호키값과 암호화된 값이 들어가 글자 수가 길기 때문에 넉넉하게 VARCHAR(100)으로 잡아주겠습니다

springkjw commented 1 year ago

user table에 salt와 pw는 암호키값과 암호화된 값이 들어가 글자 수가 길기 때문에 넉넉하게 VARCHAR(100)으로 잡아주겠습니다

passport에서 암호화하는데 사용하는 알고리즘을 바탕으로 길이를 설정하는 것이 어떨까요? 예를 들면 RSA256 알고리즘을 사용하면 길이가 64로 고정될텐데 굳이 100까지 잡을 필요가 없으니깐요.

dong97338 commented 1 year ago

확인했습니다! 더 필요한 정보는 없어요.

2022년 10월 3일 (월) 오전 1:07, Yongjun Park @.***>님이 작성:

아래 글은 똑같이 Notion에도 올려놓았습니다!

제가 BE, AI 쪽을 잘 몰라서 혹시 AI 통계 낼 때 힘들겠다거나, BE 내부 로직 상 추가적으로 들어가야 하는 정보가 있다면 말씀해주세요! 없으면 일단 이런 방식으로 DB를 구성하려 합니다. DATABASE : miliroutine

Created: 2022년 9월 27일 오후 4:57 Last Edited Time: 2022년 10월 3일 오전 1:00

(BE) DB 관련 내용 https://www.notion.so/BE-DB-e2eed9b1b2794abb96c15d4d449923ad 💡 위 문서의 내용을 포함한 문서입니다. MySQL types

전화번호, 이메일 등 : VARCHAR(n); n은 바이트가 아니라 글자 수

댓글, 게시글 등 : TEXT(n)

정수 : INT

작은 정수 : TINYINT(-128 ~ 127)

소수 : FLOAT

연월일 : DATE

시분초 : TIME

연월일시분초 : DATETIME

TABLE : user 이름 타입 설명 id VARCHAR(30) 아이디, PK pw VARCHAR(30) salt ? 민찬님 채워주세요 비밀번호 암호화에 필요한 키 값 email VARCHAR(60) nickname VARCHAR(10) category_list VARCHAR(100) 관심 카테고리 리스트 (JSON.stringify(list) 형식으로 저장) ex) {”study”, “workout”, “morningroutine”, “economy”, “selfcare”, “dream”, “hobby”, “emotion”, “health”} point INT UNSIGNED TABLE : routine 이름 타입 설명 id INT UNSIGNED AUTO_INCREMENT, PK user_i VARCHAR(30) 주최자 아이디, FK name VARCHAR(20) category VARCHAR(5) thumbnail VARCHAR(300) 대표 이미지 URL auth_cycle TINYINT UNSIGNED 주 n회 auth_description_list TEXT 인증 방법 단계별로 설명 (JSON.stringify(list) 형식으로 저장) ex) {”스스로 30분 이상 공부하세요”, “오늘 공부한… start_date DATE 루틴 시작일 duration TINYINT UNSIGNED 루틴 진행기간 (n주) participants INT UNSIGNED 참여자 수 point_info_list VARCHAR(100) 포인트 지급 기준 (JSON.stringify(list) 형식으로 저장) ex) {{”EVERY_WEEK”, 1, 250}, {”RATE”, 0.8, 500}, {”RATE”, 1.0, 500}} TABLE : user_routine 이름 타입 설명 id INT UNSIGNED AUTO_INCREMENT, PK user_id VARCHAR(30) FK ← user routine_id INT UNSIGNED FK ← routine type VARCHAR(10) 참여 : “JOIN”, 좋아요 : “LIKE” TABLE : auth 이름 타입 설명 id INT UNSIGNED AUTO_INCREMENT, PK user_id VARCHAR(30) FK ← user routine_id INT UNSIGNED FK ← routine week TINYINT UNSIGNED n주차 day TINYINT UNSIGNED n회차 img VARCHAR(300) 인증 이미지 text TEXT 인증 글 TABLE : goods 이름 타입 설명 id INT UNSIGNED AUTO_INCREMENT, PK name VARCHAR(20) description TEXT 상품 설명 thumbnail VARCHAR(300) 대표 이미지 URL price INT UNSIGNED TABLE : user_goods 이름 타입 설명 id INT UNSIGNED AUTO_INCREMENT, PK user_id VARCHAR(30) FK ← user goods_id INT UNSIGNED FK ← goods datetime DATETIME 상품 구매 시각

— Reply to this email directly, view it on GitHub https://github.com/osamhack2022/WEB_AI_MILIROUTINE_MILIROUTINE/issues/8, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHZPJQB5E2K545DTEBEETUTWBGXNLANCNFSM6AAAAAAQ26X3Q4 . You are receiving this because you were assigned.Message ID: @.***>

yoopark commented 1 year ago

user table에 salt와 pw는 암호키값과 암호화된 값이 들어가 글자 수가 길기 때문에 넉넉하게 VARCHAR(100)으로 잡아주겠습니다

passport에서 암호화하는데 사용하는 알고리즘을 바탕으로 길이를 설정하는 것이 어떨까요? 예를 들면 RSA256 알고리즘을 사용하면 길이가 64로 고정될텐데 굳이 100까지 잡을 필요가 없으니깐요.

이 부분은 재원님 의견이 맞는 거 같아서 수정하겠습니다! 일단 이렇게 확정하고 Notion에 최신화된 버전으로 올려놓도록 하겠습니다.