2012-01-07 8 views
1

現在、私はイベント登録システム(PHPで)に取り組んでいます。イベントの開始前にオンラインでゲストを登録し、バーコードスキャナーを使用してゲストをオンサイトでスキャンします。このシステムでは、オンラインとオフラインのサーバーを持つことが重要です。すべてのイベントでインターネットにアクセスできるわけではありません。多くのインポート/エクスポートされたデータベースの正規化

データベースは、1台のサーバーから他のサーバーにインポート/エクスポートされます。さらに、複数のイベントが同時に発生します。

このシステムを開発する際に遭遇した問題を説明するために、2つの別々のイベント(AとB)があるとしましょう。オンラインサーバーでは、ゲストはこれらのイベントに登録することができます。ある時点では、イベントAが発生するため、オンサイトで使用するためにデータベースをオフラインサーバーにエクスポートする必要があります。一方、ゲストはイベントBのオンライン登録が可能です。イベントAのオンサイトでは、イベントAでは登録できますが、イベントBでは登録できません。

イベントA終了後、オフラインのインポートはほとんど不可能になります何らかの方法でデータを変更することなく、データベースをオンラインのものに変更できます。

  1. eventizeがguestの表があります。ゲストまたはイベントに依存する他のすべてのテーブルは、ゲストおよび/またはイベントの主キーを参照するだけです。
  2. イベント間のテーブルの分割:ゲストテーブルA_guestsとB_guestsがあります。ゲストまたはイベントに依存する他のすべてのテーブルには、イベントに応じて名前が付けられます。

インポートとエクスポートは、選択肢2(およびデータを変更せずに)は非常に簡単ですが、テーブルの数は非常に高速になります。それはかなりジレンマです:正規化しますが、インポート/エクスポートには問題があります。または、テーブルを分割して、テーブルの数を増やすことができます。

オプションがありませんか、またはこれらのオプションのいずれかを最善の選択と考えていますか?

答えて

0

イベントAが発生するため、オンサイトで使用するためにデータベースをオフラインサーバーにエクスポートする必要があります。一方、ゲストはまだイベントBのためにオンラインで登録することができます。イベントAの現場では、登録することもできます。

私はこれを理解したいと思っています。ある時点で、イベントAのオフラインサーバーにデータベースをエクスポートします。ゲストはオンラインでAイベントに登録することはできませんが、Aサイトにしか登録できません。これは間違いありませんか?もしそうなら、オンラインソフトウェアが輸出を認識している限り、問題はありません。

イベントAでは、ゲストがイベントBに登録するようにしたいと思いますか?もし、そうならば、あなたは最終的にそれらのBトランザクションをあなたのオンラインデータベースに戻さなければならないだろうから、あなたはBを超過しないことを願っています。データベースを2つ以上コピーすれば、オーバーブッキング

私にはオプションがありませんか、またはこれらのオプションのいずれかを最善の選択と考えていますか?

予約データベースを完全に正規化する必要があります。イベントAは、イベントAでイベントBまたはCまたはDなどを登録できるようにするには、予約データベース全体のコピーが必要です。

私が見る唯一の問題は、さまざまなイベントでこれらのデータベースのすべてを持っているので、オーバーブッキング問題です。

+0

ほぼ。イベントAのエクスポート後、ゲストはイベントBのみオンラインで登録できます。ゲストはイベントAのオンサイトで登録できます。問題は、イベントAのオンサイトゲストをオンラインデータベースに再度インポートする必要があることです。選択肢1では、データベースの1つのデータを変更せずにこれを行うことはできません。選択肢2では可能ですが、テーブルの数は非常に高速になります。 – Thanaton

+0

@Thanaton:これはずっと簡単な問題です。ゲストテーブルにオフラインブール列を追加します。オンライン登録はブール値をfalseに設定し、オフライン登録はブール値をtrueに設定します。イベントから復帰するときは、Booleanフラグtrueでオフラインデータベースから行を選択し、それらをオンラインデータベースに挿入します。 –

関連する問題