如何对数据库中的标签进行建模?
-
19-09-2019 - |
题
我有一个现有的网络应用程序,想要添加标签功能,以便用户可以标记现有对象。问题是我应该为每个对象添加一个标签列吗?或者我应该对其进行标准化并使用标签表,其中每个对象都有一个标签集合?我倾向于后者,因为它感觉更干净、更容易报告并且更容易创建标签云。但既然我知道这个问题已经被解决了 1000 次,我想问一下我是否遗漏了什么?
解决方案
您是否预见到用户需要将多个标签与一个对象相关联?
如果 不是, ,将 TAG_ID fk 添加到 OBJECT 表中。否则,您总共需要三个表才能正确建模多对多关系:
目的
- OBJECT_ID(pk)
OBJECT_TAG_XREF
- OBJECT_ID(pk、fk 到 OBJECT)
- TAG_ID(pk、fk 到 TAG)
标签
- TAG_ID(pk)
其他提示
是的,你应该正常化它。的“标签列”要么将支持每个记录只有一个标签,或者将不得不可怕搜索性能。
绝对正常化。一种标签表,为您的现有对象的表,和它们之间的联系表。
不隶属于 StackOverflow