調査のためにMySQLテーブルを設計しようとしています。MySQL:モデリングのための90回の質問があります。統計サポート付きのアンケート
アンケートは6組の質問で構成されており、それぞれの質問ごとに15の質問があるため、合計90問です。 質問と質問の順番は変更されませんし、新しい質問のセット(1セットにつき15質問)が追加される可能性もあります。
これらはすべて「はい」または「いいえ」の質問なので、回答はブール値で真または偽として保存されます。
また、統計のユーザーの性別、国籍、年齢も保存します。
- 私は2人のユーザー間で同じ回答のパーセンテージを取得したいと考えています。
- 私は、同じ回答のパーセンテージを1人と多数(大部分は50%以上の回答)得たいと思っています。
- 私は、性別、国籍、年齢の組み合わせで質問ごとに「はい」または「いいえ」の統計を取得したいと考えています。例えば、66%が質問第11号や韓国人女性の12%をyesと答えた質問第86号にはが
は、だから私はすべてのこれらの機能をサポートするためのテーブルを作っ答えない
質問表
q_id PK(1 to 90)
q_text VARCHAR(100)
ユーザーテーブル
u_id PK
sex TINYINT
nationality VARCHAR(20)
age TINYINT UNSIGNED
q_1 TINYINT
q_2 TINYINT
...
q_90 TINYINT
それが一つのテーブルに94列を持ってしても大丈夫ですか?私はいくつかの質問セットを追加すると列の数が増えることに気づいています。だから私はテーブル
SET1テーブル
s_id PK
u_id users_table
q_1 TINYINT
q_2 TINYINT
...
q_15 TINYINT
SET2テーブル
s_id PK
u_id users_key
q_16 TINYINT
q_17 TINYINT
...
q_30 TINYINT
などを設定するために答えをsplited。私は今6セットのテーブルを持って、私は今新しいセットを追加する場合、新しいテーブルを追加することができます。 私は答えテーブルがあまりにも成長することを恐れている回答テーブル
a_id PK
u_id users_key
q_no question number(1~90)
answer TINYINT
これについて少し検索し、私は答えを別のテーブルを持っている場合、それが良いだろうことを見た
答え表はユーザーあたり90行を取得するため、大きな値です。 どのデザインが良いかわからない。私は答えのためにstackoverflowを検索しましたが、私ははい、いいえアンケートのための適切な答えを見つけることができませんでした。遅かれ早かれよりもあなたを作成するすべてのこれらの列を入れて、あなたがあなたのテーブルを正規化する必要がありs_id PK s_type (you can put 1, 2, 3 for set group) q_id FK(questions)
:クレイジーですq_xすべてのこれらの列を作成
同じ構造化データの行の数が非常に細かくなります。 DDLを変更して質問を追加すると、列が多く表示されなくなります。データを追加するのは、しばしば構造の変更よりも望ましいことです。 – xQbert