小编Use*_*293的帖子

存储完整/部分表的历史记录

我正在使用 Django 和 MySQL (InnoDB) 构建一个 Web 应用程序,目前正在考虑如何管理各种表上的历史更改。

我想知道在那些没有改变的行上存储大量带有 NULLS 的行是否有效。例如,这是我的产品表的简单表示;

在此处输入图片说明

products_history表的所​​有字段(FK和非逻辑行除外)都设置为NULL,而普通products表的NOT NULL所有字段都设置为,除了description

现在我想到的是推送实际产品行的副本并将更改推送到products_history表中。所以假设我有这一行products

{600, CURRENT_TIMESTAMP, 2, 'BS001', NULL, 49.95}
Run Code Online (Sandbox Code Playgroud)

并将价格更改为48.50。所以我会推送哪些值发生了变化,在这种情况下base_price,将更改行添加到历史表中;

{600, THE_date_created_FROM_PRODUCT, NULL, NULL, 49.95}
{600, CURRENT_TIMESTAMP, NULL, NULL, 48.50}
Run Code Online (Sandbox Code Playgroud)

因此,在第一次修改产品时,它将获得 2 行,之后每次修改只有一个新的修改字段)。之后它将product使用新的base_price.

这种方法对我有用并且非常有效(因为只有第一次实际编辑产品时,历史表才会填充产品数据),但我想知道通过存储所有这些 NULL 值是否有效。一段时间后它会影响我的表现还是影响不会那么大?

除此以外; 我很好奇在 MySQL 中这样做的好方法,甚至是 Django ORM 特定的方法。

mysql innodb

6
推荐指数
1
解决办法
1343
查看次数

标签 统计

innodb ×1

mysql ×1