現在、私はイベント登録システム(PHPで)に取り組んでいます。イベントの開始前にオンラインでゲストを登録し、バーコードスキャナーを使用してゲストをオンサイトでスキャンします。このシステムでは、オンラインとオフラインのサーバーを持つことが重要です。すべてのイベントでインターネットにアクセスできるわけではありません。多くのインポート/エクスポートされたデータベースの正規化
データベースは、1台のサーバーから他のサーバーにインポート/エクスポートされます。さらに、複数のイベントが同時に発生します。
このシステムを開発する際に遭遇した問題を説明するために、2つの別々のイベント(AとB)があるとしましょう。オンラインサーバーでは、ゲストはこれらのイベントに登録することができます。ある時点では、イベントAが発生するため、オンサイトで使用するためにデータベースをオフラインサーバーにエクスポートする必要があります。一方、ゲストはイベントBのオンライン登録が可能です。イベントAのオンサイトでは、イベントAでは登録できますが、イベントBでは登録できません。
イベントA終了後、オフラインのインポートはほとんど不可能になります何らかの方法でデータを変更することなく、データベースをオンラインのものに変更できます。
- eventizeがguestの表があります。ゲストまたはイベントに依存する他のすべてのテーブルは、ゲストおよび/またはイベントの主キーを参照するだけです。
- イベント間のテーブルの分割:ゲストテーブルA_guestsとB_guestsがあります。ゲストまたはイベントに依存する他のすべてのテーブルには、イベントに応じて名前が付けられます。
インポートとエクスポートは、選択肢2(およびデータを変更せずに)は非常に簡単ですが、テーブルの数は非常に高速になります。それはかなりジレンマです:正規化しますが、インポート/エクスポートには問題があります。または、テーブルを分割して、テーブルの数を増やすことができます。
オプションがありませんか、またはこれらのオプションのいずれかを最善の選択と考えていますか?
ほぼ。イベントAのエクスポート後、ゲストはイベントBのみオンラインで登録できます。ゲストはイベントAのオンサイトで登録できます。問題は、イベントAのオンサイトゲストをオンラインデータベースに再度インポートする必要があることです。選択肢1では、データベースの1つのデータを変更せずにこれを行うことはできません。選択肢2では可能ですが、テーブルの数は非常に高速になります。 – Thanaton
@Thanaton:これはずっと簡単な問題です。ゲストテーブルにオフラインブール列を追加します。オンライン登録はブール値をfalseに設定し、オフライン登録はブール値をtrueに設定します。イベントから復帰するときは、Booleanフラグtrueでオフラインデータベースから行を選択し、それらをオンラインデータベースに挿入します。 –