メインコンテンツまでスキップ

テーブルリレーション

Subseek の DB スキーマにおけるテーブル間のリレーションを Mermaid ER 図で可視化する。各テーブルの詳細定義は DBスキーマ を参照。

全体 ER 図

アプリケーション管理テーブルと Better Auth 管理テーブルを含む全体像。

リレーション一覧

users を起点としたリレーション

関係相手テーブルカーディナリティ削除時の挙動用途
sessionssessions1:NCASCADEログインセッション
accountsaccounts1:NCASCADEOAuth プロバイダーごとの連携情報
billing_accountsbilling_accounts1:1なしプラン・クレジット残高・Stripe 顧客
user_video_accessuser_video_access1:Nなし(履歴として残す)クレジット消費履歴・動画アクセス権
favorite_channelsfavorite_channels1:NCASCADEお気に入りチャンネル
search_historiessearch_histories1:NCASCADE検索履歴
注記

user_video_accessbilling_accountsCASCADE しない。ユーザー削除後もクレジット消費履歴や billing 履歴(返金・監査ログ要件を含む)を残して運用・分析に利用するため、アプリケーション側で論理削除・匿名化を行う方針。

channels を起点としたリレーション

関係相手テーブルカーディナリティ削除時の挙動用途
videosvideos1:Nなしチャンネル配下の動画一覧
favorite_channelsfavorite_channels1:Nなしお気に入りされているユーザー

videos を起点としたリレーション

関係相手テーブルカーディナリティ削除時の挙動用途
user_video_accessuser_video_access1:Nなし動画を閲覧したユーザーのアクセス権

複合主キー

テーブル主キー構成備考
user_video_access(user_id, video_id)ユーザー × 動画の一意制約
favorite_channels(user_id, channel_id)ユーザー × チャンネルの一意制約

Better Auth 管理テーブルの扱い

users / sessions / accounts / verifications は Better Auth が管理するため、drizzle.config.tstablesFilter からは除外されている(マイグレーション対象外)。ただしアプリケーションテーブルから FK 参照するため、スキーマ定義自体は packages/db/src/schema/auth-schema.ts に残している。

  • Better Auth 自体がテーブルのマイグレーションを行う
  • Drizzle ORM からは読み取り・FK 参照のみ行う
  • ER 図には参考として掲載

スキーマ定義ファイル

実装は packages/db/src/schema/ 配下を参照。

ファイル対応テーブル
auth-schema.tsusers / sessions / accounts / verifications
channels/channels.tschannels
videos/videos.tsvideos
user-video-access/user-video-access.tsuser_video_access
billing-accounts/billing-accounts.tsbilling_accounts
favorite-channels/favorite-channels.tsfavorite_channels
search-histories/search-histories.tssearch_histories