Структура базы данных вложенных сборок - PullRequest
0 голосов
/ 10 января 2019

Я создаю программное обеспечение для цитирования для производственного бизнеса, на котором я работаю, и я не уверен, как обращаться со сборками в моей структуре базы данных MySQL, поскольку они немного похожи на Русская кукла .

Вот грубая ERM и простой пример:

  • Три небольших детали (2 × A & 1 × B ) свариваются вместе для формирования узла C . Это легко обрабатывается в таблице «PartAssem»
  • Узел сборки C - это затем узел сборки D
  • Сборка D затем используется в больших сборках, таких как E .

В этом случае сборочная часть имеет только два уровня глубины, причем только Сборка D является одновременно «родительской» и «дочерней» сборкой, но будет много случаев для более крупных сборок, где эта иерархия будет намного глубже.

Очевидно, что вы не можете использовать один UID в качестве двух отдельных внешних ключей в другой таблице, как я показал. Поскольку большую часть времени я буду запрашивать идентификатор родителя, я мог бы просто установить SubAssemChildID в качестве внешнего ключа, но я боюсь, что это может вызвать осложнения и / или я упускаю альтернативное решение.

Спасибо за любую помощь, которую вы можете предложить.

1 Ответ

0 голосов
/ 10 января 2019

Вы на правильном пути. Далее вам нужно понять, как запросить рекурсивную структуру в SQL, используя Common Table Expressions . Как только вы получите игрушечный пример, попробуйте его со своими собственными столами. Поначалу это не так легко понять, но как только вы ее получите, вы можете быть удивлены, насколько это полезно. При хорошей реализации СУБД вы также можете быть удивлены, насколько это быстро.

Пока я здесь, два мнения. Во-первых, вам не нужны префиксы "tbl_" для ваших имен. Конечно это стол; что еще последует за FROM? И, если у вас есть выбор, обратите внимание на Postgres, который хорошо известен среди фанатов SQL. Во-первых, арифметика даты действительно работает, а 31 февраля - ошибка.

...