У меня есть общий архитектурный вопрос, касающийся дизайна части базы данных. Я хотел бы реализовать архив для образовательного объекта и иметь поле формы, где я могу запросить архив и получить определенное подмножество записей. Все началось только с архива статей и лекций. Я рассматривал их как похожие и использовал одну таблицу с именем resources
со столбцами для всех данных, которые мне нужны в обоих случаях. Таким образом, я мог бы написать в своем приложении Rails что-то вроде:
Resources.find(:all).where('title LIKE ?', "%#{params[:searchTitle]}%")
и получить все ресурсы с определенной строкой в названии.
Теперь я хотел бы расширить архив, чтобы охватить более широкий набор ресурсов, содержащих документацию по образовательной или исследовательской деятельности. У меня будет Предметы, а также то, что вы могли бы назвать коллекции и подколлекции. Элементами могут быть такие вещи, как листы, тексты, изображения, журналы, книги, музыка, видео, рисунки, модели, карты. Коллекции будут чем-то вроде курсов, лекций, упражнений, проектов, выставок. Курс может состоять из нескольких упражнений и лекций. Упражнение может иметь несколько проектов и т. д. Но могут быть и проекты без упражнения или курса. Я мог бы добавить ключевые слова к ресурсам для описания контента.
Результатом запроса должно быть представление со всеми связанными записями отдельных элементов и коллекций в одном списке.
Обычно я создавал таблицу для каждого ресурса, чтобы иметь как можно меньше повторяющихся данных. Но обычно у меня есть одна таблица в качестве точки входа для моих запросов, и теперь у меня будет 14 таблиц ресурсов + таблицы соединений + таблицы, такие как авторы. Как мне настроить структуру такой базы данных и в случае, если мне придется создавать отдельные таблицы для каждого ресурса: Как мне запросить 14 таблиц и отобразить результат в одном списке.
Заранее спасибо.
Я не знаю. Я хотел бы создать что-то вроде общедоступного онлайн-каталога и иметь возможность искать по названию, автору, ключевому слову, описанию. С точки зрения производительности я, вероятно, должен делать как можно меньше запросов.
в вашем методе действия контроллера,
resources1 = Resource1.where("title LIKE ?", "%#{params[:searchTitle]}%")
resources2 = Resource2.where("title LIKE ?", "%#{params[:searchTitle]}%")
resources3 = Resource3.where("title LIKE ?", "%#{params[:searchTitle]}%")
@total_results = resources1 + resources2 + resources3
Спасибо за ваш ответ. Таким образом, я могу искать несколько ресурсов. Теперь мне нужно только узнать, как разбивать на страницы total_results.
Итак, вы хотите искать в одном запросе? или вы хотите получить результат поиска в одном массиве?