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 へ変換できないため、拡張は警告を出す