如何在数据库中建模?

时间:2009-08-25 17:54:10

标签: database tags normalization tag-cloud

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

3 个答案:

答案 0 :(得分:6)

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

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

OBJECT

  • OBJECT_ID(pk)

OBJECT_TAG_XREF

  • OBJECT_ID(pk,fk to OBJECT)
  • TAG_ID(pk,fk to TAG)

标签

  • TAG_ID(pk)

答案 1 :(得分:4)

是的,你应该将它标准化。 “标记列”要么每个记录只支持一个标记,要么具有可怕的搜索性能。

答案 2 :(得分:2)

绝对正常化。标签表,现有对象表以及它们之间的链接表。