2016-03-30 3 views
0

私はMCQベースの試験のためのオンライン試験システムをphpとmysqlで開発しています。データを取得するためにPHP mysqlまたはjsonファイルを使用する必要がありますか?

私のデータベース構造は、次のとおりです。

テストテーブル - >店舗データ管理者は

質問表を作成するとき - >店舗質問5オプションとANS

testtakenテーブルと - >ユーザーの試験データを保存する( ユーザーが新しいテストを行うと1行挿入)

ansテーブル - ユーザによって与えられたansを格納する

私は現在、データベースから直接MySQLクエリを使用しており、jquery uiタブを使用して200の質問を表示しています。

ここ数週間、私はここからのオンライン試験のために多くのことを分析しました。 私は約200以上の質問のために私はデータベースonce.WhenからJSONファイルを作成することになると、それはデータベースに行くとJSONファイルからデータを取ることはありませんたびに試験を与えることを結論に来る。

私の欲望は良いですか、毎回直接mysql quiresを使用していますか? 多くのユーザーが一度にテストを行うと、mysqlがゆっくりと読み込まれるため、私は将来これを行うようにしています。事前に

おかげ

EDIT: - 私たちは試験のページにタイマーを持っているので、ユーザは ページネーションを使用して、質問のロード時に時間を失う可能性がありので、私は(可能性がありAJAXとPHPのページネーションを使用するカントインターネットの問題ので、 ユーザーのために時間の無駄遣い)。

+0

最適化されたテーブルやクエリがより柔軟になり、ランダムにそれらの200を選択したい場合は、将来的に例えば

速く問い合わせることができます。右のフィールドにインデックスを付けると、パフォーマンスの低下はほとんどありません。データベースは私の非常に高いトラフィックと何百万もの行に使用されることを意図しているので、おそらくあなたに課税されることはありません。 – Rasclatt

+0

私のquestion_body fileldは、イメージ(base64)とテキストの紛失を含むため、多くのスペースを使用しています...どのように最適化するのですか? – Mehuldabhi

+0

私は個人的にデータベースに画像を保存しませんが、保存された画像はデータベースを少し遅くすることがあります。 – Rasclatt

答えて

0

改善されたyoir dbデザインを改善しました。たとえば、ユーザーはパスの失敗を保存するだけで、間違った答えは別のテーブルにある可能性があります。これはuser_idで行うことができます。さらに、ファイルを作成しても安全でない場合もあります。したがって、データを送信してtrue/false値を取得することと比較するだけです。

+0

しかし、ローディングテスト時に問題が発生すると、画像が200枚、テキストが失われる時間がかかります...私はそれを管理して最適化しますが、質問はできません。 – Mehuldabhi

0

データがデータベース内で頻繁に変更されていない場合は、JSONファイルを保存してその都度ユーザーに送信するという欠点はありません。確かに速いです。

しかし、デザイン戦略からは、最適な解決策ではありません。私が示唆しているのは、イメージをファイルシステムに保存し、URLをデータベースに保存し、ユーザーが試験を開始する必要があるたびにデータベースを照会することです。この方法では、ユーザーに提供するデータをより自由に使用できます。あなたの質問の銀行が1000件の質問があり、あなたは、この設計はまだされて能力のようなもので問題はないはずです

関連する問題