我不知道如果標題實際上使得任何意義,但這裏是我的一般問題:設計架構屬性
我有一個跨多個不同的保存有關事件的信息表設備和平臺。我不知道如何有效地設計架構查詢所有事件,然後查詢特定事件的信息。
我試圖保持它下面的所有僞代碼,所以如果事情不與代碼是有意義的,這只是因爲我試圖保持它的通用。
這裏是一個人爲的例子:
Event Table:
int Id
datetime Occured_On
uniqueidentifier UserId --> Users table
int Category (the type of event) --> Categories table
text Summary (textual summary of the event)
text EventSource (specifies whether this is a DesktopEvent or MobileEvent)
然後,每個設備有它自己的一套用於每個事件的數據。例如:
DesktopEvent
int Id
int EventId --> Event table
text Hostname
text LoggedInUsername
MobileEvent
int Id
int EventId --> Event table
int PlatformId
text ESN
...
我想查詢事件表中最近X個最新的事件。現在,我現在有一個列指定事件的來源,這樣我可以做第二次查詢到相應的表。
results = SELECT * FROM Event DESCENDING Occured_On LIMIT 5.
foreach (result in results)
{
if (result.EventSource == "DesktopEvent")
data = SELECT * FROM DestkopEvent WHERE EventId == result.EventId
...
}
雖然這看起來效率很低。
它進一步複雜化有可能是事件的許多不同的來源,而不是僅僅2(DesktopEvent和MobileEvent)像上面。嘗試連接10個以上的表,檢查哪一個不是NULL,似乎比上面的更糟糕。
是否有更好的方法來組織這些數據?非常感謝。
感謝您確認我的想法。我想我試圖說服自己,有這麼多的個人亞型是錯誤的。但是,鑑於它們是不同的類型,對它們進行不同的模型是有意義的。 – mfanto 2011-03-02 06:55:53