我们使用第三方产品来管理我们的体育中心会员资格。我们有多种会员类型(例如初级、学生、员工、社区)和多种会员状态(例如年度、活跃、非活跃、暂停)。不幸的是,该产品仅记录会员当前的会员类型和状态。我希望能够跟踪我们成员的类型和状态随时间变化的方式。
目前,我们已经接触到了产品的数据库设计。它在 SQL Server 上运行,我们定期对产品的表运行我们自己的 SQL 查询以生成我们自己的表。然后,我们将表格链接到 Excel 中的数据透视表以生成图表。所以我们熟悉数据库设计和SQL。然而,我们被困在如何最好地解决这个问题上。
该产品记录会员的会员购买及其开始和到期日期。因此,我们可以通过该数据进行回溯,以确定成员在任何时间点的类型和状态。例如,如果他们在 2007 年 1 月 1 日购买了初级会员,并在 2007 年 12 月 31 日到期,然后他们在 2008 年 6 月 1 日购买了学生会员,我们可以看到他们的状态从活跃到不活跃再到活跃(1 月2008 年 1 月 1 日和 2008 年 6 月 1 日),他们的类型从初级到学生(2008 年 6 月 1 日)。
本质上,我们希望将成员的类型和状态属性转换为时间属性或有效性a-la Fowler(或其他随时间变化的东西)。
我们的问题(最后:) - 鉴于上述情况:您建议我们使用哪种数据库表设计来保存此成员信息。我想它会有一个 MemberID 列,所以我们可以键入现有的 Member 表。它还需要存储成员的状态和类型以及他们被保留的日期范围。我们希望能够轻松地针对此表编写查询,以确定在给定时间点我们拥有的每种类型和状态的成员数量。
2009 年 8 月 25 日更新:已被搁置,还没有机会尝试提出的解决方案。希望尽快这样做,并将根据结果选择答案。