首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以高效的方式存储关系对象的修订

以高效的方式存储关系对象的修订
EN

Stack Overflow用户
提问于 2009-11-19 19:35:14
回答 2查看 801关注 0票数 2

我不确定这种类型的问题以前是否已经得到了回答。在我的数据库中,我有一个产品表和规格表。每个产品可以有多个规格。在这里,我需要在数据库中存储每个产品的修订,以便稍后查询它们的历史目的。

因此,我需要一种有效的方法来存储产品与规范的关系,每次用户对这些关系进行更改时。此外,数据量可能会变得非常大。例如,假设数据库中有100000个产品:每个产品可以有30个规格,并且每个产品上至少有20个修订版。因此,通过将所有数据存储在单个表中,数据量变得非常大。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-19 19:51:55

如果这纯粹是为了“存档”的目的,那么也许一个单独的修订表更好。

但是,如果您需要将以前的修订版本与当前修订版本同等对待(例如,如果您想让用户能够将产品恢复到以前的修订版本),那么最好保留单个products表,而不是在表之间复制数据。如果您担心性能,这就是索引的用途。

您可以为产品表创建复合主键,例如PRIMARY KEY (product_id, revision)。也许可以通过存储过程来查找当前版本-通过选择具有特定product_id-will的最高revision的行是有用的。

票数 3
EN

Stack Overflow用户

发布于 2009-11-19 19:44:25

我建议有一个表,当前表的精确副本,带有HistoryDate列,并将修订存储在这个表中。您可以对所有3个表执行此操作。

通过将修订与主表分开,在查询主表时不会导致任何性能损失。

您还可以考虑保留一条记录,以指示更改数据的用户。

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

https://stackoverflow.com/questions/1762694

复制
相关文章

相似问题

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