首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为将来建立持久的数据模型?

如何为将来建立持久的数据模型?
EN

Stack Overflow用户
提问于 2011-09-15 14:18:53
回答 2查看 186关注 0票数 0

我始终关注数据模型在未来更改和向后兼容性方面的一致性。

假设我们有一个通过周期(每年)循环的应用程序,并且有一个模型,其中一部分数据是按层次结构组织的,而且这个层次结构在各个周期之间可能变化,也可能不变化,在实现中,它只是在每个周期中分离成一个不同的数据库,但是是周期间数据互操作的问题,因为我们可以在每个周期中保持这个层次结构及其变化,不需要存储整个层次结构的每个周期,因为它不一定会改变更少的改变,但这是有可能的。

示例:

学术信息系统,我们在每个知识领域都有一个学科层次结构。

  • Algebra
  • Trigonometry
  • Arithmetic

  • 数学

  • History
  • Geography

  • 社会科学

现在,基于这一等级持有保持每个学生的资格在2010年期间,现在在2011年之后的时期,等级变化。

  • Trigonometry
  • Arithmetic

  • 数学

  • Algebra

  • 代数/*这里有一个变化*/

  • History
  • Geography

  • 社会科学

  • Mathematics

代码语言:javascript
复制
- Trigonometry
- Arithmetic / \* here's other change no more algebra \* /

  • 社会科学

代码语言:javascript
复制
- History
- Geography

该系统正在工作,并继续保持学生在2011年期间的成绩,现在一个学生需要其过去的评等期,但是等级已经改变了,因为您可以得到以前的等级制度。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-16 08:30:03

下面是一个建模建议:主题实体应该具有属性

key)

  • name

  • superordinate_subject_id
  • subject_id (如果为空,则在hierarchy)
  • lifetime (from_year,to_year;当to_year为空时,它是当前活动的主题)中有一个顶级节点)

名字相似的对象不应该有重叠的生命周期。每次更改层次结构中的活动主题时,都要复制主题并相应地更改生存期字段。只要层次结构不改变,数据中就没有什么可更改的。

要匹配您的示例:

代码语言:javascript
复制
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

另一种选择是在您的科目中有一个“年度”字段,而不是终生;这可能是一个简单得多的解决方案,更适合于这样的情况:您希望为每个科目每年存储不同的年级。但这意味着每一个周期都要存储整个层次结构,你所排除的是什么。

票数 1
EN

Stack Overflow用户

发布于 2011-09-15 18:06:35

不要混淆每一个主体的身份及其在世袭中的地位。

如果我在2010年获得了代数方面的B+,那么这些数据看起来如下:

代码语言:javascript
复制
ClassID  StudentID   Grade
100      100001      B+

当类别发生变化时,“代数”类的ID不应该更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7432366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档