0

私は Microsoft MVC 2 を学習しようとしていますが、その場合、展開したい小さなプロジェクトを見つけました。

私のアイデアは、テーブルを注文できるレストランをシミュレートすることでした。

基本:

  • ユーザーは満席のテーブルしか予約できないので、別のテーブルにいる人をマージするという問題はありません。

    人は一定時間テーブルを注文できます。

私の質問は、データ モデルを最もスマートな方法で作成するにはどうすればよいかということでした。私は自分のデータベースを次のようにすることを考えました:

テーブル {ID、テーブル名}

予約 { Id TableId ReservedFrom ReservedTo UserId }

ユーザー { ユーザー ID ユーザー名 ... }

このようにすることで、データモデルで処理する代わりに、どのテーブルがいつ占有されるかをサポートするために、ビジネスレイヤーなどで多くのロジックをプログラムする必要があります。

したがって、これを行うためのより良い方法がありますか?

4

2 に答える 2

1

開始日時または終了日時が挿入される行の日時の間にあるテーブルの予約数をカウントする関数を使用して、テーブルの 2 つの予約が重複しないようにするデータベース制約。この制約により、カウントが 1 (挿入された行) になることが保証されます。

また、使用可能なすべてのテーブルが予約されているユーザー インターフェイスのブロック時間を設定する必要があります。基本的に、その日のすべての予約を取得し、1 時間のブロックごとに、そのブロックにまたがる予約の数をカウントします。カウントがテーブルの数と等しい場合、UI はそのブロックを許可しません。選ばれました。これは、ビジネス/UI レイヤーにまたがります。

于 2010-03-24T15:55:58.923 に答える
1

人が食事にかかる時間を知る方法はないため、ReservedTo の時間が正確であると想定することはできません。別のテーブルにタイムスロットを作成します。そうすれば、単純な一意の制約を使用できます。

TimeSlot { id, StartTime, Duration }

さらに、ユーザー テーブルをダンプし、名前を入力します。

予約 { id, tableId, date, timeSlotId, Name }

{tableId、date、timeSlotId}に一意の制約を置きます

これは、テーブルごとに異なる期間を許可するように拡張できますが、それは学習プロジェクトの範囲外です。

于 2010-03-24T19:59:55.057 に答える