////
Search
Duplicate
🪵

1/10 회의록

생성일
2024/01/10 03:44
태그

user_quiz

1.
복합키 → created_at까지 포함
a.
복합키를 쓰는 이유는 2개의 테이블을 연결해서 유니크한 값을 만드는 것이라고 생각한다.
b.
현재 우리는 2개의 테이블을 연결하는데, 3개의 복합키를 사용해야되는 상황이다.
c.
유니크 값을 만들기 위해 foreign key가 아닌 새로운 column을 엮어야 되는 것이 새로운 id값을 만드는 것보다 비효율적이라고 느껴짐.
2.
복합키 → 주key 변경
a.
user_quiz_id

Score - 성적

성적: 맞으면 10, 틀리면 0, 모르면 0
성실도

최혁

스코어를 활용하자.. 사용자들의 의욕을 높이는 의도
연봉 같은 걸

안주환 - 성적

성실도: 포인트,스코어 둘 다 이런 컨셉, 컨셉으로 나쁘지 않음 - 포인트,코인으로 준다.
성적: 답을 찾아서 제출, 코드로 짜기 편함

application service 예시

score는 user에서도 조회가능, quiz에서도 조회 가능, 이게 core service, application service이다.
그래서
1.
코드에서 score를 엔티티처럼 쓰기.
2.
sql로 계산해서 불러올 때 join한 테이블을 생성하여 가져오는 것.

Point

Point → Coin으로 바꾼다.

db에 저장되는 코인과 스코어 계산방식

예시1. 코인, 스코어의 총합이 저장되는 경우 저장로직에서 스트림을 사용해서 다 더해서 total을 저장
useCoin에서 바로 차감 후 저장가능 (간단)
예시2. 로그를 찍듯이 +20 +10 +10 +5 이렇게 저장 getCoin으로 가져올때 스트림을 돌려서 총합을 보여줌 useCoin에서 총합을 구한 후 구매가능한 금액인지 크기 비교 후 차감
결론. 코인은 예시1 점수는 예시2

Coin

user에 totalcoin 컬럼을 하나 추가 - 이거 채택!
한달에 한번씩 정합성 확인: 랭킹 초기화 스케줄러와 함께 돌려서 정합성 검증
운영하면서 문제 생기면, 그냥 보상 주는 형식
랭킹 초기화 스케줄러와 함께 돌려서 정합성 검증
운영하면서 문제 생기면, 그냥 보상 주는 형식
redis로 로그인했을 때 저장해두고 관리한다.
로그인할 때 redis에 총 coin 저장
db에 넣고 redis에 coin update 침