Das von Ihnen beschriebene Muster wird häufig als " Teileexplosion " oder " Stückliste " bezeichnet. Es ist Teil des Diagramm- und Baumteils bei der Untersuchung von Datenstrukturen. Der Kern der Lösung besteht darin, zu erkennen, dass jedes "Produkt" aus anderen "Produkten" bestehen kann. Das Design ist dann eine Netzwerkstruktur, in der es eine Product
Tabelle gibt, die für jedes Produkt eine Zeile enthält - unabhängig davon, ob es sich um ein anderes Produkt handelt oder nicht - und dann eine Product Component
Tabelle, die für jedes Produkt eine Zeile enthält, die sich aus anderen Produkten zusammensetzt und jedes entsprechende Produkt, das Bestandteil dieses Produkts ist. In Ihrem Fall hat jedes Produkt einen Preis. Also hättest du so etwas
Product
-----------------------------------
|Name |Price |
-----------------------------------
|Orange |1 |
|Apple |1.20 |
|Fruit Package |3.80 |
-----------------------------------
Product Component
----------------------------------------------------------
|Product |Contains |Quantity|
----------------------------------------------------------
|Fruit Package |Orange |2 |
|Fruit Package |Apple |2 |
----------------------------------------------------------
Dieser Entwurf ist einer einzelnen Tabelle mit einer rekursiven Zuordnung vorzuziehen, da hierdurch zwei Entitätstypen - Knoten und Verknüpfungen - klar voneinander getrennt werden. In unserem Fall sind die Produkte die Knoten und die Produktkomponenten die Verknüpfungen.
Während das Netzwerkdesign eine übliche Struktur ist, ist die Abfrage problematisch, da es sich bei vollständiger Ausfüllung um eine rekursive Struktur unterschiedlicher Tiefe handelt. Industrielle Stärke DBMS wie Oracle und SQL Server verfügen über spezielle Sprachelemente (CONNECT BY von Oracle und rekursives CTE von SQL Server), um die Deklaration der Abfrage zu unterstützen. Unter der Voraussetzung, dass Sie File Maker Pro verwenden, von dem ich wenig weiß, verfügen Sie möglicherweise nicht über solche Sprachkonstrukte, die Sie unterstützen könnten, und müssen möglicherweise Prozedurcode schreiben, um das Netzwerk zu durchlaufen. Dieses Problem kann jedoch behoben werden, wenn sich herausstellt, dass das Netzwerk eine feste Tiefe aufweist - beispielsweise, dass jedes Produkt entweder keine Komponenten oder eine Komponentenebene enthält. Hier einige Referenzen zu Netzwerkstrukturen im Datenbankdesign:
- Praktische Fragen in der Datenbankverwaltung - Fabian Pascal . Kapitel 7 bietet die beste und verständlichste Erklärung, die ich gefunden habe.
- Joe Celkos Bäume und Hierarchien in SQL für Smarties, zweite Ausgabe . Dies ist ein vollständiges Buch zu dem Thema, das für den SQL-Standard spezifisch ist.
- Unternehmensmodellmuster - David Hay . In einem Buch über Muster, die allen Organisationen gemeinsam sind (leider werden die ER-Diagramme in UML dargestellt, aber das kann überwunden werden), gibt es mehrere Beispiele für Netzwerkstrukturen.