我正在开发一个向导类型的应用程序,以允许用户构建简单的“脚本”,这些脚本基本上可以根据特定条件执行操作。他们构建的脚本将存储在数据库中,并且修改将很常见,因此某种只进文本生成不是一种选择。我的程序将此内部数据库结构转换为我需要的实际脚本输出,因此只要他们修改脚本,我就会重新生成输出。
我正在寻找一些关于能够存储这些信息的良好数据库结构的建议。我目前有一个工作,但我只是好奇我是否错过了任何可以使它更清晰的明显内容。任何建议表示赞赏。
为了提供更多细节,下面是用户可以通过在 GUI 中选择条件和操作创建的“脚本”类型的通用示例:
if ($variableA == 100 && $variableB > 25 && $variableC < 10)
{
performAction();
performAnotherAction();
if ($variableC == 0)
{
performYetAnotherAction();
}
else if ($variableC == 1 || $variableC == 2)
{
performEvenMoreActions();
}
}
else
{
performDefaultAction();
}
关于什么是可能的和不可能的一些注释,只是为了清楚:
- “if”条件句可以附加任意数量的“else if”条件句,以及可选的“else”。
- 每个条件可以有任意数量的“测试”(
$variableA == 100
等),但是每个测试都可以被认为是表示为(<variable>,<operator>,<test value>)
,无需担心更复杂的条件。 - 即使每个条件可以有任意数量的测试,它们总是会被同一个布尔运算符连接起来。也就是说,如果条件中有多个测试,它们要么总是由 连接
&&
,要么总是由 连接||
,没有混合。 - 条件可以无限嵌套,因此需要某种层次结构。
- 在条件句中可能有任意数量的动作,它们必须按照它们定义的顺序执行。动作可以简单地表示为函数名称,无需担心任何其他“动作类型”。