[pgsql-jp: 27467] 項目があったりなかったりするテーブル設計について。

yuka_i inagaki @ root-sea.co.jp
2002年 9月 26日 (木) 13:28:08 JST


はじめまして。伊藤と申します。
ここにははじめて投稿させていただきます。
postgreSQL7.2.2を使用して、Webアプリケーションを制作しています。
テーブル設計で迷っているところがあり、伺いたくメールいたしました。

HTMLのフォームのデータを取り込み、データベースに格納する、
と言う事をしたいのですが、
クライアントがブラウザ上である程度自由に、
フォームの内容を変えることができるようになっています。

クライアントがレイアウトした(内容も含む)フォームを公開し、
クライアントの顧客がそれに答えて送信する。
送信されたデータを取り込む。
こういうことがしたいのです。
そこで、変わったパターンが出てきてテーブルを
どう設計していいかわからず困っています。


Radioボタンが3つあるとします。
1番目と2番目がチェックされるときは問題ないのですが、
3番目をチェックしたときにはさらに、
テキストボックスに入力を求められる事があるのです。

====================================
Q1 あなたのすきな色は?

○あか
○あお
○きいろ

====================================
↑上記の場合は問題ないです。
 下記のような場合が問題になります。
====================================
Q2 あなたのすきな食べ物は?

○りんご
○みかん
○その他 ↓下のボックスに入力してください
 ______________
 |______________|

====================================

こんな感じです。
基本的にはチェックして終わりの項目が多いのですが、
「Q2」のような例も少なからず存在するので、
これに対応したテーブル設計をしたいのですが、
すっきりと設計できません。
以下が現状です。

■環境
OS:Turbolinux 7 Server
DBサーバ:postgreSQL

■テーブル
・質問テーブル(質問一つ一つに対するデータが入っています)
・質問選択肢テーブル(質問に回答するための用意されている選択肢)
・回答テーブル(質問に対して選択された値を格納します)

■キー
質問テーブルの主キー(質問ID)に対して、
質問選択肢テーブルにある外部キーがリレーションします。
質問選択肢テーブルにはシーケンスもあり(選択肢No)、
質問IDと選択肢Noで主キーとしています。

■問題
・例外的な選択肢追加を(ある選択肢に対して並行に)
 可能にするには質問選択肢テーブルをどう設計すればいいのか。
・回答テーブルに通常なら選択された値をレコードに
 格納するだけだが、
 ひとつ項目が増える事もイレギュラー的に発生するので、
 回答テーブルどう設計するか。

以上2点です。

長くなって申し訳ありません。
ご教授よろしくお願い申し上げます。








pgsql-jp メーリングリストの案内