C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 140 を表示中)
■82040 / )  Re[2]: レコードのSELECT,UPDATE処理時の排他制御について
□投稿者/ あさ (11回)-(2016/12/02(Fri) 10:24:35)
No81975 (Jitta さん) に返信

ご返事遅れましてすみません。
今回作成している予約システムは、宿泊業のものではなく、
一時保育に関するものでして。
なので、基本的には当日1日の特定時間のみ使用、1日ごとの利用になります。
もし、連続で予約を入れたい場合は、それぞれの予約で、部屋NOも
変わり得ます。
予約が確定された、予約者が実際に来た、預けた、迎えに来た、精算して終了した、
の各段階をフラグで管理します。

これらのことを踏まえまして、お答えします。

> 1日目の予約が1件、2日目の予約が0件の場合、1日目の部屋Noは2になります。2日目の部屋Noは何番?
2日目の部屋NOは1になります。

> ここで「2」にすると、2日目が1日目になる人の部屋Noはどうなる?
2日目の予約で部屋NO「2」が埋まっている場合、「1」が空いていれば「1」になります。
「1」が空いてなければ「3」になります。
実際のコードでは、すでに埋まっている部屋NOを昇順で並べ、空きがあるかを検索、空きがなければ+1します。

> また、1,2,3と予約が埋まった後、2の人がキャンセルしたら?
2の人がキャンセルした場合は、次の予約は「2」に入ります。

ありがとうございます。

> ■No81893 (あさ さん) に返信
>>ある予約システムを作成しています。
>
>  ここに書かれているのは「予約をする」ことのみです。
> では、「約が実行された」時は、どうするのでしょうか。
>
>>以下のような予約一覧テーブル(分かりやすくするために簡略化します)があるとします。
>>予約Noはオートナンバーです。
>>
>>予約一覧テーブル
>>予約No 部屋No 氏名
>>10000  1    鈴木
>>10001  2    山田
>>10002  3    佐藤
>>
>>新たに予約を行う際には、いきなりUPDATEではなく、
>>まずは部屋NoのMax値(ここでは3)をSELECTして、
>>+1をして、部屋数の定数内であることを確認し、それから、
>>UPDATE(INSERTによる)します。
>
> 簡略化してあるということですが。
> 当然、日付があるのでしょう。
> 連泊するときは、どうなるのでしょうか。1日ごとに1レコード使うのか、ということです。
> その場合、2泊目は、部屋Noは、どうするのでしょうか。
> 1日目の予約が1件、2日目の予約が0件の場合、1日目の部屋Noは2になります。2日目の部屋Noは何番?
> ここで「2」にすると、2日目が1日目になる人の部屋Noはどうなる?
> また、1,2,3と予約が埋まった後、2の人がキャンセルしたら?
>
> と、コードを考える前に考えなければならないことが、まだまだあるように思います。
返信 編集キー/


管理者用

- Child Tree -