Sle*_*ter 5 mysql database-design
我有一张10万名USERS的名单(姓名,年龄,性别,电话,公司,街道,城市,州,国家,邮政编码等).
我还有一个向用户提供的数千个促销表.现在,对于每个促销,我需要添加一个规则,该规则定义它适用于哪个用户子集.
例如,规则可能是:所有用户的邮政编码为10000到19999.
另一条规则可能是:所有女性用户都不在美国
然而,第三条规则可能是:生活在DC,MD或VA的18岁以上的用户.等等
现在给定一个特定的用户,我希望(有效!)找出适用于该用户的PROMOTIONS.
鉴于我希望能够快速找到给定特定用户的匹配促销,这些规则的建模策略是什么?
这是一种方法。
如果您可以将每个规则分解为简单的比较,则可以以适用于所有情况的方式存储它。您最终得到的是一系列规则项,包括字段、值和比较(例如等于、不等于等)。它们还需要属于实际规则(您可以命名),该规则将在另一个表中列出。
现在事情变得复杂了。每个规则项也是一个级别。这样您就可以进行 AND 和 OR 比较,因为它们需要层次结构。我之前完成此操作的方法是偶数级别 AND 和奇数级别 OR。这意味着对于规则来说必须为真的两个项目都将处于级别 0,即它们必须都验证。对于具有一个强制条件和另外两个条件(其中任一条件均可成立)的规则,即 1 AND (2 OR 3),您可以将强制规则置于 0 级,将另外两个置于 1 级。
这种方法的优点是,组装 SQL 过滤器的代码可以正确嵌套,因为它必须正确使用 AND/OR 模式。它还使得构建规则编辑器成为可能。
但是,与所有其他解决方案一样,此解决方案仍然需要将所有规则依次应用于您的用户集,以查找哪些规则允许您感兴趣的用户。