Абстрактный вопрос заслуживает абстрактного ответа.:-) Увы, я собираюсь привести вам пример того, как другая часть программного обеспечения решает эту проблему, потому что я не очень философский.
Request Tracker - это длинныйустановленная система оповещения о неисправностях в браузере.Он обладает чрезвычайно мощным механизмом поиска заявок, который знает, как читать все возможные поля, связанные с заявкой, и позволяет эффективно создавать весь запрос SQL через веб-интерфейс.
Я не смог найти скриншотыПоисковая страница, так что, возможно, вам захочется взглянуть на онлайн-демо RT.Войдите в систему, затем в меню в верхнем левом углу окна выберите «Билет», затем «Новый поиск».
Или еще лучше, чтобы увидеть, как ВСЕ поиски строятся на этом инструменте поиска, нажмите наочередь из списка в правой части основного демонстрационного экрана (которая отображается сразу после входа в систему).Когда у вас появится набор билетов, нажмите «Билеты» в верхней части окна.(Не пункт меню, который появляется. Просто нажмите Билеты.)
Строитель запросов здесь показывает структуру вашего запроса справа и позволяет вам смешивать и сопоставлять элементы, которые нужно включить в него, используя элементы управления налевый.И если вы «продвинутый» пользователь и хотите написать свой собственный запрос вручную или очистить что-то, с чем у веб-интерфейса возникают проблемы, вы можете нажать на ссылку «Дополнительно» вверху и отредактировать что-то, что замечательно похоже на SQL.
Я не буду вдаваться в то, как присоединиться к другим таблицам. Я отвечаю на это, как будто это вопрос UI / UX, а не вопрос моделирования данных.: -)