2012-02-28 58 views
0

我正在開發一個具有以下表格的預約系統(請參閱附圖)。表tblScheduleDates有一些固定的年份,這些年份是在年初輸入的,例如28/02/2012,1/03/2012,4/3/2012等,而tblscheduleTimes有一些固定的日期這些約會的時間。因此,例如,在2012年2月28日,可用時間是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 
    ) 

我建議重命名錶,因爲它似乎真的是混合在一起的時間表日期和時間。類似於我下面第二個項目符號的解決方案可以解決這個錯誤。

如果圖中的鏈接是正確的:


也許我失去了一些東西,但這裏是我所看到的:

預訂表只綁在scheduleddate。但是,這個計劃日期有一個與時間有關的類型。這是否讓你可以有一個整天的時間表?否則,2012年2月28日的每個預訂都需要創建一個新的入口到SchedulDates。那麼,你可以在同一天有5行,只是因爲它們有不同的時間?如果真的是不同的時代,我不認爲需要將日期分成5次存儲。

  • 爲什麼不能將預訂連接到預定的時間和日程安排?這也會讓你的查詢更容易。

  • 或者,你可以有一個映射表,它將scheduledateANDtime連接在一起,然後你只需要在預訂中引用那張表。

  • 或者,您可以將日期和時間一起存儲在一張表中?

也許有一個商業理由,我失蹤,雖然。

+0

無論如何,我認爲你應該在這兩種情況下給出答案。從實際的圖表來看,如果不是你不能回答OP的問題 – 2012-02-28 22:08:11

+0

有時最好不要盲目回答,而是找出問題背後的推理。如果看到問題,那麼需要提出。傳播錯誤的東西似乎並不正確。也許,這將是一個不同方向的推動,讓pikk得到答案,因爲模式變得更容易管理。 – 2012-02-28 22:12:22

+0

我也在看到圖表與實際列表不匹配後更新了答案。它看起來像我建議的那樣設置,但鏈接不正確。 – 2012-02-28 22:23:55