質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

2回答

10456閲覧

アンケートデータ格納用のDB設計について

ren0802

総合スコア12

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

1クリップ

投稿2016/11/10 09:23

アンケートデータ格納用のDB設計について質問させてください。

現在、アンケートの回答データを集計するためにDBに格納しようとしています。

アンケートデータの質問数は、多いものですと500を超えるケースもあり、
RDBのカラム制限にひっかかるため、回答データ1レコードを質問ごとに分割し、
縦持ちで保持することを考えています。


(元データ例:1カラム目はデータキー、2カラム目以降が回答データ)
回答者1,1,1,0,1,1,1...
回答者2,2,1,1,1,0,1...
回答者3,3,1,0,1,2,1...

(縦持ちイメージ)
回答者1,質問1,1
回答者1,質問2,1
回答者1,質問3,0
回答者1,質問4,1
.....
回答者3,質問499,1
回答者3,質問500,0


この場合、元のレコード数が例えば1万件程度でも、縦持ちの場合掛け算となり、
たとえば500質問では500万件のデータ数となってしまいます。

また、時系列でアンケートデータを管理していくため、レコード数自体も増えていきますし、
質問も追加されてどんどん増えていくことになります。

実際にはこのデータを元にオンラインでクロス集計などの集計処理を行うのが
メインとなりますが、このようなデータをDBで管理する場合には上記のように
縦持ちにするのが本当に正しいのでしょうか?
それとも、RDBではない別のデータ保持方法を採るのが良いのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

第一正規化 で[縦持ち]で設計します。
テーブル設計はきちんと勉強してください。1つのテーブルで何千万件、何億件のデータを持つシステムはめずらしくありません。システムに見合うハードウェアは用意します。

投稿2016/11/10 13:03

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ren0802

2016/11/11 00:51

ありがとうございました。
guest

0

個人的な意見ですが、質問内容が不定の時点で、縦持ちしかないと思います。
後は参照する時にインデックスが生きるようにするなどの注意をするぐらいしかないのでは?

自分も過去に上記のようなアンケートデータの集計をやったことがありますが、
数千万レコードありました。

集計にもそこそこ時間が掛かるので、リアルタイムではなかったですが。。。。

後は登録時点で集計を行うとか?・・・

投稿2016/11/10 09:48

編集2016/11/10 09:49
himakuma

総合スコア952

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ren0802

2016/11/11 00:51

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問