我一直担心数据模型在未来变化和向后兼容性方面的一致性。
假设我们有一个周期性的应用程序(每年)和一个模型,其中一部分数据,这些数据是按层次结构组织的,并且这个层次结构可能在周期之间发生变化,也可能不会发生变化,那么有一些实现,在每个周期中,它只是被分成不同的数据库,但是,数据在周期之间的互操作是个问题,因为我们可以在每个周期中保持这个层次结构及其变化,而不必在每个周期中存储整个层次结构,因为它不一定改变得更少,但有这种可能性。
例子:
学术信息系统,我们在每个知识领域都有一个学科层次
数学
代数
三角学
算术
社会科学
历史
地理
现在基于这个等级持有保持每个学生在2010年期间的资格,现在在2011年之后的时期,等级改变
数学
三角学
算术
代数/*这里有个变化*/
代数
社会科学
历史
地理

数学
三角学
算术
/*这是其他的变化不再是代数了*/
社会科学
历史
地理
该系统正在工作,并继续保持学生在2011年期间的成绩,现在学生需要其过去的评分期,但层次结构已更改,因为您可以使系统获得以前的层次结构
我怎样才能解决这个问题?

最佳答案

这里有一个建模建议:主题实体应该具有属性
主题id(唯一主键)
名称
上级主题id(如果为空,则在层次结构中有一个顶级节点)
生存期(从年到年;当到年为空时,它是当前活动的主题)
相似名字的主题不应该有重叠的生命周期。每次更改层次结构中的活动主题时,请复制该主题并相应地更改生存期字段只要层次结构没有变化,数据就没有任何变化。
要与您的示例相匹配:

subject Mathematics, lifetime: from_year=2010, to_year=NULL
    Algebra:  lifetime: from_year=2010, to_year=2010
    Trigonometry: lifetime: from_year=2010, to_year=NULL
    Arithmetic: from_year=2010, to_year=NULL

subject Algebra: lifetime  from_year=2011,to_year=NULL
    Algebra: lifetime  from_year=2011,to_year=NULL

另一个选择是在你的科目中有一个单独的“年”字段,而不是一辈子;这可能是一个简单得多的解决方案,更适合当你想为每个科目每年存储不同的成绩时的情况。但这意味着存储每个周期的整个层次结构,您排除的是什么。

关于algorithm - 如何为 future 创建持久数据模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7432366/

10-14 13:50
查看更多