Database design 我应该如何存储用户定义的选择规则?
我需要构建一个应用程序(PHP/MySQL,但我认为这并不重要),让用户输入一组与特定产品匹配的规则。这应该看起来像一个表单,允许选择一个键并输入其值,但支持使用OR语句分组。例如,用户应该能够输入以下产品规则:Database design 我应该如何存储用户定义的选择规则?,database-design,language-agnostic,user-experience,Database Design,Language Agnostic,User Experience,我需要构建一个应用程序(PHP/MySQL,但我认为这并不重要),让用户输入一组与特定产品匹配的规则。这应该看起来像一个表单,允许选择一个键并输入其值,但支持使用OR语句分组。例如,用户应该能够输入以下产品规则:(价格超过100,红色)或(价格超过50,绿色),重量超过2等等。问题是,我不确定该如何将其存储在数据库中,也不确定如何为此编写UI。有没有共同的方法来解决这样的问题 谢谢我想了好一阵子了。以下是我得出的结论: 有一个规则表: rule_id int, field1 varchar, r
(价格超过100,红色)或(价格超过50,绿色)
,重量超过2
等等。问题是,我不确定该如何将其存储在数据库中,也不确定如何为此编写UI。有没有共同的方法来解决这样的问题
谢谢我想了好一阵子了。以下是我得出的结论: 有一个规则表:
rule_id int,
field1 varchar,
rule1_id int,
operand varchar, --whatever, can be int, if operand is described in other table.
field2 varchar,
rule2_id int
您的示例规则可以用以下方式表示:
rule_id field1 rule1_id operand field2 rule2_id
1 'price' null '>' '100' null
2 'color' null '=' 'red' null
3 null 1 'and' null 2
4 'price' null '>' '50' null
5 'color' null '=' 'green' null
6 null 4 'and' null 5
7 null 3 'or' null 6
然后,您将引用
规则\u id
=7的复杂规则。要解析该规则,应递归解析每个其他规则<代码>字段可以是数据库中的字段,也可以是操作数。然后,您将能够从保存的数据中形成SQL查询。它也很容易加载并显示到控件中,因此用户可以使用组合框(HTML
等)编辑此规则。我已经考虑了一段时间了。以下是我得出的结论:
有一个规则表:
rule_id int,
field1 varchar,
rule1_id int,
operand varchar, --whatever, can be int, if operand is described in other table.
field2 varchar,
rule2_id int
您的示例规则可以用以下方式表示:
rule_id field1 rule1_id operand field2 rule2_id
1 'price' null '>' '100' null
2 'color' null '=' 'red' null
3 null 1 'and' null 2
4 'price' null '>' '50' null
5 'color' null '=' 'green' null
6 null 4 'and' null 5
7 null 3 'or' null 6
然后,您将引用规则\u id
=7的复杂规则。要解析该规则,应递归解析每个其他规则<代码>字段可以是数据库中的字段,也可以是操作数。然后,您将能够从保存的数据中形成SQL查询。它也很容易加载并显示到控件中,因此用户可以使用组合框(HTML
)等编辑此规则