MySQL存储和搜索字符串
我目前正在开发自己的博客系统。当前,当您创建一篇新文章时,您可以选择将自己选择的it类别存档 目前,我正在mysql数据库中将这些类别存储为VARCHAR值。例如,如果用户选择了ID为2、4和8的类别,则该字段将包含2、4、8 要检索ID为4的类别的博客文章,请使用:MySQL存储和搜索字符串,mysql,string,store,Mysql,String,Store,我目前正在开发自己的博客系统。当前,当您创建一篇新文章时,您可以选择将自己选择的it类别存档 目前,我正在mysql数据库中将这些类别存储为VARCHAR值。例如,如果用户选择了ID为2、4和8的类别,则该字段将包含2、4、8 要检索ID为4的类别的博客文章,请使用: SELECT col FROM table WHERE LOCATE(',4,', CONCAT(',',col,',')) 有人告诉我,对于好的数据库结构,用小数点逗号分隔的值是不可能的(非常糟糕) 有谁能给我提供一个好的方法
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;
研究关系数据库规范化。对于您的特定情况,考虑除了博客内容表之外,还要创建2个额外的表、类别和博客类别。类别包含所有标记/类别的定义,而不包含其他内容。BlogCategories表是一个多对多交叉引用表,在您的例子中可能只包含对Blog表的外键引用和对Categories表的外键引用。这允许1个博客条目与多个类别关联,1个类别与多个博客条目关联 最坏的情况下,获取数据不会比3表联接更困难,并且您将不再需要子字符串业务来确定您的业务逻辑