У меня есть проблема, которую я пытался решить самостоятельно, но не добился большого успеха (пробовал разные подходы, но все они оказались в большой стенке кода, которая в конечном итоге не сделала то, что мне нужно). Поэтому я здесь прошу любой совет, решение, фрагменты кода, которые вы можете предложить. Заранее спасибо!
У меня есть база данных SQL с таблицами PARTS, ASSEMBLIES и FORMULA. Как следует из названия, сборки состоят из деталей, но также могут быть изготовлены из других сборок. Как производятся сборки написано в таблице FORMULA. В моем приложении я могу указать, сколько сборок было сделано (увеличить запас). Но когда я увеличиваю запас для сборки, мне нужно уменьшить запас для соответствующих деталей и (под) сборок. Для лучшего понимания я проиллюстрирую это на примере;
ЧАСТИ
partID partStock
p1 100
p2 100
p3 100
ASSEMBLIES
assID assStock
ass1 10
ass2 10
ФОРМУЛА
assID parts isAssembly quantity
ass1 p1 no 1
ass1 p2 no 2
ass1 ass2 yes 1
ass2 p3 no 2
Пояснения к таблице: ass1
собран из 1x p1
+ 2x p2
+ 1x ass2
(это другая сборка), а ass2
собран из 2x p3
Поэтому, когда я увеличиваю запас ass1 на 10 (это не проблема, я могу это сделать), мне также необходимо уменьшить запас для p1 (10), p2 (20), ass2 (10). И если бы запас для ass2 был <10, мне нужно было бы уменьшить запас p3 (для оставшегося числа). </p>
Кто-нибудь вообще понимает, что я хочу здесь делать? : D
Любые предложения приветствуются, большое спасибо! О, и я пишу свое веб-приложение на C #. :)
РЕДАКТИРОВАТЬ: Как было отмечено в комментариях, я сначала ищу идею (шаблон дизайна), как это сделать. Реальные SQL-запросы и кодирование не такая уж большая проблема. Если у кого-то есть полезный код, это бонус. ;)