予約を管理するための最も適切な方法について少しアドバイスをいただければ幸いです。
MSSql DB を使用して VB で記述された既存のプログラムに追加しています。
現在、Win フォームを GUI として使用しており、DataGridView を使用して Month コントロールでデータを表示しています。
私の現在のDBスキーマは次のとおりです。
bikeDetail (bikeID (PK), bikeName, bikeColour, bikeStyle, bikeNotes)
bikeMovements (bikeMovementID (PK), bikeID, customerID, bikeMovementType, bikeMovementDate, bikeMovementAMPM, bikeMovementNotes).
customer (customerID, ..., ...)
自転車を出し入れするたびに、bikeMovements データベースに記録が作成されるという考え方です。これは、このデータを保存する最も簡単な方法ではないかもしれませんが、多くの繰り返しデータでデータベースが肥大化しないことを願っています。
私の問題は、自転車が入っているか出ていないかを確認するために bikeMovements テーブルを検索する最善の方法を見つけるのに苦労していることです。カレンダー ツールを使用して、日付の範囲を選択できます。
これまでのところ、SQL クエリを使用して特定の日付に自転車が利用可能かどうかを調べることができましたが、日付の範囲についてはできませんでした。
現在の SQL クエリ:
SELECT * FROM tb_bikeMovements as bm, tb_bikeDetail as bd
WHERE bm.bikeMovementDate < '" + startDate + "'
and bm.bikeID = bd.bikeID
and bm.bikeMovementType = 1
これにより、その日以降に利用可能な自転車が返されます。(bikeMovementType 1 は戻ってきた自転車であるため、利用可能です)。
可用性を取り戻すためのより良いSQLクエリ、またはクエリをより簡単にするDBをセットアップするより良い方法についてアドバイスをいただければ幸いです。
日付の例:
自転車 1 は 4 月 22 日に出発し、4 月 24 日に予約されます (4 月 25 日から利用可能)
自転車 2 は 4 月 22 日に出発し、4 月 28 日に予約されます (4 月 29 日から利用可能)
自転車 3 は 26 日に出発します4 月、4 月 27 日に再度予約されます (4 月 28 日から
利用可能) バイク 4 は 4 月 22 日以降に利用可能です。
4 月 25 ~ 29 日に利用できる自転車は? (バイク 1 と 4 である必要があります。バイク 1 をキャッチするのは簡単です。バイク 3 は、選択した日付範囲内で出入りするため、軟膏のフライです!)。
最も簡単な方法は、DB スキーマを変更して、自転車が予約された日ごとにレコードが作成されるようにすることだと考えています。これにより、空室状況の検索がはるかに簡単になりますが、テーブルはより肥大化します (現在、レンタル中とレンタル中の自転車ごとに 2 つのレコード)。ただし、公平を期すために、これらの自転車が何日間レンタルされるかはまだわかりません。これは私の決定に影響を与える可能性があります.
どんなアドバイスもありがたく受け取られます!