コンテンツにスキップ

survey_versions

概要

案件の版(バージョン)を管理するテーブル。保存・ロールバックのたびに追加され、削除はされない。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
版 survey_versions id uuid ◯ gen_random_uuid()
survey_id uuid surveys:id (cascade)
version_no integer 版番号。案件内で連番
status survey_status 版が作られた時点のステータス
source_version_id uuid ◯ 複製元の版 ID。外部キー制約なし
rollback_from_version_id uuid ◯ ロールバック元の版 ID。外部キー制約なし
created_by uuid users:id (restrict) 版を作成したユーザー
created_at timestamptz now()

リレーション

  • survey_id → surveys.id (onDelete: cascade)
  • created_by → users.id (onDelete: restrict)
  • 参照される側: survey_version_sections.survey_version_id(cascade)
  • 参照される側: survey_version_pointers.version_id(cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: survey_versions_survey_id_version_no_idx (survey_id, version_no)

注記

  • 案件の作成時に版 1 が作られる
  • 保存操作では、最新版の全スナップショットを複製した新しい版が作られる
  • ロールバックでは、指定した版の内容を復元した新しい版が作られる。過去の版は削除されない
  • source_version_id / rollback_from_version_id は同一テーブルへの自己参照であり、外部キー制約は張っていない
  • 出力(POST /api/surveys/{surveyId}/export)を実行すると、最新版の status も 出力済み に更新される