我目前正在开发自己的博客系统。目前,当您创建新帖子时,您可以选择将其归档到您自己选择的类别。
目前,我将类别作为 VARCHAR 值存储在 mysql 数据库中。例如,如果用户选择了 ID 为 2、4 和 8 的类别,则该字段将包含 2、4、8。
要检索 ID 为 4 的类别的博文,我使用:
SELECT col FROM table WHERE LOCATE(',4,', CONCAT(',',col,','))
有人告诉我,就良好的数据库结构而言,用小数点逗号分隔的值是不行的(非常糟糕)!
谁能给我提供一个好的方法/技术,使之成为最有效的方法?
提前致谢
最佳答案
一个灵活而健壮的设置,在 SO 中多次发布:
POSTS
id
name
text
CATEGORIES
id
name
POST_CATEGORIES
post_id
category_id
当前查询的位置:
SELECT p.id, p.name, p.text
FROM posts p
JOIN post_categories pc
ON pc.post_id = p.id
AND pc.category_id = 4;
关于MySQL存储和搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419130/