sql – 规范化“Toxi”方式真的值得吗? (3NF)
|
我正处于数据库设计的早期阶段,所以还没有最终结果,我正在使用“TOXI”3表设计作为我的线程,它有可选标签,但我不禁觉得加入是不是真的有必要,也许我需要依靠我的帖子表中的一个简单的标签列,我可以在其中存储类似< tag>,< secondTag>的varchar. 所以回顾一下: >是否值得在2个标签表上额外左连接的麻烦,而不是在我的posts表中只有一个标签列. 架构
样本数据
当前查询
结果 如果有标签: 最佳答案 将所有标记放在不同的记录中(标准化)意味着您可以在需要时更轻松地重命名标记并跟踪标记名称历史记录. 例如,重命名SQL Server相关标签至少三次(mssql – > sqlserver – > sql-server). 将所有标记放在一个记录中(非规范化)意味着您可以使用FULLTEXT索引索引此列,并一次搜索具有两个或更多标记的帖子:
这也是可能的,但标准化设计效率较低. (不要忘记将@ft_min_word_len调整为3个字符或更少的索引标记,以便工作) 您可以组合两种设计:存储地图表和非规范化列.但这需要更多的维护. 您还可以将规范化设计存储在数据库中,并使用您提供的查询将标记提供给Sphinx或Lucene. 这样,您可以使用MySQL进行历史挖掘,使用Sphinx进行全文标记搜索,并且不需要额外的维护. (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – Hibernate:无法执行本机批量操作查询
- Mysql学习mysql中索引使用不当速度比没加索引还慢的测试
- Mysql应用Mysql启动中 InnoDB: Error: log file ./ib_logfi
- Mysql实例使用distinct在mysql中查询多条不重复记录值的解决
- 我可以在两台使用PHP的不同服务器上使用MySql Create Selec
- MYSQL教程Mysql中order by、group by、having的区别深入分析
- php – 如何将行数组传递给PDO以插入它们?
- MySQL将所有内容都整理成一个大字符串(列和行)
- 如何在JDBC中使用MySQL子查询?
- 如何在Windows 8.1中的git bash中启动Mysql
