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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

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

Q&A

解決済

1回答

552閲覧

二択の質問アプリのデータベース設計について

maskmelon

総合スコア63

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

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

0グッド

0クリップ

投稿2020/07/27 09:03

編集2020/07/27 09:05

ユーザーが投稿した二択の質問がランダムに表示され、それに対してユーザーが回答すると集計結果が円グラフで表示されるアプリを作成しています。

UserとQuestionの二つのテーブルを用意し、質問内容と作成者を紐付けることはできたのですが、回答者と回答結果をどのようにして紐付ければよいのか分かりません。

具体的には、ユーザーは自分の回答履歴を見ることができ、過去の回答を変更すると、それが集計結果全体にも反映されるようにしたいです。

Userテーブル  id  name  email  password Questionテーブル id  content(質問内容)  countA(Aと回答した人の数)  countB(Bと回答した人の数)  createdBy(ref: User)

ちなみにここまでNoSQLで作成しているのですが、RDBのほうが適切でしょうか?
アドバイスを頂けると嬉しいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

1.回答テーブルを作成して紐づける

Userテーブル  id  name  email  password Questionテーブル id  content(質問内容)  countA(Aと回答した人の数)  countB(Bと回答した人の数)  createdBy(ref: User) answerテーブル id userId(回答したuserのid)  questionId(質問のid) answer(回答内容AorB)

2.userテーブルに回答内容を持たせる(noSqlの場合)

Userテーブル  id  name  email  password answers(Arrayオブジェクト) : [    {      questionId : (質問のid)   answer : (回答内容AorB)    }, {      questionId : (質問のid)   answer : (回答内容AorB)    }  ] Questionテーブル id  content(質問内容)  countA(Aと回答した人の数)  countB(Bと回答した人の数)  createdBy(ref: User)

方法としてはこんなところでしょうか。
noSqlかRDBかは、複雑な検索など特に無ければ、どちらでも使いたい方で良いかと思います。

参考までに
RDBMSとNoSQLを徹底比較!特徴からそれぞれのメリット・デメリットまで、わかりやすく解説!

投稿2020/07/27 09:26

編集2020/07/27 09:54
June666

総合スコア290

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

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

maskmelon

2020/07/27 11:06 編集

Userテーブルに配列を作って質問と回答をセットにしたオブジェクトを順番に入れていけばいいのですね。どちらのやり方も示して頂けて分かりやすかったです。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問