0

У меня есть система, которая принимает orders, а заказ может иметь один или несколько files. Файл принадлежит одному заказу.Несколько отношений «один ко многим» одному и тому же объекту

enter image description here

Кроме того, orders может иметь один или много revisions. Для этих изменений обычно использовалось то, что они могут загружать 0 или 1 файл. Итак, у меня были отношения one-to-zero-or-one.

enter image description here

Теперь выясняется, что они могут загрузить 0 или несколько файлов для пересмотра. Я не уверен, как это обычно будет обрабатываться. Единственная идея, о которой я могу думать, - это добавить revisions_id в таблицу files и сделать ее равной NULL. При этом всегда будет нужен order_id, чтобы узнать, для какого заказа он нужен, и если есть revisions_id, я буду знать, что это от пересмотра, и мы сможем объединить их.

enter image description here

Как обычно, я знаю случаи ситуационные. Но мне было интересно, является ли это подход, который считался бы приемлемым для других разработчиков, которые раньше сталкивались с этой проблемой.

+0

Возможно, вам следует избавиться от ссылки между 'files' и' orders', тем самым заставляя запросы проходить через «ревизию». Рассмотрим, что «оригинальная» версия является «ревизией». –

ответ

0

С вашим подходом возможно иметь данные, где revisions_id и orders_id Связь не поддерживается в таблице files.

Альтернативный подход может быть, чтобы удалить связь между orders и files и имеют взаимосвязь между files и revisions. Каждому заказу, вставленному в таблицу orders, необходимо будет иметь запись первоначальной ревизии, вставленную в таблицу revisions.

+0

Не могли бы вы объяснить первую часть больше, где отношения не нужно поддерживать в таблице 'files'? – kenshin9

+0

Вы можете получить связь между 'files' и' orders' через таблицу 'revisions'. Поскольку каждая запись в таблице 'orders' будет иметь соответствующую запись в таблице' revisions' (начальная запись с 'revisions.id = 0' или аналогичная), вы сможете сопоставить каждый файл с заказом. – AKS

+0

Я понимаю, что вы имеете в виду. Я не уверен, что это сработает для моего дела. Извините, я забыл некоторые более тонкие детали. Но чтобы просто остановиться на этом пути на мгновение, тогда таблица 'files' имела бы только столбец' revisions_id', правильно? – kenshin9

Смежные вопросы