Вероятно, существует бесконечное количество способов сделать это.По моему опыту, наличие отдельной таблицы для каждого типа действий увеличит сложность и затруднит добавление новых действий.Возможно, вы захотите рассмотреть что-то вроде следующего:
LogicTable
* OutputID
* Description
OutputTable <== a pure relational table
* OutputID
* LogicID
* ActionID
* ActionTypeID
* Sequence
ActionTypeTable
* ActionTypeID
* Description
Actions
* ActionID - primary key
* Sequence - not null
-- other columns as necessary to support the various
actions, e.g. Command and WriteVariable
Если некоторые из столбцов в действиях не используются для каждого отдельного типа действия, это нормально - несколько пустых полей не повредят ничего,В качестве альтернативы вы могли бы иметь более общий дизайн, например
Actions
* ActionID - primary key
* Sequence - not null
ActionArguments
* ActionID - foreign key to Actions, part of primary key
* ArgumentName - not NULL, part of primary key
* ArgumentValue
Всего пара идей.
Делитесь и наслаждайтесь.