Опис, який ви описуєте, часто називають " вибухом частин " або " викладкою матеріалів ". Вона є частиною графіків та частини дерев при вивченні структур даних. Суть рішення полягає в усвідомленні того, що будь-який даний продукт може складатися з інших «продуктів». Потім конструкція - це мережева структура, де є Product
таблиця з рядком для кожного продукту - чи складається вона з інших продуктів, чи ні, а потім - Product Component
таблиця з рядком для кожного продукту, що складається з інших продуктів і кожен відповідний продукт, який є компонентом цього продукту. У вашому випадку кожен товар має ціну. Тож у вас було б щось подібне
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 |
----------------------------------------------------------
Ця конструкція є кращою для однієї таблиці з рекурсивною асоціацією, оскільки вона чітко розділяє те, що є насправді двома типами сутності - вузлами та посиланнями. У нашому випадку продукти - це вузли, а компоненти продукту - посилання.
Хоча дизайн мережі є загальною структурою, запитувати її проблематично, оскільки при повному заповненні це рекурсивна структура різної глибини. Програмні СУБД промисловості, такі як Oracle і SQL Server, мають спеціальні мовні елементи (Oracle CONNECT BY і рекурсивний CTE SQL Server), щоб допомогти зробити декларативний запит. Зважаючи на те, що ви використовуєте File Maker Pro, про який я мало знаю, можливо, у вас немає таких мовних конструкцій, щоб допомогти, і, можливо, доведеться писати процедурний код для проходження мережі. Однак цю проблему можна полегшити, якщо мережа виявиться на фіксованій глибині - скажімо, у кожного продукту немає ні компонентів, ні одного рівня компонентів. Ось декілька посилань щодо мережевих структур у дизайні баз даних:
- Практичні питання управління базами даних - Фабіан Паскаль . Розділ 7 дає найкраще і найрозумніше пояснення, які я знайшов.
- Дерева та ієрархії Джо Селко в SQL для Smarties, друге видання . Це ціла книга на тему, характерну для стандарту SQL.
- Моделі моделей підприємства - Девід Хей . У книзі про закономірності, загальні для всіх організацій (на жаль, діаграми ER представлені в UML, але їх можна подолати) є кілька прикладів мережевих структур.