ユーザーとエリアの 2 つのデータ セットを扱うアプリケーションを設計しています。データは、サードパーティによって作成されたファイルから読み取られます。User クラスと Area クラスがあり、データは Users 配列と Areas 配列 (または使用するテクノロジに応じて、他の適切なメモリ構造) に読み込まれます。
両方のクラスには、ファイルから読み取られる一意の ID メンバーがあり、User クラスにはエリア ID の配列が含まれており、1 人のユーザーが多くのエリアに関連付けられている関係を提供します。
要件は非常に単純です。
- ユーザー一覧
- エリア一覧
- 指定エリア利用者一覧
- 特定利用者エリア一覧
私が最初に考えたのは、データを 2 つの配列に残しておき、要件ごとに、必要に応じて一方または両方の配列に問い合わせる別の方法を用意することでした。これは簡単に実装できますが、必ずしも最善の方法であるとは確信していません。
次に、User クラスに「Get Areas」メソッドを配置し、Area クラスに「Get Users」メンバーを配置することを考えました。これは、たとえば、Area オブジェクトを持っている段階にある場合に便利です。プロパティによるユーザーですが、Area クラスの「Get Users」メソッドは、Users 配列をどのように認識し、アクセスできるのでしょうか。
私はこれまで何度もこの問題を抱えてきましたが、決定的な解決策を思い付くことはありませんでした。多分私はそれを実際よりも複雑にしています。この種のデザインに役立つヒント、URL、または書籍を提供してくれる人はいますか?
更新: 時間を割いてヒントを残していただき、ありがとうございます。コメントをお待ちしております。
この問題の根本は多対多の関係にあることに同意します。それがリレーショナルデータベースでどのようにモデル化されるかを理解しています。それは非常に簡単です。
私が受け取るデータは第三者からのバイナリ ファイルの形式であるため、これらの構造を制御することはできませんが、読み込むときに最適な方法で保存できます。穴がありますが、それを読み取ってデータベースに保存すると、プログラムはデータベースにクエリを実行して結果を取得する必要があると思いました。大量のデータではないので、メモリ構造に格納することで必要なものを取り出すことができると考えました。