コンテンツにスキップ

survey_version_question_visibility_targets

概要

表示ロジックの条件が成立したときに 非表示にする選択肢 を指定するテーブル。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
非表示対象 survey_version_question_visibility_targets id uuid ◯ gen_random_uuid()
visibility_rule_id uuid survey_version_question_visibility_rules:id (cascade)
target_label varchar(255) 非表示にする選択肢のラベル。ID ではなくラベルで参照する
target_axis question_option_axis ◯ row / column。マトリクスの行/列を区別する。null = 通常の選択肢
target_sub_question_index integer ◯ 対象サブ設問の位置。null = サブ設問なし
sort_order integer ルール内での並び順
created_at timestamptz now()

リレーション

  • visibility_rule_id → survey_version_question_visibility_rules.id (onDelete: cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: visibility_targets_rule_order_idx (visibility_rule_id, sort_order)

注記

  • ラベルで参照する理由: 選択肢(survey_version_question_options)は設問の更新のたびに削除・再作成されるため id が安定しない。条件側と同じくラベル文字列で対象を指す
  • 非表示対象は、そのルールが属する設問自身の選択肢 を指す(条件の参照元は別の設問でよい)
  • 例: 「Q1 で『男性』を含むなら、この設問の『女性向け商品』を非表示にする」
  • CS では visibility_targets[] として非表示対象の answer_item_id のリストを持つ。投入時はラベルから CS の answer_item_id を解決する
  • マトリクスの列を対象にした非表示は CS へ変換できないため、拡張は警告を出す