xrafi1989x
Newbie
- Registriert
- Sep. 2017
- Beiträge
- 2
Hallo Leute,
ich habe ein grundsätzliches Problem beim Design meiner Datenbank für eine Automatisierungsaufgabe. Ich versuche mal mein Problem ausführlich zu schildern.
Meine Anlage besteht aus beliebig vielen "Modulen".
Tab_Module [Id (PK), ModuleTypeId (FK), Name (Attr) ]
Ein Modul gehört zu einem bestimmtem Modultypen. Es können mehrere Module eines Modultypes existieren.
Tab_ModuleType [Id (PK), Name (Attr)]
Für einen ModulTypen existieren"n" viele ProzessCommandos
Tab_Commands [Id (PK), ModuleTypeId (PK -> FK aus ModuleType), Command (Attr)]
Die Anlage wird mittels Rezepten gesteuert. Ein Rezept konfiguriert jedes Modul in der Anlage
Tab_Recipe [Id (PK), Name (Attr) ..... ]
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK -> FK aus Modul), ??Command??]
Mein Problem befindet sich nun in der Tab_Configuartion bei den Fragezeichen. Einerseits möchte ich dem User ermöglichen aus einer Liste von Commands für einen bestimmten ModulTypen zu wählen -> deswegen sind Commands mit ModuleType verknüpft. Commands ist nun ein zusammengesetzer Schlüssel aus ModuleTypeID und CommandID).
In der Tab_Configuration möchte ich jedoch nicht einen Modultypen konfigurieren, sondern ein bestimmtes Modul).
Wenn ich jetzt also die Tabelle wie folgt aufbaue:
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), ModuleTypeID(FK) + CommandId (FK)],
habe ich eine transitive Abhängigkeit zwischen ModuleID und ModuleTypeID.
Eine Andere Variante wäre
Tab_Command [Id (PK), Command (Attr)]
und eine Zuordnungstabelle
Tab_ModuleCommand [CommandID (PK), ModuleTypeID (FK)]
Dann in der Config Tabelle:
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), CommandId (FK)]
Hier allerdings das Problem, wenn sich die ModuleID ändert, ist evtl die CommandID ungültig - bzw nicht erlaubt/gewollt.
Eine 3. Variante wäre: ich ordne die möglichen Commands direkt dem Modul zu
Tab_ModuleCommand [CommandID (PK), ModuleId (FK) ]
und verknüpfe diese mit der Config Tabelle
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), CommandId (FK)] (letztere beide Schlüssel aus ModuleCommand)
Da habe ich allerdings wieder das Problem: Wenn ich ein neues Modul vom Typen x habe, muss ich für die entsprechende ModuleID die Tab_ModuleCommand ausfüllen.
Ich habe jetzt echt keine Idee wie ich mit dem Problem am besten umgehen kann. Bin für jede Hilfe dankbar!
Schon mal dickes Danke
Raphael
ich habe ein grundsätzliches Problem beim Design meiner Datenbank für eine Automatisierungsaufgabe. Ich versuche mal mein Problem ausführlich zu schildern.
Meine Anlage besteht aus beliebig vielen "Modulen".
Tab_Module [Id (PK), ModuleTypeId (FK), Name (Attr) ]
Ein Modul gehört zu einem bestimmtem Modultypen. Es können mehrere Module eines Modultypes existieren.
Tab_ModuleType [Id (PK), Name (Attr)]
Für einen ModulTypen existieren"n" viele ProzessCommandos
Tab_Commands [Id (PK), ModuleTypeId (PK -> FK aus ModuleType), Command (Attr)]
Die Anlage wird mittels Rezepten gesteuert. Ein Rezept konfiguriert jedes Modul in der Anlage
Tab_Recipe [Id (PK), Name (Attr) ..... ]
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK -> FK aus Modul), ??Command??]
Mein Problem befindet sich nun in der Tab_Configuartion bei den Fragezeichen. Einerseits möchte ich dem User ermöglichen aus einer Liste von Commands für einen bestimmten ModulTypen zu wählen -> deswegen sind Commands mit ModuleType verknüpft. Commands ist nun ein zusammengesetzer Schlüssel aus ModuleTypeID und CommandID).
In der Tab_Configuration möchte ich jedoch nicht einen Modultypen konfigurieren, sondern ein bestimmtes Modul).
Wenn ich jetzt also die Tabelle wie folgt aufbaue:
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), ModuleTypeID(FK) + CommandId (FK)],
habe ich eine transitive Abhängigkeit zwischen ModuleID und ModuleTypeID.
Eine Andere Variante wäre
Tab_Command [Id (PK), Command (Attr)]
und eine Zuordnungstabelle
Tab_ModuleCommand [CommandID (PK), ModuleTypeID (FK)]
Dann in der Config Tabelle:
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), CommandId (FK)]
Hier allerdings das Problem, wenn sich die ModuleID ändert, ist evtl die CommandID ungültig - bzw nicht erlaubt/gewollt.
Eine 3. Variante wäre: ich ordne die möglichen Commands direkt dem Modul zu
Tab_ModuleCommand [CommandID (PK), ModuleId (FK) ]
und verknüpfe diese mit der Config Tabelle
Tab_Configuration [RecipeID (PK -> FK Recipe), ModuleId (PK), CommandId (FK)] (letztere beide Schlüssel aus ModuleCommand)
Da habe ich allerdings wieder das Problem: Wenn ich ein neues Modul vom Typen x habe, muss ich für die entsprechende ModuleID die Tab_ModuleCommand ausfüllen.
Ich habe jetzt echt keine Idee wie ich mit dem Problem am besten umgehen kann. Bin für jede Hilfe dankbar!
Schon mal dickes Danke
Raphael