Rails: создать структуру базы данных для архива

У меня есть общий архитектурный вопрос, касающийся дизайна части базы данных. Я хотел бы реализовать архив для образовательного объекта и иметь поле формы, где я могу запросить архив и получить определенное подмножество записей. Все началось только с архива статей и лекций. Я рассматривал их как похожие и использовал одну таблицу с именем resources со столбцами для всех данных, которые мне нужны в обоих случаях. Таким образом, я мог бы написать в своем приложении Rails что-то вроде:

Resources.find(:all).where('title LIKE ?', "%#{params[:searchTitle]}%")

и получить все ресурсы с определенной строкой в ​​названии.

Теперь я хотел бы расширить архив, чтобы охватить более широкий набор ресурсов, содержащих документацию по образовательной или исследовательской деятельности. У меня будет Предметы, а также то, что вы могли бы назвать коллекции и подколлекции. Элементами могут быть такие вещи, как листы, тексты, изображения, журналы, книги, музыка, видео, рисунки, модели, карты. Коллекции будут чем-то вроде курсов, лекций, упражнений, проектов, выставок. Курс может состоять из нескольких упражнений и лекций. Упражнение может иметь несколько проектов и т. д. Но могут быть и проекты без упражнения или курса. Я мог бы добавить ключевые слова к ресурсам для описания контента.

Результатом запроса должно быть представление со всеми связанными записями отдельных элементов и коллекций в одном списке.

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

Заранее спасибо.

Итак, вы хотите искать в одном запросе? или вы хотите получить результат поиска в одном массиве?

Bondhan Sarker 17.03.2022 12:35

Я не знаю. Я хотел бы создать что-то вроде общедоступного онлайн-каталога и иметь возможность искать по названию, автору, ключевому слову, описанию. С точки зрения производительности я, вероятно, должен делать как можно меньше запросов.

SEJU 17.03.2022 12:55
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

в вашем методе действия контроллера,

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.

SEJU 23.03.2022 07:26

Другие вопросы по теме