我们使用第三方产品来管理我们的体育中心会员资格。我们有几种会员类型(如初级,学生,工作人员,社区)和若干成员身份(例如年度,活动,非活动,暂停)。不幸的是,该产品只记录了会员的当前会员类型和状态。我希望能够跟踪我们会员的类型和状态随时间变化的方式。数据库设计能够保存一个随时间变化的信息吗?
目前我们可以访问产品的数据库设计。它运行在SQL Server上,我们会定期对产品的表运行我们自己的SQL查询来生成我们自己的表。然后,我们将我们的表格链接到Excel中的数据透视表以生成图表。所以我们熟悉数据库设计和SQL。但是,我们坚持如何最好地解决这个问题。
该产品记录会员的会员购买及其开始和到期日期。因此,我们可以通过这些数据回溯,以确定任何时间点的会员类型和状态。例如,如果他们在2007年1月1日购买了初级会员,并于2007年12月31日到期,然后他们在2008年6月1日购买了学生会员资格,我们可以看到他们的状态从活跃状态变为非活跃状态(在Jan 2008年1月1日和2008年6月1日),他们的类型从初中到初中(2008年6月1日)。
本质上,我们希望将成员的类型和状态属性变成temporal properties或effectivities a-la Fowler(或其他随时间变化的事物)。
我们的问题(终于:) - 鉴于以上:你会推荐什么样的数据库表的设计,我们使用持有该会员信息。我想它会有一个MemberID列,所以我们可以键入现有的成员表。它还需要存储一个成员的状态和类型以及他们的日期范围。我们希望能够轻松地针对此表编写查询以确定在给定时间点我们拥有的每种类型和状态的成员数量。
更新2009-08-25:去过扯到并没有机会尝试提出的解决方案呢。希望尽快这样做,并根据结果选择答案。
时间序列数据模型的相关问题:http://stackoverflow.com/questions/4083464/design-database-relating-to-time-attribute/ – Vadzim 2015-05-22 16:35:32