当前位置:  开发笔记 > 数据库 > 正文

解释db标签存储方法

如何解决《解释db标签存储方法》经验,为你挑选了1个好方法。

从这篇文章中,在数据库中存储标签的最有效方法是什么?

建议存储这样的标记表.

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID

另一个SO帖子也说了同样的话.任何人都可以解释为什么标签应该像这样存储?我猜测ItemID是一些内部val,title是标签名称(c ++,sql,noob等)内容是我想用我的项目存储的任何其他数据.为什么不喜欢

Table: Item
Columns: ItemID, Title, 

Table: TagList
Columns: ItemID, Title

项目中的标题为"项目名称",标题标题为"c ++""sql""noob""etc"



1> Bill Karwin..:

你展示的第二个设计没有任何问题TagList,除了它需要更多的空间.

也就是说,如果使用标记"database-design"标记10,000个项目,那么在双表设计中,您必须将该字符串存储10,000次.如果空间效率更重要,您可以使用三表设计,它只会将"数据库设计"的4字节整数ID存储10,000次.节省10*10,000字节.

另一个区别是,在三表设计中Tag,即使它们具有不同的整数ID值,您也可以在表中具有多个具有相同字符串的行.所以在ItemTag表格中,它们似乎是不同的标签,你永远不会知道它们实际上被标记为类似.而在双表设计中,具有相同拼写的标签隐式地组合在一起.

另一点:如果您需要更改标签的拼写,那么在双表设计中您必须更新许多行.在三表设计中,您只需要更新一行.

最后,如果您通常需要一个唯一标记列表,那么Tags在三表设计中查询表格会更快,而不是SELECT DISTINCT tag FROM TagList每次需要唯一列表时都需要.而后者只提供正在使用的标签列表,而不是所有符合条件的标签列表.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有