Моделирование отношений многие ко многим с postgreSQL - PullRequest
0 голосов
/ 19 февраля 2020

Я работаю в животноводстве и изучаю проектирование баз данных с postgreSQL. Сейчас я работаю над моделью отношений атрибутов сущностей для базы данных, которая позволяет регистрировать распределение пастбищ, на которых пасется скот. В логике этого бизнеса животное может быть отнесено к нескольким группам выпаса в течение его жизни. Каждая группа выпаса, в свою очередь, имеет продолжительность и состоит из нескольких пастбищ, на которых животные пасутся согласно календарю ротации. Таким образом, в определенное время c животные пасутся на пастбище, которое является частью пастбищной группы.

У меня есть ситуация, в которой многие группы выпаса могут быть назначены как многим животным, так и многим пастбища. Пытаясь смоделировать эту проблему, я нахожу ловушку для фанатов, потому что для одной таблицы существует два отношения «один ко многим». В соответствии с этим, я хотел бы спросить вас о том, как можно иметь дело с такими типами отношений, в которых одна сущность связана с двумя другими в форме отношений «многие ко многим».

Я положил диаграмму на проблема.

схема модели

Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Традиционно, использование таблицы ссылок (тех, которые вы называете назначением) между двумя таблицами было правильным способом для выполнения отношений «многие ко многим». Другие варианты включают в себя наличие ARRAY идентификаторов животных в группе выпаса, используя JSONB поля и c. Это может оказаться проблематичным c позже, поэтому я рекомендую пойти по старому пути.

Если вы хотите отслеживать историю, вы можете добавить логическое поле active (к таблице ссылок вероятно), чтобы указать, какое назначение является текущим или иметь start date и end date для каждого назначения. Это также позволяет планировать будущие задания. Чтобы упростить задачу, сделайте VIEW s, показывая только текущее назначение, а затем VIEW s, чтобы показать JOIN ed таблицы.

Поскольку в вашем посте нет четкого вопроса, я бы просто сказал, что вы идти по правильному пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...