我建立了一个新闻网站: - 文章按日期排序显示在首页上。先上最新的。- 新闻在“新闻”表中,包含“id”、“title”、“text”和其他一些字段。- 所有文章都标有 1-5 个相关标签。- 标签位于“标签”表中,其中包含“id”、“标签”、“文章”和其他一些字段。- “标签”的“文章”字段适合“新闻”的“id”字段。
现在我想让用户有机会将标签添加到他的“喜欢的标签列表”中。然后用户应该只看到包含喜欢的标签之一的新闻文章。
假设用户 Bob 喜欢标签“barack obama”、“nba”、“new jersey”和“dogs”。他应该只看到至少包含这四个标签之一的文章。
我如何编写实现此目的的 PHP/MySQL 脚本?我认为我的数据库结构不足以满足此目的,是吗?我将不得不像这样进行数据库查询:
“SELECT * FROM news WHERE id IN (SELECT article FROM tags WHERE tag IN ('barack obama', 'nba', 'new jersey', 'dogs'))”
这个查询会运行很长时间,不是吗?必须有一个比我的更合适的数据库结构。你对这个问题有想法吗?我需要哪种数据库结构以及我必须使用哪些查询?
我希望你能帮助我。提前致谢!