私のデータベース スキルはせいぜい平凡で、調査データのデータ モデルを設計する必要があります。私はこれについていくつかの考えを費やしましたが、現在、ある種のEAV モデルと、それぞれが数百の列 (および数千のレコード) を持つ数百のテーブルを含む設計の間で立ち往生していると感じています。これを行うためのより良い方法が必要であり、このフォーラムの賢明な人々が私を助けてくれることを願っています.
私の質問は、RDBMS でアンケートの質問に対する回答をどのようにモデル化すればよいですか? SQL Server の使用は必須です。そのため、代替のデータ ストレージ システムは、この議論から除外する必要があります。(確かに、いくつかは評価されるべきであり、評価されますが、ここでは省略してください。) データ モデル全体のソリューションは必要ありません。今のところ、Answers 部分にのみ関心があります。
すでにさまざまなフォーラムを検索しましたが、実際に解決策を見つけることができませんでした。すでに他の場所で提供されている場合は、すみませんがリンクを提供してください。私はそれを読むことができます.
私が対処しなければならないデータに関するいくつかの仮定:
- 各アンケートは 1 ~ n 個のアンケートで構成されています
- 各アンケートは 100 ~ 2,000 の質問で構成されています (2,000 の質問は非常に多くの質問に聞こえることを無視してください...)
- 質問にはさまざまな種類があります: 選択式、フリーテキスト、数字 (年齢、収入、パーセンテージなど)。
- 各調査には 10 ~ 200 か国が参加します (これらは回答者ではありません。回答者は実際にはその国の人々です。)
- アンケートの種類にもよりますが、各アンケートには国ごとに 100 ~ 20,000 人の回答者が回答しています。
- 国は調査に合わせてアンケートを調整できます。つまり、質問を追加、削除、または編集できます。
- ある国のデータは、その国の別のデータベースに収集されます。最初からオンライン統合の可能性はありません。
- すべての国のデータは後で統合する必要があります。これは、たとえば、ある国が質問を削除した場合、そのデータは、すべての国で統一されたデザインを実現するために、送信したものから何らかの方法で取得する必要があることを意味します
- すべての国のデータを処理する必要がある統合およびクリーニング ソフトウェアを作成する必要があります。
- 最後に、データをフラット ファイル (国ごとに 1 つの長方形グリッドとアンケート) にエクスポートする必要があります。
私はすでにこのトピックについてさまざまなバックグラウンドを持つ人々と話し合ってきましたが、まだ良い解決には至っていません. 主に2種類の意見がありました。
- データ処理と分析のためにフラット ファイル (スプレッドシート スタイル) を使用することに慣れているドメインの専門家は、上で説明したように、多数のテーブルと列を含む非正規化構造に投票します (国ごとに 1 つのテーブルとアンケート)。幅の広いテーブルを避ける必要があることを学んだので、これはひどいことのように思えます。テーブルを操作するときに実際にどの列がテーブルにあるかを判断するのは面倒です。データベースは何百ものテーブルで雑然とします (または、複数のデータベースを設定し、それぞれが類似しているが少し異なる設計になっているなど)。
- OO プログラマーは、すべての質問に対するすべての回答者からのすべての回答を含む中央テーブルに効果的につながる、強力に「正規化された」設計に投票します。このテーブルには、sql_variant 型の列、または異なる型 (複数選択、フリー テキストなど) の回答を格納するための異なる型の複数の回答列が含まれている必要があります。前者は本質的にEAVモデルになります。私はここで Joe Celko をフォローする傾向があります. 後者は、設計上、適用できない型の null セルが各行に含まれることを意味します。
私が考えることができる別の代替案は、回答の種類ごとに 1 つのテーブルを作成することです。つまり、多肢選択式の質問用に 1 つ、フリーテキストの質問用に 1 つなどです。新しい回答タイプが発明された場合、テーブルを追加する必要があります。
このすべてのテキストで退屈させて申し訳ありません。ご意見をお寄せいただきありがとうございます。
乾杯、アレックス
PS: ここで同じ質問をしました: http://www.eggheadcafe.com/community/aspnet/13/10242616/survey-data-model--how-to-avoid-eav-and-excessive-denormalization.aspx