0

複数のインライン ブロック イメージ (数式など) を持つことができ、4 つの関連する選択肢 (クイズなど) を持つステートメントがあり、それぞれに任意の数のインライン イメージを含めることができます。

私は素朴な方法で、それぞれのHTMLを保存できることを知っています

Q_ID|Ques|Number Of Choices| Choice A | Choice B | Choice C | Choice D 

または、質問表を使用できます

Q_ID|Ques| Q_contains_image| Number Of Choices| Choice A | Choice ID| Choice_contains_image| Choice B | ....Choice C... | Choice D ...

と画像テーブル

Img_Id|Q_ID/CHoice_ID|Image_path

それらが最良の方法であるかどうか、また HTML で選択肢を使用して質問をレンダリングする必要がある場合、2 番目の方法がパフォーマンスにどのように影響するかはまだわかりません。HTML内のパスをハードコーディングする必要があり、SQLクエリの結果として表示されたときにHTMLが読みにくいため、最初の方法は好きではありません。

それらを保存するための良い方法と、良い方法を使用することの暗黙のコストを知りたい.

4

1 に答える 1

2

データを正規化しましょう。データを正規化することで、データの冗長性を排除し、必要なストレージを最小限に抑えます。

すべての情報を取得するには、テーブルを結合する必要があります。テーブルの結合は、リレーショナル データベースが行うように設計されているため、テーブルをすばやく結合します。

Question
--------
Question ID
Question Text

Answer
------
Answer ID
Question ID
Answer Text

Correct Answer
--------------
Correct Answer ID
Question ID
Answer ID

Question Image
--------------
Question Image ID
Question ID
Question Image

Answer Image
------------
Answer Image ID
Answer ID
Answer Image

上記の各テーブルでは、最初の ID フィールドが主 (クラスタリング) キーです。主キーは、自動インクリメント整数または long です。

最初のフィールドの後の ID フィールドは、主キーを持つテーブルを指す外部キーです。

正解テーブルには、(質問 ID、回答 ID) に関する追加の一意のインデックスがあります。

どのデータベース列にも HTML を保存しません。テキストまたは画像を保存します。

コメントの質問に答えるように編集されました。

質問/画像テーブルに画像のフラグを設定する必要がありますか、または画像テーブルから一致するかどうかに基づいて推測することをお勧めします。

画像テーブルから行を取得するか、行を取得しないことに基づいて推測します。

正解IDとはどういう意味ですか. 選択肢 a,b,c,d と a,b が正しい質問があるとします。ここにそのデータをフィードすることをどのように提案しますか?

質問に対して複数の正解がある場合、正解テーブルには複数の行があります。質問 ID は例の両方の行で同じになり、白い回答 ID は 2 つの正しい回答を指します。

于 2013-05-19T00:36:00.290 に答える