admin

有效存储关系对象的修订

sql

我不确定这种问题是否已经回答过。在我的数据库中,有一个产品表和规格表。每个产品可以有多个规格。在这里,我需要将每个产品的修订版本存储在数据库中,以便以后出于历史记录的目的对其进行查询。

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

有什么建议?


阅读 244

收藏
2021-07-01

共1个答案

admin

如果这纯粹是出于“存档”目的,那么可能会有一个单独的修订表更好。

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

您可以为产品表创建复合主键,例如PRIMARY KEY (product_id, revision)。也许找到一个用于存储当前修订版本的存储过程(通过revision为特定版本选择最高的行)product_id会很有用。

2021-07-01