我有一个现有的网络应用程序,想要添加标签功能,以便用户可以标记现有对象。问题是我应该为每个对象添加一个标签列吗?或者我应该对其进行标准化并使用标签表,其中每个对象都有一个标签集合?我倾向于后者,因为它感觉更干净、更容易报告并且更容易创建标签云。但既然我知道这个问题已经被解决了 1000 次,我想问一下我是否遗漏了什么?

有帮助吗?

解决方案

您是否预见到用户需要将多个标签与一个对象相关联?

如果 不是, ,将 TAG_ID fk 添加到 OBJECT 表中。否则,您总共需要三个表才能正确建模多对多关系:

目的

  • OBJECT_ID(pk)

OBJECT_TAG_XREF

  • OBJECT_ID(pk、fk 到 OBJECT)
  • TAG_ID(pk、fk 到 TAG)

标签

  • TAG_ID(pk)

其他提示

是的,你应该正常化它。的“标签列”要么将支持每个记录只有一个标签,或者将不得不可怕搜索性能。

绝对正常化。一种标签表,为您的现有对象的表,和它们之间的联系表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top