Добрый день!
Нужен совет по организации БД.
Есть таблицы:
- zerno_kultura (id, title)
- zerno_kontragent (id, title)
- zenro_price (id, kultura_id, kontragent_id, price)
- zerno_otchet (id, title)
Упущу очевидные вещи, что есть зависимости и ключи.
У меня на выходе должна получиться таблица-отчет: КОНТРАГЕНТ(горизонталь)/КУЛЬТУРА(вертикаль), на пересечении ЦЕНА (price). И у меня вопрос, как мне в отчет добавлять/удалять культуры и контрагентов? как мне эту настройку хранить в БД?
Пока что склоняюсь к решению: добавить в таблицу `zerno_otchet` поля kontragent_list и kultura_list, куда записывать массив значений в формате serialize
Прошу совета из разряда "лучших практик" как мне это организовать
Всем участникам топика - спасибо!
Произвольные выборки из many-to-many
Re: Произвольные выборки из many-to-many
Можно добавить промежуточную таблицу, связывающую zerno_price и zerno_otchet. Через price отчёт получит связь до культуры или контрагента, но будут нюансы в сборе отчёта (в отчёт не добавить культуру, если нет цены ни для одного из контрагентов и наоборот). Либо добавить промежуточные таблицы связывающие zerno_otchet с zerno_kultura и zerno_otchet с zerno_kontragent, таким образом можно будет собрать отчёт с любым сочетанием культур/контрагентов.
PS. Я не сторонник вашей идеи с сериализованным массивом id-шников, т.к. поддерживать целостность БД будет весьма проблематично и нормальных связей не будет.
PS. Я не сторонник вашей идеи с сериализованным массивом id-шников, т.к. поддерживать целостность БД будет весьма проблематично и нормальных связей не будет.
Re: Произвольные выборки из many-to-many
id-шники нужны для нормального конфигурирования нужных составных отчетов. Я делаю реализацию и вашего и моего варианта.
Спасибо за идею.
Спасибо за идею.