gor*_*dyr 2 mysql database tagging database-design
今天在标记系统中使用了三种流行的数据库模式.
一般来说,最常推荐的方案是Toxi 3表多对多关系.
但是我遇到了一个特殊的需求,其中标签的数量将被限制为不超过100.这个数字将始终是恒定的,没有标签被添加到数据库中.每个单独的项目可能不超过20个标签.
在这种情况下,您会推荐什么样的架构?为什么?我有史以来第一次考虑使用完全非规范化的MySQLicious架构并使用FULLTEXT/LIKE进行搜索/过滤.
数据集本身可能永远不会超过100,000.
在选择任何非规范化设计之前,您必须清楚地了解要对数据运行的查询.非规范化设计针对某些查询子集进行优化,但代价是其他查询.
例如,您是否需要搜索特定标签?如果是这样,您需要某种方式通过索引查找标记.不要使用LIKE '%word%'
查询来搜索子串; 它将比使用索引的查询运行数百或数千倍.
你需要计算标签的出现次数吗?如果是这样,您需要一个限制重复的解决方案.您列出的唯一可以防止重复的设计是Toxi.
我不会使用任何需要使用MyISAM FULLTEXT索引的解决方案.MyISAM太脆弱,容易受到数据损坏.不要在MyISAM中存储您不准备定期重新生成或从备份恢复的任何数据.