in reply to OT: Design question
Sounds like a normalisation problem. Many-to-many relationships between widgets, attributes and events?
So you need a Widget-Attribute table and an Attribute-Event table.
To add a new Widget, you add one entry into the W-A table for each attribute the widget has.
Each Attribute has an entry in the A-E table for each Event that must be triggered by that Attribute.
For source control, you add a revision number to each entry in each table. You have a single entry table from which you pick up the current production level revision and this is used in your where clauses
select... from Widget-Attribute as wa, Production as p where .... and wa.revision = p.revision;
This allows you to add new mappings to either table with a higher-than-production revision level, and test them before updating the Production.revision value to cause the production code to use them. Old mapping can be retained as long as required and removed when not.
|
|---|