對於個人項目,我想記錄一系列不相關的事件,以稍後收集簡單的統計數據。每個事件都可以[廣泛]具有與之相關的不同數據。針對事件流的簡單數據庫設計
我在尋找一些關於如何構建這個的建議。由於這是一個小項目,我的主要目標是:
- 設置的難易
- 易於使用(即不怪聯接)
性能不是關鍵,我會是隻有用戶。
爲了給你什麼,我瞄準的想法,這是我目前的計劃:
表:Event_Definitions
列:
- ID
- 名稱
- 類型
個- 選項
表:活動
色譜柱:
- ID
- Definition_ID
- Option_Values
- 注
所以說,我們有兩個事件定義,像這樣:
ID:0;名稱:Pigeon_Released;類型:時間;選項:null
ID:1;名稱:Fed_Pigeon;類型:Fixed_List;選項:麪包,餅乾,豆腐
然後我們記錄一些事件:
ID:0;定義_ID:1; Option_Values:麪包;備註:null
ID:1;定義_ID:1; Option_Values:豆腐;注:「他咕咕嚕」
ID:2; Definition_ID:0; Option_Values:12:34:56;注意:「我也吼過」
選項值將通過程序強制執行。
一些事件已被收集後,我會被一起收集同一類型的事件進行比較。我不希望檢索具有特定值的事件,只是相同類型的事件。
所以問題是,再次,這個策略或替代方案的任何意見或評論?我很欣賞這種方法的簡單明瞭,但它讓我感到困擾,即使「偶數」的「值」可能是字符串,時間,索引號等等,它們也都存儲在同一列中。
我喜歡使用XML模式來定義選項的想法,但我沒有預見到任何複雜的選項。到目前爲止我計劃的所有項目都是單值或同一類型的多個值或鍵/值對。 – Ipsquiggle 2010-01-12 19:37:34
我認爲你是對的。但是如果你的數據庫「獲得」XML,你可能會發現它很有用。 – djna 2010-01-12 19:41:13
我通過Python使用SQLite,似乎沒有此功能。我正在選擇這個答案,因爲這些建議似乎與項目的範圍最接近。 – Ipsquiggle 2010-01-12 20:58:29