0

最近、ASP.NET を使用した開発を開始しましたが、Code-First を理解するのに苦労しています。私はインターンシップのプロジェクトに取り組んでおり、受講した 1 つのクラスを除いて、データベースの知識はほとんどありません。私は決して完全な解決策を求めたり、怠惰になったりしているわけではありません。

私は数日間、堅実な ER 図を作成しようとしてきましたが、以下の図が保存する必要があるすべての情報を表していると確信しています。これを改善する方法があれば教えてください。

私がやろうとしていること:

このプロジェクトでは、管理者は以下にリストされた属性を持つ部屋を作成します。次に、管理者は、部屋が利用できる時間と曜日を表すタイムスロットを割り当てます。

ユーザーは基本情報を入力し、利用可能な時間を表すフォームに入力します。

すべてのユーザーが登録された後、管理者はスケジューリング アルゴリズムを実行して、最も効率的なスケジュールに最も近いものを考え出します (NP 困難であるため)。

割り当てられた関係は、どのユーザーがどの時間にどの部屋に割り当てられているかのテーブルを作成するために、部屋の時間枠に関連するユーザーの時間枠を表します。

Visual Studio 2012 を使用しています。

質問

  1. Code-First を使用して、これらの集約エンティティをどのように表現しますか? 必ずしもこの正確な図のコードを要求するわけではありませんが、Code-First について理解するのに役立つ簡単な例かもしれません。
  2. 私のマッピングはこれらの関係に対して正しく見えますか?

正しい方向への助けや指摘は大歓迎です!! ありがとうございました!

以下は、以下を表す ER 図です。

  • 部屋(ID、番号、建物、定員)
  • TimeSlot (id、startHour、endHour、dayOfWeek)
  • ユーザー (id、firstName、lastName、email)
  • あり(userId、timeID)
  • 予約済み (roomID、timeID)
  • 割り当て済み (reservedID、availableID)

小胞体図

4

1 に答える 1

1

最初の ER ダイアグラムでは、Room から TimeSlot (右上) および User から Timeslot (右下) への直接リンクを期待していましたが、実行される可能性のあるクエリを知っていると、ERD は次のようになるはずです。

RoomAvailability というエンティティにリンクされた部屋。RoomAvailability には、部屋のすべての空き時間枠が含まれているため、最初は 1 日に 1 部屋につき 1 つのレコード (RoomId、Date、StartTime、EndTime) が取り込まれ、必要と思われる日数だけ未来に進みます。

同様に、エンティティ UserAvailability (UserId、Date、StartTime、EndTime) を User にリンクします。

RoomReservation エンティティ (RoomId、UserId、Date、StartTime、EndTime) は、すべての部屋の予約を含む Room と User の両方にリンクされます (1 人のユーザーのみが部屋を予約できると仮定します)。

部屋が予約されると、RoomReservation レコードが追加され、1 つの RoomAvailability レコードが 2 つの別々のレコードに分割される場合があります (たとえば、部屋が終日無料で、誰かが 1 日のスロットを予約し、1 日の開始と終了に 2 つの無料期間を残します)。 )。

予約がキャンセルされると、RoomReservation レコードが削除され、2 つの RoomAvailability レコードが 1 つにマージされる場合があります (上記の逆)。

利用可能なスロットの分割とマージは、同様のシステムがどのように機能するかだと思います。

于 2013-03-27T22:20:40.353 に答える