2011-07-22 11 views
0

私はプロジェクトに取り組んでいます(これは私の質問にはあまり関係ありませんが、Djangoに基づいています)、私はデータモデルを表現する最良の方法を考え出すのに苦労しています。データベース設計 - これらの関係を管理する最善の方法

私は、次の4つのモデルがあります:ユーザー、 クライアント、 会議、 場所

ユーザーとクライアント

は、会議モデルを通じて多対多の関係を持っています。ミーティングモデルは、ロケーションモデルと1対1の関係にあります。

ミーティングのいずれかで行われます:

  1. ユーザー(またはのUserProfile)で定義されたアドレスをモデル
  2. クライアントモデルで定義されたアドレス。
  3. 後で定義する必要があるその他の場所。

できるだけクリーンで再利用可能にするために、ロケーションデータを保存する最善の方法を検討するのは難しいです。これはまた、会議の多くは、同じ場所に作成された場合に冗長データにつながる可能性があるが、これはおそらくです -

  • は、私はむしろそれ自体でのモデルよりもミーティングモデルのフィールドとして場所を作ると考えられ非スターター。

  • 私は、作成される各ユーザーとクライアントのロケーションレコードを自動的に作成し、関連するレコード間に一般的な関係を使用することができますが、データベースのパフォーマンスが非効率的になる可能性があります。また、すべてのクライアント/ユーザーが自分の場所で会議を開催できるわけではありません。

誰もが賢い選択肢を見ることができますか?

アドバイスありがとうございます。

ありがとうございました。

答えて

1

私はミーティングモデル独自の権利でモデルよりもむしろ のフィールドとして場所を作ると考える - 会議の多くは、同じ場所に作成されている場合、これはまた 冗長データにつながる可能性があるものの、 ので、このおそらく非スターターです。

いいえ、それはです。本当に本当の問題に直面しているので、良い考えです。

本当の問題は、会議と会議に参加するパーティーに違いがあることです。会議には、出席者とは関係のないいくつかの属性があります。少なくとも、時間と場所はあります。

私はあなたがMeetingモデルについてのあなたの考えを変えるべきだと思います。

ミーティングモデルを通じてクライアントとM:Nの関係を持つユーザーの代わりに、出席者モデルなどのM:Nの関係を持つ必要があります。 (登録や予約、またはMightAttendモデルがより適切かもしれません)。また、会議モデルは、現実の会議の固有の属性(時間と場所)を反映するように変更する必要があります。

1

私は、ミーティングと場所が多対1の関係になると思います。複数の会議に場所を使用することはできませんか? (時々刻々と)

場所には、1回の会議で使用する以外の属性があります。例:座席容量。

関連する問題