Я создал новостной сайт:
- Статьи показаны на первой странице, упорядочены по дате. Сначала самый новый.
- Новости находятся в таблице «новости» с полями «id», «title», «text» и некоторыми другими.
- Все статьи помечены 1-5 соответствующими тегами.
- Теги находятся в таблице «теги» с полями «id», «tag», «article» и некоторыми другими.
- Поле "article" of "tags" соответствует полю "id" of "news".
Теперь я хочу дать пользователю возможность добавлять теги в его «список избранных тегов». Тогда пользователь должен видеть только новостные статьи, содержащие один из избранных тегов.
Предполагая, что пользователь Боб выбрал теги "Барак Обама", "НБА", "Нью-Джерси" и "Собаки". Он должен видеть только статьи, содержащие хотя бы один из этих четырех тегов.
Как я могу написать скрипт PHP / MySQL, который этого добивается? Я думаю, что моя структура базы данных не подходит для этой цели, не так ли? Я должен был бы сделать запросы к БД, как это:
"ВЫБРАТЬ * ИЗ НОВОСТЕЙ, ГДЕ ИДЕНТИФИКАЦИЯ (ВЫБРАТЬ статью из тегов ГДЕ тег ВНУТРИ ('barack obama', 'nba', 'new jersey', 'dogs'))"
Этот запрос будет выполняться долго, не так ли? Должна быть структура базы данных, которая будет более подходящей, чем моя. У вас есть идея для этой проблемы? Какая структура БД мне нужна и какие запросы я должен использовать?
Надеюсь, вы мне поможете. Заранее спасибо!