【问题标题】:Design pattern of activity history storing活动历史存储设计模式
【发布时间】:2011-11-04 09:41:21
【问题描述】:

学习案例:

如果我有例如库对象。 图书馆里有书。 每本书都有共同的信息,例如名称、日期……以及其他一些依赖项,例如 Autor、Reseller、……

我有 Person 对象。 如果Person读了这本书,那我想再创历史。

现在的问题是,什么更好:

1) 使用 Book 实体及其依赖项的所有数据在历史记录中创建静态记录(在这种情况下,如果 Book 将被更改,则历史记录将不是实际的)

2) 对 Book 对象的依赖关系(在这种情况下,历史将是真实的,但在每个请求中我都必须查看所有依赖关系)

我想这本书会被改掉

历史记录将显示在个人资料中。 (此假设响应将回答 1

但应该是基于实际图书数据的历史记录吗?或者历史应该有创建历史的信息表单日期?

Book 和 Person 只是示例

【问题讨论】:

  • 您应该向一本书添加一个名为 ID 的属性。然后只需存储该人阅读的书籍的 ID。如果您想获取书籍详细信息,可以通过 ID 获取。例如,您可以有一个书籍对象字典,其中键显然是 ID;)另一种方法是与存储有关人员和书籍信息的历史对象建立多对多关系。更多信息:tomjewett.com/dbdesign/dbdesign.php?page=manymany.php
  • @neurotix :) 谢谢你的回答,但当然所有实体都有自己的 ID,但这不是问题。我知道解决方案,但我想知道什么更好,什么时候更好。阅读我的帖子中的第 1) 和 2) 点

标签: c# sql design-patterns android-activity history


【解决方案1】:

现在的问题是,什么更好:

1) 使用 Book 实体的所有数据在历史记录中创建静态记录和 他的依赖项(在这种情况下,如果 Book 将被更改,那么 历史不会是真实的)

2) 存储对 Book 对象的依赖(在这种情况下,历史记录将是 实际,但在每个请求中我都必须查看所有依赖项)

不确定您在这里所说的“实际”是什么意思,但更好的选择是适合您需要的那个。

使用选项 1,当您稍后在个人资料中显示历史记录时,它将包含有关在创建历史记录时当前的图书的信息。使用选项 2,个人资料将显示在查看个人资料时当前图书的相关信息。

您想在个人资料中看到哪些内容?

如果实际上您希望始终显示创建历史记录时的最新信息,这就是构建具有时间维度的数据仓库的原因之一。如果这是您需要的,并且您需要处理大量历史数据,您可能需要考虑构建一个与事务数据库分开的数据仓库。

有关数据仓库的一些信息,this IBM Redbook article 可能有用。

【讨论】:

  • Thx 这听起来很有用,有任何用于构建具有时间维度的数据仓库的示例或链接吗?
  • redbooks.ibm.com/redbooks/SG247138/wwhelp/wwhimpl/js/html/… 上的 IBM 红皮书文章可能会有用。
  • 它对我有用,但我已将其移至答案并链接到更高级别,该级别提供此 html 格式或 pdf 版本之间的选择。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多