2012-02-28 3 views
0

次の表(添付の図を参照)を持つ予定システムを開発しています。テーブルtblScheduleDatesには、年の初めに入力された年内の予定の固定日付がいくつかあります。たとえば、28/02/2012,1/03/2012,4/3/2012などです。tblscheduleTimesにはいくつか固定されていますそれらの予定の時間。たとえば、28/02/2012の場合、利用可能な時間は10:00,11:00,12:00などです。tblBookingsは、予約された日付と固定時間を使用して予定が設定され、予約状況が予約された値キャンセル。私は、残りの利用可能な日付と時刻をtblscheduledatesとtblscheduleTimesから返すストアドプロシージャを作成しようとします。だから私は何とかtblbookingsに存在し、それらがストアドプロシージャによって返されない場合、固定日付と時刻をチェックしなければならないと考えています。任意のアイデアやヘルプは歓迎ですDatabase Schema特定の行を返すストアドプロシージャ

答えて

2

ScheduleTimeはScheduleDatesにリンクされていますか?あなたが持っている限り、スキーマは、たくさんの重複データを持っているか、間違ったデータだけを持っているようです。

時刻の現在のPK/FKマッピングが正しく表示されていないようです。リンクは、時間の種類を示します。しかし、scheduletimeidは予定されていますか?

値が正しい場合:


SELECT tblScheduleDates.*, tblScheduleDates.* 
FROM tblScheduleDates 
    JOIN tblScheduleTimes 
     ON tblScheduleTimes.scheduleTimeID = 
      tblScheduleDates.scheduleTime_ID 
WHERE NOT EXISTS 
    (
     SELECT 1 
     FROM tblBookings 
      JOIN tblBookingStatus 
       ON tblBookingStatus.Status = 'Booked' 
     WHERE tblBookings.ScheduleDate_ID 
      = tblScheduleDates.scheduleDateID 
    ) 

本当に一緒に混合スケジュールの日付と時刻のようだと、私はテーブルの名前を変更することをお勧め。下の2番目の箇条書きに似た解決策が、この誤った名前解決を解決します。

図中のリンクが正しい場合:


たぶん私は何かが欠けていますが、ここで私が見たものである。

予約テーブルのみscheduleddateに関連付けられています。ただし、このスケジュールされた日付は、時間と関連するタイプです。あなたは一日のスケジュールであるタイプを持つことができるようにこれはありますか?それ以外の場合は、2012年2月28日のすべての予約で、ScheduledDatesに新しいエントリを作成する必要があります。したがって、異なる日付を持つために、同じ日付の5行を持つことができますか?私は実際に異なる時であるときに5回の別々の時間を保存する必要性を見ません。

  • なぜ予約されていて、スケジュールに結びついていないのですか?これにより、クエリがはるかに簡単になります。

  • または、2つのマップを結びつける予定のマッピングテーブルを持つことができます。予約でその1つのテーブルのみを参照する必要がありますか?

  • また、日付と時刻を1つのテーブルにまとめて保存するだけでもいいですか?

多分私が行方不明になっているビジネス上の理由があります。

+0

とにかく、どちらの場合でも答えを出すべきだと思います。実際のダイアグラムでは、OPの質問に答えることができないのであれば、ダイアグラムを作成します。 –

+0

盲目的に答えるだけでなく、質問の背後にある推論を見つける方がよい場合もあります。問題が見られる場合は、問題が発生している必要があります。間違ったことを伝えることは正しいとは思わない。たぶん、これは、スキーマが管理しやすくなるにつれて、ピックに答えを出す別の方向へのプッシュとなるでしょう。 –

+0

ダイアグラムと実際のカラムの不一致を見て、私の答えを更新しました。私が示唆したように設定されているように見えますが、リンクが正しく描かれていません。 –

関連する問題