Традиционно, использование таблицы ссылок (тех, которые вы называете назначением) между двумя таблицами было правильным способом для выполнения отношений «многие ко многим». Другие варианты включают в себя наличие ARRAY
идентификаторов животных в группе выпаса, используя JSONB
поля и c. Это может оказаться проблематичным c позже, поэтому я рекомендую пойти по старому пути.
Если вы хотите отслеживать историю, вы можете добавить логическое поле active
(к таблице ссылок вероятно), чтобы указать, какое назначение является текущим или иметь start date
и end date
для каждого назначения. Это также позволяет планировать будущие задания. Чтобы упростить задачу, сделайте VIEW
s, показывая только текущее назначение, а затем VIEW
s, чтобы показать JOIN
ed таблицы.
Поскольку в вашем посте нет четкого вопроса, я бы просто сказал, что вы идти по правильному пути.