sql – 数据库设计用于保存随时间变化的人的信息?

前端之家收集整理的这篇文章主要介绍了sql – 数据库设计用于保存随时间变化的人的信息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们使用第三方产品来管理我们的体育中心会员资格.我们有几种会员类型(例如,初级,学生,员工,社区)和几种会员身份(例如,年度,活动,非活动,暂停).不幸的是,该产品仅记录会员当前的会员类型和状态.我希望能够跟踪我们的会员类型和状态随时间变化的方式.

目前,我们可以访问产品的数据库设计.它在sql Server上运行,我们定期针对产品表运行自己的SQL查询,以生成我们自己的表.然后,我们将表格链接到Excel中的数据透视表以生成图表.所以我们熟悉数据库设计和sql.但是,我们仍然坚持如何最好地解决这个问题.

该产品记录会员的会员购买情况以及他们的开始和到期日期.因此,我们可以回过头来确定会员在任何时间点的类型和状态.例如,如果他们在2007年1月1日购买了初级会员并且在2007年12月31日到期,然后他们在2008年6月1日购买了学生会员资格,我们可以看到他们的状态从活动状态变为非活动状态到活动状态(1月1日)分别于2008年1月和2008年6月1日),他们的类型从大三到学生(2008年6月1日).

基本上我们希望将成员的类型和状态属性转换为temporal propertieseffectivities a-la Fowler(或其他随时间变化的事物).

我们的问题(最后:) – 鉴于上述情况:您建议我们使用哪种数据库表设计来保存此成员信息.我想它会有一个MemberID列,所以我们可以键入现有的Member表.它还需要存储成员的状态和类型以及他们所持有的日期范围.我们希望能够轻松地针对此表编写查询,以确定在给定时间点我们拥有的每种类型和状态的成员数量.

更新2009-08-25:已被侧面跟踪,尚未有机会尝试提出的解决方案.希望尽快这样做,并根据结果选择答案.

解决方法

鉴于您的系统已经编写并且到位,解决此问题的最简单方法(以及影响现有数据库/代码的最简单方法)是添加包含MemberID,status,type和date列的成员资格历史记录表.然后将UPDATE和INSERT触发器添加到主成员表.当这些触发器触发时,您将成员的新值(以及状态更改的日期)写入成员历史记录表中.然后,您可以只查询此表以获取每个成员的历史记录.

这实现起来相当简单,根本不会影响现有系统.

我会为你写这个免费会员资格. 原文链接:https://www.f2er.com/mssql/78937.html

猜你在找的MsSQL相关文章