Я работаю над системой на основе MySQL для управления данными от обработки пищевых продуктов.
В этот момент я столкнулся со следующей конкретной проблемой:
У меня есть таблица А с некоторыми предметами:
Farmer Quantity
Farmer A 1000 kg
Farmer B 500 kg
Тогда у меня есть таблица B, представляющая собой m: n-агрегацию данных из таблицы A:
Batch Quantity Quality etc.
LI1 200 kg ....
LI2 12000 kg ....
Для представления отношения m: n у меня есть таблица AB, которая соединяет два:
FK_Farmer FK_Batch
FarmerA LI1
FarmerB LI1
FarmerA LI2
Теперь проблема: некоторые партии в Таблице B на самом деле состоят из других партий ... что означает, что они рекурсивно составлены. Мне интересно узнать, каков наилучший подход с точки зрения проектирования баз данных для реализации этой ситуации.
Должен ли я включить дополнительный внешний ключ в таблицу AB, ссылающуюся обратно на таблицу пакетов? Должен ли я не применять внешние ключи и ссылаться как на фермеров, так и на таблицу партий через один и тот же столбец (и добавить флаг, чтобы указать рекурсию или что-то в этом роде)?
Есть ли другое очевидное решение, которое я нашел?
Было бы неплохо иметь возможность выполнять детализацию запросов для всех данных через прямой MySQL, но это не обязательно.