Opisany wzór jest często nazywany „ eksplozją części ” lub „ zestawieniem materiałów ”. Jest to część wykresów i części drzew w badaniu struktur danych. Istotą tego rozwiązania jest uświadomienie sobie, że każdy „produkt” może składać się z innych „produktów”. Projekt jest wówczas strukturą sieciową, w której znajduje się Product
tabela z wierszem dla każdego produktu - niezależnie od tego, czy składa się z innych produktów, czy nie, a następnie Product Component
tabela z wierszem dla każdego produktu, który składa się z innych produktów i każdy odpowiadający produkt, który jest składnikiem tego produktu. W twoim przypadku każdy produkt ma swoją cenę. Więc miałbyś coś takiego
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 |
----------------------------------------------------------
Ten projekt jest lepszy niż pojedyncza tabela ze skojarzeniem rekurencyjnym, ponieważ dokładnie oddziela to, co tak naprawdę jest dwoma typami jednostek - węzły i łącza. W naszym przypadku produkty są węzłami, a komponenty produktu są linkami.
Chociaż projekt sieci jest powszechną strukturą, tworzenie zapytań jest problematyczne, ponieważ po całkowitym wypełnieniu jest strukturą rekurencyjną o różnej głębokości. Siły przemysłowe DBMS, takie jak Oracle i SQL Server, mają specjalne elementy językowe (CONNECT BY Oracle i rekurencyjne CTE SQL Server), aby pomóc w zadeklarowaniu zapytania. Biorąc pod uwagę, że używasz File Maker Pro, o którym niewiele wiem, możesz nie mieć takich konstrukcji językowych, aby pomóc i być może będziesz musiał napisać kod procedury, aby przejść przez sieć. Problem ten można jednak złagodzić, jeśli okaże się, że sieć ma stałą głębokość - powiedzmy, że każdy produkt nie ma żadnych komponentów lub ma jeden poziom komponentów. Oto kilka odniesień dotyczących struktur sieci w projekcie bazy danych:
- Praktyczne problemy w zarządzaniu bazami danych - Fabian Pascal . Rozdział 7 zawiera najlepsze i najbardziej zrozumiałe wyjaśnienie, jakie znalazłem.
- Joe Celko's Trees and Hierarchies in SQL for Smarties, wydanie drugie . To cała książka na temat specyficzny dla standardu SQL.
- Wzory modeli korporacyjnych - David Hay . Książka o wzorcach wspólnych dla wszystkich organizacji (niestety diagramy ER są przedstawione w języku UML, ale można je pokonać) istnieje kilka przykładów struktur sieciowych.