テーブル設計・ER図
vod_playlists
idBIGINT AUTO_INCREMENT
user_idVARCHAR(28)
nameVARCHAR(32) NOT NULL
image_urlTEXT NULL
is_publicBOOLEAN DEFAULT false
is_deletedBOOLEAN DEFAULT false
created_atTIMESTAMP
updated_atTIMESTAMP
vod_playlist_items
idBIGINT AUTO_INCREMENT
vod_playlist_idBIGINT
vod_lesson_idBIGINT
sort_orderINT NOT NULL
is_deletedBOOLEAN DEFAULT false
created_atTIMESTAMP
updated_atTIMESTAMP
favorite_vod_playlists
idBIGINT AUTO_INCREMENT
user_idVARCHAR(28)
vod_playlist_idBIGINT
created_atTIMESTAMP
updated_atTIMESTAMP
vod_playlist_play_results
idBIGINT AUTO_INCREMENT
user_idVARCHAR(28)
vod_playlist_idBIGINT
vod_playlist_item_idBIGINT
user_lesson_history_idBIGINT
created_atTIMESTAMP
updated_atTIMESTAMP
NEW vod_playlist_weekly_scores
idBIGINT AUTO_INCREMENT
vod_playlist_idBIGINT
starting_dateDATE NOT NULL
scoreINT DEFAULT 0
rankINT NULL
created_atTIMESTAMP
updated_atTIMESTAMP
users (既存)
idVARCHAR(28)
...
リレーション
users1 ──── Nvod_playlists1人のユーザーが複数プレイリストを作成
vod_playlists1 ──── Nvod_playlist_items1プレイリストに複数レッスン (max 15)
vod_lessons1 ──── Nvod_playlist_items1レッスンが複数プレイリストに含まれる
users1 ──── Nfavorite_vod_playlists1人が複数プレイリストをお気に入り
vod_playlists1 ──── Nfavorite_vod_playlists1プレイリストが複数ユーザーにお気に入りされる
vod_playlists1 ──── Nvod_playlist_play_results再生結果の記録
user_lesson_histories1 ──── 1vod_playlist_play_results各再生結果がレッスン履歴と1:1対応
vod_playlists1 ──── Nvod_playlist_weekly_scores週次スコア集計 (バッチ処理)
スコア集計ロジック(バッチ処理)
vod_playlist_play_results テーブルの直近7日間のデータを集計し、
vod_playlist_weekly_scores に書き込む。
プレイリストごとに、1回の再生セッション内で連続再生されたコンテンツ数に応じてポイントを加算する。
実行間隔: 1時間ごと(リアルタイムに近い反映) | 測定期間: 直近7日間 | 既存の vod_lesson_weekly_scores と同パターン