标记系统的最佳数据库模式,具有低和常数标记

gor*_*dyr 2 mysql database tagging database-design

今天在标记系统中使用了三种流行的数据库模式.

  • MySQLicious
  • 天窗
  • TOXI

一般来说,最常推荐的方案是Toxi 3表多对多关系.

但是我遇到了一个特殊的需求,其中标签的数量将被限制为不超过100.这个数字将始终是恒定的,没有标签被添加到数据库中.每个单独的项目可能不超过20个标签.

在这种情况下,您会推荐什么样的架构?为什么?我有史以来第一次考虑使用完全非规范化的MySQLicious架构并使用FULLTEXT/LIKE进行搜索/过滤.

数据集本身可能永远不会超过100,000.

Bil*_*win 6

在选择任何非规范化设计之前,您必须清楚地了解要对数据运行的查询.非规范化设计针对某些查询子集进行优化,但代价是其他查询.

例如,您是否需要搜索特定标签?如果是这样,您需要某种方式通过索引查找标记.不要使用LIKE '%word%'查询来搜索子串; 它将比使用索引的查询运行数百或数千倍.

你需要计算标签的出现次数吗?如果是这样,您需要一个限制重复的解决方案.您列出的唯一可以防止重复的设计是Toxi.

我不会使用任何需要使用MyISAM FULLTEXT索引的解决方案.MyISAM太脆弱,容易受到数据损坏.不要在MyISAM中存储您不准备定期重新生成或从备份恢复的任何数据.