Я работаю над чем-то вроде приложения типа мастера, чтобы позволить пользователям создавать простые «сценарии», которые в основном выполняют действия, основанные на определенных условиях. Сценарии, которые они создают, будут храниться в базе данных, и модификации будут обычным явлением, поэтому какое-то генерирование текста только для пересылки невозможно. Моя программа преобразует эту внутреннюю структуру базы данных в фактический вывод скрипта, который мне нужен, поэтому я буду просто заново генерировать вывод всякий раз, когда они изменяют свой скрипт.
Я ищу несколько советов о хорошей структуре базы данных, чтобы можно было хранить эту информацию. У меня есть одна рабочая на данный момент, но мне просто любопытно, если я пропустил что-то очевидное, что сделало бы ее немного чище , Любые предложения приветствуются.
Чтобы дать более подробную информацию, вот обобщенный пример типа «сценария», который пользователь может создать с помощью выбора условий и действий в графическом интерфейсе:
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>)
, нет необходимости беспокоиться о более сложных условиях.
- , хотя каждое условие может иметь любое количество тестов, к ним всегда будет присоединяться один и тот же логический оператор. То есть, если в условном выражении несколько тестов, они либо всегда соединяются
&&
, либо всегда соединяются ||
, микширование отсутствует.
- Условные выражения могут быть вложены бесконечно, поэтому необходима какая-то иерархическая структура.
- Внутри условных выражений может быть любое количество действий, которые должны выполняться в той же последовательности, в которой они определены. Действия могут быть просто представлены в виде имени функции, нет необходимости беспокоиться о других «типах действий».