da_user wrote
Gerade schnell gegoogelt: mit ID war das gemeint, was SQL anscheinend unter "Primary Key" versteht, also eine ID die für jeden Eintrag eindeutig ist und somit die Zuordnung ermöglicht.
Für die Identifizierung auf der Werkbank würde ich mir noch ein Feld mit einer "Human-Readable-ID" hinzufügen und wahrscheinlich noch eines für die Seriennummer mit zig Stellen.
Das hast Du rückwärts dargestellt. Zuerst findest Du ein Merkmal, welches im richtigen Leben einen Gegenstand ein-eindeutig identifizieren kann. Die Human Readable ID ("HRI") wäre so etwas, wenn sie unzerstörbar mit der Baugruppe verbunden werden kann, also vielleicht mit einem unablösbaren Inventarkleber. Unter gewissen Bedingungen wäre auch die volle Seriennummer nicht schlecht, nämlich wenn sich diese schon in den ersten Stellen unterschieden.
Dieses Merkmal würde von Datenbankleuten als "Primär-Attribut" bezeichnet und wäre der beste Kandidat für ein Schlüsselfeld, welches dann in der relationalen Datenbank als "Primärschlüssel" definiert wird.
Unter den oben beschriebenen Voraussetzungen (mit Deiner Ergänzung betreffend die Kombination der Baugruppen) liesse sich ein Design wie folgt vorstellen:
Tabelle "Antrieb" mit Feldern: **AntriebId**, LMSId, KarteID, Marke, Typ, Kaufdatum, Kaufpreis, Farbe, Inbetriebnahme, Ausserbetriebsetzung (als Beispiele)
Tabelle "LMS" mit Feldern: **LMSId**, Marke, Kaufdatum, Kaufpreis, Inbetriebnahme,Ausserbetriebsetzung (als Beispiele)
Tabelle "Buskarte" mit Feldern: **KarteId** ,Marke, Kaufdatum, Kaufpreis, Inbetriebnahme, Ausserbetriebsetzung (als Beispiele)
Felder zwischen ** sind die ID-Felder der jeweiligen Tabelle.
Diese drei Tabellen definierst Du als Page-Schema. Die Felder LMSId und KarteID in der Tabelle Antrieb beziehen sich auf Seiten im WIKI. Somit "weiss" ein Antrieb immer, welches LMS und welche Buskarte dort installiert sind. Die Anordnung lässt sich auch umdrehen, so dass ein LMS immer weiss, in welchem Antrieb es verbaut ist und welche Karte es enthält. Du solltest dich aber entscheiden, ob diese Zuordnung bei Antrieb, LMS oder gar Buskarte dargestellt werden soll. Wenn sie in mehr als einer Tabelle festgehalten ist, werden sich die Einträge früher oder später widersprechen (eher früher).
Du brauchst dann drei Namensräume, je einen für Antriebe, LMS und Buskarten. Die Namen der Seiten für Antriebe, LMS und Karten sind die IDs dieser Gegenstände, also die HRI oder die Seriennummer. Jeder Antrieb, LMS und Karte muss dann eine eigene Seite in seinem Namensraum haben. Diese Seite kann dann jeweils als einfache Wiki-Tabelle oder gar als Unordered List die Events darstellen, sofern die Events nicht nach irgendwelchen Attributen durchsucht werden müssen.
Haar in der Suppe: die Seite eines Antriebs, LMS oder Karte kann nicht leer sein, da sie sonst vom Wiki gelöscht wird und damit auch der Eintrag in der Datenbank.
Weiteres Haar in der Suppe: wenn bei einem LMS oder einer Karte gleich sichtbar sein soll, wo es verbaut ist, muss jede Seite eine Abfrage (ein Lookup) enthalten. Das lässt sich m.W. nicht automatisieren. Es lässt sich aber vereinfachen, indem die Abfrage auf einer Seite ausserhalb der Namensräume einmal hinterlegt und mit "include" auf jeder Seite einer Baugruppe eingefügt wird. Damit kann die Abfrage später einfach angepasst werden.
Fragen?