データモデル
概念モデル図
erDiagram
カタログ ||--o{ スキーマ : "含む"
スキーマ ||--o{ 集計ビュー : "含む"
集計ビュー ||--o{ 質問 : "持つ"
質問 ||--o{ 選択肢行 : "持つ"
回答者属性 }o--|| 集計ビュー : "集計元(アプリからは参照しない)"
エンティティ概要
| エンティティ名 |
説明 |
| カタログ |
Unity Catalog のカタログ。アプリでは cs に固定。 |
| スキーマ |
カタログ配下のスキーマ。アプリでは cs_dm に固定。 |
| 集計ビュー |
1 つのアンケートに対応する集計済みビュー。UI で選択する単位。 |
| 質問 |
ビュー内の question(+ question_number / question_type)で識別される設問。 |
| 選択肢行 |
1 設問 1 選択肢に対応する 1 行。回答数 sum_answer、母数 total、比率 rate を持つ。 |
| 回答者属性 |
回答者ごとの属性を持つテーブル(ut_dm_ana_jreslso_tokyo)。集計の元データだが、現状アプリは参照していない。 |
ビジネスルール
- アプリが読むのは集計済みビューのみ。生の回答データは扱わない。
- 集計値の取得クエリはすべて
is_comp = 'すべての有効回答' で絞り込む(backend/sql/table_data.py)。属性別の比較軸を出したくなった場合は、ここが唯一の分岐点になる。
question_type は Text Select(チャート表示)と Free Text(ヒートマップ + 回答テーブル)の 2 値をフロントエンドが前提にしている。それ以外の値はどちらの画面にも出ない。
- 質問は
question の文字列でグルーピングされる。question_number は表示ラベルとソートに使うだけで、キーではない。
- カタログ・スキーマは
frontend/src/constants/dwh.ts で cs / cs_dm に固定。テーブルのみ UI で選択する。
- API のレスポンス行モデル
QuestionDataRow は extra="allow" なので、テーブル固有の追加列はそのままフロントエンドへ素通しされる。