コンテンツにスキップ

survey_version_sections

概要

版に属するセクション(大問)のスナップショット。案件ではなく版にぶら下がるため、版ごとに行が複製される。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
セクション survey_version_sections id uuid ◯ gen_random_uuid() 版が変わると新しい値が振られる
survey_version_id uuid survey_versions:id (cascade)
stable_section_id uuid gen_random_uuid() 安定 ID。版の複製時にそのまま引き継がれる
title varchar(255) セクションタイトル
description text '' 説明
generated_by varchar(255) manual 生成元。manual / 類似セクション生成 など
sort_order integer 版の中での並び順
created_at timestamptz now()
updated_at timestamptz now()

リレーション

  • survey_version_id → survey_versions.id (onDelete: cascade)
  • 参照される側: survey_version_questions.section_id(cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: survey_version_sections_version_order_idx (survey_version_id, sort_order)

注記

  • 安定 ID の役割: id は版ごとに変わるため、版をまたいでセクションを同一視するには stable_section_id を使う。質問ライブラリが古い版のスナップショットを指していても、この ID を辿れば最新版の対応するセクションを見つけられる
  • 並べ替え時の一意制約回避: (版 ID, 並び順) に一意インデックスがあるため、並び順を入れ替える際は一時的な値を経由してから確定させる
  • セクションを削除すると、配下の設問・選択肢・分岐ルール・表示ロジックも連鎖削除される(物理削除)。過去の版のスナップショットは残るため、ロールバックで復元できる