私はすでに取り組んでいるプロジェクトで RDBMS を置き換えて RavenDB を学習し、実際の状況で使用しようとしています。データベースを作成しようとして行き詰まりました。ドキュメント データベースでこれをモデル化する最良の方法を知りたいです。私が思いつくすべての可能性は、リレーショナル データベースのように見えるか、膨大な量の情報を繰り返すことになります。データベース内の情報を繰り返すことは大したことではありませんが、変更が発生したときにすべてを最新の状態に保つことは重要です。
私は SQL モードで立ち往生していることを望んでおり、明らかな答えがまったく見えません。
データを記録する必要がある基本的なオブジェクトは次のとおりです。 -イベント -人
-
組織
-
キャビン
簡単な要件:
- 1人が複数の組織に所属できること。
-組織は多くのメンバー (人) を持つことができます。
・一人で複数のイベントに参加できます。・多くの人
が
参加するイベント。
- キャビンの詳細は、イベントによって変更される場合があります (宿泊施設など)。
複雑な要件: -1つのキャビンが 2 つのイベントで同時に使用されないように、イベント用にキャビン
を予約できる必要があります。(RDBMS では、"EventCabins" テーブルを作成するだけです)。-イベントに参加している人
を記録できるようにする必要があります。イベントに参加する人々には、個人またはイベントの一部ではない情報が関連付けられています。-どの組織がイベントに参加している
かを記録できる必要があります。参加する組織には、組織またはイベントの一部ではない情報が関連付けられています。-どの人がどの人に割り当てられている
かを記録できるようにする必要があります
特定のイベントのキャビン。- 組織の一部として特定のイベントに参加している人物
を記録できる必要があります(組織の一部として参加する必要はありません)。1 人が複数の組織に所属することはできますが、特定のイベントについては、それらの組織の 1 つの一部としてのみ参加できます。彼/彼女は、別のイベントのために別の組織の一員として参加するかもしれません。- プログラムでは、ユーザーは一度に 1 つのイベントだけを見ます。その場合、ユーザーはキャビンごとまたは組織ごとにグループ化された出席者を見ることができます。
Events、People、Organizations、およびCabinsに対して個別のコレクションが必要になることは明らかです。上記の複雑な要件を満たすことが、私が壁にぶつかったところです。
イベントコレクション内に参加者を配置しますか? もしそうなら、キャビンとオーガナイゼーションはどうすればいいですか?
参加者用に別のコレクションを作成する必要がありますか? その場合、ID を保存し、さまざまなタイミングで照会する必要がある 4 つの異なる関連コレクションがあります (組織、キャビン、イベント、人)。これは、ドキュメント データベースのアプローチとは正反対のようです。
ありがとう!