コンテンツにスキップ

survey_version_pointers

概要

案件がどの版を「最新版」としているかを指すポインタテーブル。案件と種別の組で 1 行になる。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
版ポインタ survey_version_pointers survey_id uuid ◯ surveys:id (cascade)
version_id uuid survey_versions:id (cascade) 指し先の版
pointer_type varchar(50) ◯ 現在は latest のみ

リレーション

  • survey_id → surveys.id (onDelete: cascade)
  • version_id → survey_versions.id (onDelete: cascade)

インデックス

  • 主キー (survey_id, pointer_type) の複合主キー

制約

  • CHECK: survey_version_pointers_pointer_type_check — pointer_type in ('latest')

注記

  • 案件の作成時に latest ポインタが作られ、保存・ロールバックのたびに新しい版を指すよう更新される
  • 複合主キーにより、1 つの案件が同じ種別のポインタを複数持つことはない
  • pointer_type を varchar + CHECK 制約にしているのは、将来「公開版」などのポインタ種別を追加する余地を残すため。現時点で使われている値は latest のみ
  • 実装上は surveys.latest_version_no と併用して最新版を特定している