多肢選択式クイズを実装しようとしており、すべての質問と回答を SQLite データベースに保存したいと考えています。多くの質問があり、各質問に対して 2 つ以上の可能な回答が表示されます。
私の質問は、質問と回答をデータベースにどのように保存すればよいですか? スキーマについて 2 つのアイデアがあります (太字の主キー)
- as (多対多)
質問 ( questionID :int , questionString:String, correctAnswerID:int)
回答 ( answerID :int , answerString:String)
question_and_answers ( questionID , answerID )
2.
質問 ( questionID :int, questionString:String, correctAnswerID:int)
回答 ( answerID :int, answerString:String, questionID:int外部キー)
どちらが良いかわかりません、または別の方法があるかどうかはわかりませんか?
非常questions_and_answers
に大きくなり、検索時間が長くなり、メモリの問題が発生する可能性がありますか? question_and_answers
繰り返しになりますが、主キーでインデックスが作成されると思います。2 番目のスキーマでanswers
は、 ?answerID
ではなくquestionID
? テーブル全体を検索する必要があるため、検索時間が長くなることを意味しますか?
10,000 ~ 20,000 の回答があるかもしれません。(クイズはモバイルデバイスで実行される場合があり、質問は「即座に」表示される必要があります)
注: 質問間で回答が重複することはあまりないと思います。questions_and_answers
テーブルに必要な余分なスペースを考えると、オーバーラップの量が保存されるデータが少なくなるとは思わない