question_library_items
概要
過去質問データ(質問ライブラリ)を管理するテーブル。自システムの案件由来と、CS から取り込んだ調査票由来の 2 系統がある。
テーブル定義
| 論理名 |
物理名 |
カラム名 |
データ型 |
主キー |
リレーション |
ユニーク |
NULL許可 |
デフォルト値 |
備考 |
| 過去質問データ |
question_library_items |
id |
uuid |
◯ |
|
|
|
gen_random_uuid() |
|
|
|
source_survey_id |
uuid |
|
surveys:id (cascade) |
|
◯ |
|
内部由来の元案件 |
|
|
source_question_id |
uuid |
|
|
|
◯ |
|
内部由来の元設問。外部キー制約なし |
|
|
source_external_survey_id |
uuid |
|
external_surveys:id (cascade) |
|
◯ |
|
外部由来の元調査票 |
|
|
source_external_question_id |
uuid |
|
external_questions:id (cascade) |
◯ |
◯ |
|
外部由来の元設問 |
|
|
category |
varchar(255) |
|
|
|
|
|
カテゴリ。検索の絞り込みに使う |
|
|
section_title |
varchar(255) |
|
|
|
|
|
元のセクションタイトル |
|
|
question_type |
question_type |
|
|
|
|
|
single / multi / free_text / matrix / intro / pulldown |
|
|
normalized_payload |
jsonb |
|
|
|
|
|
正規化された設問内容 |
|
|
created_by |
uuid |
|
users:id (set null) |
|
◯ |
|
登録者 |
|
|
created_at |
timestamptz |
|
|
|
|
now() |
|
リレーション
- source_survey_id → surveys.id (onDelete: cascade)
- source_external_survey_id → external_surveys.id (onDelete: cascade)
- source_external_question_id → external_questions.id (onDelete: cascade)
- created_by → users.id (onDelete: set null)
インデックス
- 主キー (id)
- UNIQUE INDEX: question_library_items_external_question_idx (source_external_question_id)
制約
- CHECK:
question_library_items_source_required — source_survey_id か source_external_survey_id のいずれかが必須
normalized_payload の構造
{
"promptText": "以下のうち、知っているブランドをすべてお選びください。",
"options": [
{ "label": "ブランド A", "isExclusive": false, "allowOtherInput": false, "isNotApplicable": false }
],
"subItems": [{ "label": "満足度" }],
"subQuestions": [
{ "label": "平日", "options": [{ "label": "毎日", "isExclusive": false, "allowOtherInput": false, "isNotApplicable": false }] }
]
}
| フィールド |
必須 |
内容 |
| promptText |
◯ |
設問文 |
| options |
◯ |
選択肢 |
| subItems |
|
サブ項目(マトリクスの列など)。ラベルのみ |
| subQuestions |
|
サブ設問(ラベル + 選択肢) |
注記
- 登録タイミング: 案件の JSON 出力時(同じ案件の既存登録は削除して再登録)、および CS からの取り込み時
- 分岐は保存されない: 正規化ペイロードには分岐ルール・表示ロジックが含まれないため、流用後にあらためて設定する必要がある
source_question_id に外部キーを張らない理由: 版の複製でスナップショット行の id が変わるため、外部キー制約を張ると版の保存時に整合が取れなくなる。流用時は安定 ID を辿って対応する設問を探す
- 元案件が削除済みでも流用できる: 内部由来の流用では、元案件が削除されていてもスナップショット行が残っていれば設問を復元して流用する
- 削除できるのは管理者のみ。
created_by に登録者が記録されるが、削除の可否には影響しない