2017-01-23 5 views
-2

現在、Webアプリケーションを作成しており、Webアプリケーションから収集する情報を格納するためのDBを設計しようとしています。データベース用に1つの大きなテーブルまたは多数の小さなテーブルを作成する必要があります

ウェブアプリケーションは現在、ユーザーにのアンケートのみを提示するように設計されています。ユーザーはこの情報を入力する必要があります。ユーザーが完了しなければならないアンケートは、いくつかの要因に基づいています。

合計4つのアンケートが合計されます。

各アンケートには異なる数の質問があります。

だから私の質問は次のとおりです。

私は、各アンケートのための4つの異なるテーブルを設計する必要がありまたは私はすべての4件のアンケートの応答を格納するのに十分な行と列を持つことになります1つのテーブルを作成する必要がありますか?どのオプションが最も効率的で、システムに最も負担がかかりません。私はすでに、ユーザーなどのためのテーブルを持っている

私はアンケートに基づいて4つの異なるテーブルにそれらを破る場合は、何が主キー

ための最善の解決策になる。..

おかげ

ニック

+2

真に2つの質問に関する質問がない限り、mysqlとsql-serverの両方にタグを付けないでください。あなたの質問に当てはまらないタグ​​を削除することができれば、それを見いだすすべての人に有利なはずです。 **また、意見に基づいた、または広すぎる質問は、おそらく閉鎖されます。この質問は、デバッグ/解決が必要な問題に直接関係するものではなく、むしろオープンな質問であるため、実際にSOに属していません。 – Santi

+0

1つのアンケートのためのデザインは、複数のテーブルを(おそらく)必要とします。複数のアンケートのためのデザインは、1つの追加のテーブルと、それらのテーブルのどの行がどのアンケートに属しているかを特定するための単一のアンケートに使用されるテーブル内の追加のフィールドのみを必要とするはずです。 – Uueerdo

+0

この質問は、書かれているように、おそらく広すぎます。 ORMを使用していますか?これらのテーブルは挿入専用か、更新されますか?スケーラビリティ要件は何ですか? –

答えて

0

賢者は言った:あなたは、テーブルの数によってデータベースの品質を知ることができます...まあ、これは確かです! - すべての場合に当てはまるわけではありませんが、put-all-in-oneはほとんど間違った概念です。

データを繰り返さないようにしてください。

可能なすべての質問(ID、QuestionText、答えのタイプのための

つのテーブル(主キー、その名前、作成時、いくつかのメタデータとしてID)questionairのための1つのテーブルには、[はい/いいえがあります回答は与えられたリストにバインドされている場合は、数値スカラ、選択肢、フリーテキスト、...] ...)

一つの表では、これらの2つ(QuestionairID、QuestionID、...)

を接続するために、あなたは可能性があります可能な回答のためのテーブルが必要です。また、質問にマップするテーブルが必要です

そしてそうでは...

これは、リレーショナル・データベース・スキーマ

あなたが本当に読んで、あなたのデータの設計を開始する前にこのことについて学ばなければならないと呼ばれています!

幸運を祈る!

+0

私はこの種のデザインが多対多の関係を必要とするかどうかは分かりません。親子関係はおそらくもっと適切でしょう。私は質問がおそらくそれらを含むアンケート(「親」アンケートへの参照を持つ)とは無関係に存在するとは思わないでしょうし、複数のアンケートに渡って同一の質問(同一の回答セットを含む)を繰り返すことは、あらゆる利点を提供するために、 – Uueerdo

+0

@Uueerdoかもしれません...これは質問者によって異なります...これが4つの異なる製品の場合、質問はほぼ同じかもしれません。これが家族、仕事、休日、映画に関することならあなたが正しいです。小さな学生のプロジェクトでは、もっと少ないかもしれません...しかし、開始前には、少なくとも原理を知っていなければなりません... – Shnugo

+0

プロジェクトが顧客満足度調査を行っている企業の場合は、質問の重複設計者が_使用ケースおよび/または受け入れ基準を知ることは有益です。 – Uueerdo

関連する問題