【问题标题】:How to deal with historical tables in ORM?ORM中如何处理历史表?
【发布时间】:2013-09-24 07:38:43
【问题描述】:

我在不同的表中有一个历史数据,按年份划分:mydata_2008、mydata_2009、mydata_2010、mydata_2011、mydata_2012 和 mydata 表中的实时数据。

我只想有一个 mydata.cfc 模型,它首先在 mydata 表中查找,如果其中没有数据,则继续在历史表中搜索。

ColdFusion ORM (hibernate) 可以做到这一点吗?

【问题讨论】:

  • Scott Stroz 回答的第二段有很好的建议。你应该遵循它。
  • 大卫,您没有指定您使用的数据库系统。该信息可能与哪些选项有意义...

标签: sql-server hibernate orm coldfusion


【解决方案1】:

在 ColdFusion 中,一个 ORM 对象只能与单个表相关联。但是,当当前年份不存在数据时,您可以覆盖任何给定属性的 getter 以搜索其他表。这并不理想,因为您每年都需要更新与对象相关的表。

我建议您不要根据年份拆分数据并将其全部保存在一个表中,而是添加一个year 列,以便您可以区分不同年份的数据。这将使管理 ORM 对象和获取“历史”数据变得更加容易。

【讨论】:

  • 添加年份列和年份索引——拆分表的原因可能是性能;所以确保有一个合适的索引对于不降低它很重要。
  • 好点。当我开始准备答案时,我曾想过要提一个索引,结果忘记了。
  • 或者,如果数据有日期字段,您可能不需要年份字段。
  • 嗯,很想知道 year != year(now)date >= now-dayofyear(now) 之间是否存在显着差异 - 感觉不等于应该更简单/更快,但我没有什么可以支持的跟上,我想这可能取决于 DBMS。
  • 感谢斯科特的回复。 DB 是一个旧的 SQLServer 数据库,所以目前我无法将表合并为一个,所以我必须采用覆盖吸气剂的方式。我怎样才能以干净的方式做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多