对于个人项目,我想记录一系列不相关的事件,以稍后收集简单的统计数据。每个事件都可以[广泛]具有与之相关的不同数据。针对事件流的简单数据库设计
我在寻找一些关于如何构建这个的建议。由于这是一个小项目,我的主要目标是:
- 设置的难易
- 易于使用(即不怪联接)
性能不是关键,我会是只有用户。
为了给你什么,我瞄准的想法,这是我目前的计划:
表: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