2012-11-17 553 views
0

我正在一個項目上工作,我想要一些靈感或見解來解決問題。我正在撰寫一個應用程序,讓訪問者登錄到一個禱告中心(一個有許多房間的地方,人們來祈禱)。我們將整合預訂系統。現在人們可以說:「生病來吧,約會」或「我每週三過來」或「我每週來兩次」或「我每月來一次」等。時間表,時間間隔,預約等數據庫設計

我不知道如何維護這種類型關係數據庫中的信息。任何人都可以對此有所瞭解嗎?

而我該如何查詢數據庫以查找哪些人計劃在某一天訪問?

回答

1

這個模式應該足以讓你開始

VISITORS 
id 
name 
... other atomic data 

RESOURCES 
id 
name 
... other atomic data 

RESERVATIONS 
id 
visitor 
resource 
fromdate 
tilldate 

因此,如果我想在11月19日10:00預留房號200至12:00,將有在保留記錄其中'訪問者'字段指向訪問者表中的條目,'資源'字段指向資源表中的房間200的條目,'fromdate'將等於10:00 19 -11-2012和'tilldate'將等於'12:19-11-2012'。

您可以編寫查詢,這將顯示哪些資源在某一特定日期/時間保留的,如

select resources.name, visitors.name 
from resources inner join reservations on resources.id = reservations.resource 
inner join visitors on reservations.visitor = visitors.id 
where reservations.fromdate <= "2012-11-19 06:00" 
and reservations.tilldate >= "2012-11-19 23:59" 

和查詢其顯示哪些資源是免費的,在給定的時間

select resources.name 
from resources 
where not exists (select 1 from reservations 
where reservations.resource = resources.id 
and reservations.fromdate >= "2012-11-19 10:00" 
and reservations.tilldate <= "2012-11-19 12:00") 

如果有人說「我每週三會來」,那麼您的應用程序必須足夠聰明,根據所需的資源,日期和時間將多行插入到「預訂」表中。

而且,看到了這個問題:Database Tables for Reservation site

+0

謝謝:)這是一個好主意。我會跟進。 –