在检索订单记录时,忽略对产品描述的更改



标题有点难以理解,所以解释如下:

我正在构建一个处理零售交易的系统。意义——购买。我有一个产品数据库,其中每个产品都有一个ID, POS系统也知道这个ID。当客户进行购买时,数据被发送到后端进行解析,并被保存。现在一切都很好,直到产品名称有变化,因为我的客户想看到产品的名称,因为它是当时购买的。

我如何保存这些数据,同时还保持一个良好的,格式正常的数据库?

我能想到的解决方案是:

  • 去标准化,我们将传入数据与数据库中的信息相关联,然后仅保存最终文本值,而不是id。
  • 版本管理,我们保留每个产品的多个版本,并保存交易与产品版本的id,当它进入。这个的问题是,随着我们零售连锁店的增长,产品的变化越来越多,整个产品的复杂性将大大增加。

对此有什么想法吗?

这就是所谓的慢变维。

你提到的任何一个解决方案都有效。我更喜欢第二种方法,即版本控制。我有一个产品表记录中有effdateenddate。您可以很容易地找到当前记录(where enddate is null)或任何时间点的记录。

第一种方法总是让我觉得更"快速和肮脏",但它也有效。当你有更多的字段和更多的对象要跟踪时,它会变得很麻烦。但总的来说,它确实在性能上更胜一筹。

如果名称必须保持原来的名称,那么最简单、最可靠的方法是将产品名称保存在发票行项目记录中。

当然,您仍然应该使用ProductID链接到产品。

如果你想保存名字变更的历史记录,如果你愿意,你可以在一个单独的表中完成:

ProductNameID
ProductID
Date
Description

并存储带有发票行项的ProductNameID。

最新更新