Вопрос

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

Это было полезно?

Решение

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

Если нет, добавьте TAG_ID fk в таблицу ОБЪЕКТОВ.В противном случае вам понадобилось бы всего три таблицы, чтобы правильно смоделировать отношение "многие ко многим":

ОБЪЕКТ

  • OBJECT_ID (pk) ОБЪЕКТ_ИД (pk)

ОБЪЕКТ_ТЕГ_XREF

  • OBJECT_ID (pk, fk для ОБЪЕКТА)
  • TAG_ID (pk, fk для ТЕГИРОВАНИЯ)

ТЕГ

  • TAG_ID (pk)

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top