Hallo Michl,
dieses Standardproblem kennen Informatiker als unäre Relation, Stückliste oder bill-of-materials (BOM). Die Lösung unter Verwendung eines RDBMS ist eine selbst-rekursive Tabelle. Dabei werden deine Daten in einer Gen-Spec-Beziehung modelliert. Das gemeinsame von Controller, Hub, Port und Device kommt in die Tabelle GEN, dazu der Schlüssel ID und der Fremdschlüssel GEN_ID, welcher auf den übergeordneten Eintrag verweist. Zusätzlich findet man oft noch ein Ordnungskriterium, welches die Ordnung der Unterknoten für die Anzeige definiert.
Eine minimale Master-Tabelle sieht dann etwa so aus:
SQL-Code:
CREATE TABLE GEN (
ID INT AUTO_INCREMENT,
GEN_ID INT,
SEQ INT NOT NULL,
NAME VARCHAR(50) NOT NULL,
KIND INT NOT NULL
)
Der für die Spec-Tabellen nötige Diskriminator ist das Feld KIND - Controller(1), Hub(2), Port(3), Device(4) wären möglich. Besonderes Augenmerk gebührt dem Feld SEQ. Dazu gibt es bei Bedarf eine Lösung über eine Stored Procedure.
Grüße vom marabu