У нас есть приложение PHP / MySQL, где пользователи могут создавать свои собственные «базы данных», которые могут стать довольно сложными.В MySQL он структурирован как набор таблиц свойств с такими столбцами, как record_id
, field_id
и field_value
.Мне хорошо известны плюсы и минусы такой структуры, поэтому, пожалуйста, учтите, что она не меняется.
У нас уже есть специальная система расширенного поиска, где пользователи могут запрашивать эти базы данных, комбинируя критерии из любого поля, используялогические операторы между и внутри полей.
Теперь нам нужно реализовать функцию отчетности, чтобы они могли создавать свои собственные отчеты.Это может включать несколько наборов данных в отношении один ко многим.
Например, рассмотрим базу данных «Люди», в которой у каждого человека может быть несколько контактов и несколько адресов.С помощью нашего пользовательского поиска легко перечислить, например, всех людей, родившихся в США.Но я также хочу отобразить все контакты и адреса для каждого человека в наборе результатов.
Я вижу два возможных решения:
Один запрос SQL с несколькими JOIN
заявления для получения всех данных.В этом случае у меня может быть несколько строк для каждого человека, в зависимости от того, сколько у них контактов и адресов, и мне придется иметь дело с этим в цикле PHP, который отображает (или организует) результаты.Боюсь, что это может оказаться слишком сложным, учитывая, что в отчете может быть неограниченное количество блоков информации (от одного до нескольких) (в моем примере у меня только два, адреса и контакты).
Для каждого человека выполнить 'n' дополнительных запросов, по одному для каждого блока данных от одного до нескольких.В моем примере это будет один запрос для контактов, а другой - для адресов.Такой подход может привести к огромному количеству запросов для создания всего отчета.
Я знаю, что оба подхода имеют свои недостатки, но есть ли «рекомендуемый» способ продолжитьтакие ситуации?