Как моделировать теги в базе данных? - PullRequest
9 голосов
/ 25 августа 2009

У меня есть существующее веб-приложение, и я хочу добавить функцию тегов, чтобы пользователи могли отмечать существующие объекты. Вопрос в том, должен ли я добавить тег столбец к каждому объекту? или я должен нормализовать это и использовать таблицу тегов, где каждый объект будет иметь коллекцию тегов? Я склоняюсь к последнему, потому что он чувствует себя чище, легче отчитываться и легче создавать облако тегов. Но так как я знаю, что это было решено 1000 раз, я хотел спросить и посмотреть, что я что-то упустил?

Ответы [ 3 ]

6 голосов
/ 25 августа 2009

Предвидите ли вы пользователей, которым нужно связать более одного тега с объектом?

Если не , добавьте TAG_ID fk в таблицу OBJECT. В противном случае вам потребуется всего три таблицы, чтобы правильно смоделировать отношение «многие ко многим»:

ОБЪЕКТ

  • OBJECT_ID (pk)

OBJECT_TAG_XREF

  • OBJECT_ID (pk, от fk до OBJECT)
  • TAG_ID (pk, fk to TAG)

TAG

  • TAG_ID (pk)
4 голосов
/ 25 августа 2009

Да, вы должны это нормализовать. «Столбец тегов» либо будет поддерживать только один тег на запись, либо будет иметь ужасную производительность поиска.

2 голосов
/ 25 августа 2009

Определенно нормализуется. Таблица для тегов, таблица для существующих объектов и таблица ссылок между ними.

...