gpt4 book ai didi

database-design - 使用散列对相似记录进行分组

转载 作者:行者123 更新时间:2023-12-01 05:44:58 25 4
gpt4 key购买 nike

我在一家履行公司工作,我们必须将许多订单从仓库打包并运送给客户。为了提高效率,我们希望将相同的订单分组并以最佳方式包装这些订单。相同是指具有相同数量的订单行,其中包含相同的 SKU 和相同的订单数量。

为了实现这一点,我正在考虑对每个订单进行哈希处理。然后我们可以按哈希分组以快速查看哪些订单是相同的。

我们正在从 Access 数据库迁移到 PostgreSQL 数据库,并且我们有基于 .NET 的系统用于数据加载和通用订单处理系统,因此我们可以在数据加载期间进行哈希处理,也可以将此任务交给数据库。

我的问题首先是散列应该由数据库管理,可能使用触发器,还是应该使用 View 或其他东西即时创建散列?

其次,最好为每个订单行计算一个散列,然后将它们组合起来以找到用于分组的订单级散列,还是我应该只对订单行表上的所有 CRUD 操作使用触发器,重新计算一个整个订单的单个散列并将值存储在订单表中?

TIA

最佳答案

除非您有限制此的要求,否则您可以将散列放在您感觉最舒服的地方。例如,在 .net 中编码可能比在 SQL 中容易得多。如果数据库中的订单不是直接修改,而是通过所有应用程序使用的数据访问层修改,这是一种可行的方法。然后数据访问层可以管理散列。

即使有散列,您仍然必须检查散列订单是否确实相同。这是因为它很难创建一个完美的散列函数——一个没有冲突的函数,其中所有对象都散列到不同的值,数据的结构可能变化如此之大。

这表明您将需要一个查询(或代码),在给定一组订单的情况下,确定其中哪些实际上是相等的,并将它们分组为等价集。例如。映射到相同哈希码的订单 - 它们真的相等吗?如果您从这里开始,那么此查询还可用于从整个数据库中查找重复订单。它可能不会很快,在这种情况下,您可以通过在插入/更新订单时使用散列来研究提高性能。

关于database-design - 使用散列对相似记录进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2886580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com