gpt4 book ai didi

sql - 如何在关系数据库中存储智能列表规则

转载 作者:行者123 更新时间:2023-12-05 01:28:32 26 4
gpt4 key购买 nike

我正在构建的系统具有智能组。我所说的智能组是指根据这些规则自动更新的组:

  1. 包括与给定客户关联的所有人员。
  2. 包括与给定客户有关联并从事这些职业的所有人员。
  3. 包括一个特定的人(即,通过 ID)

每个智能组都可以组合任意数量的这些规则。因此,例如,特定的智能列表可能具有以下特定规则:

  1. 包括与客户 1 相关的所有人员
  2. 包括与客户 5 相关的所有人员
  3. 包括第 6 个人
  4. 包括所有与客户 10 有关联且职业为 2、6 和 9 的人

这些规则通过“或”运算组合在一起形成组。我正在考虑如何最好地将其存储在数据库中,因为除了支持这些规则外,我希望将来能够轻松添加其他规则。

我想到的解决方案是为每种规则类型创建一个单独的模型。该模型将有一个方法返回一个查询集,该查询集可以与其他规则的查询集相结合,最终得出一个人员列表。我可以看到的一个缺点是每个规则都有自己的数据库表。我应该担心这个吗?也许有更好的方法来存储这些信息?

最佳答案

为什么不使用 Q objects

rule1 = Q(client = 1)
rule2 = Q(client = 5)
rule3 = Q(id = 6)
rule4 = Q(client = 10) & (Q(occupation = 2) | Q(occupation = 6) | Q(occupation = 9))

people = Person.objects.filter(rule1 | rule2 | rule3 | rule4)

然后将他们腌制的字符串存储到数据库中。

rule = rule1 | rule2 | rule3 | rule4
pickled_rule_string = pickle.dumps(rule)
Rule.objects.create(pickled_rule_string=pickled_rule_string)

关于sql - 如何在关系数据库中存储智能列表规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661199/

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