Картинки и теги - вопрос дизайна базы данных - PullRequest
0 голосов
/ 31 июля 2010

У меня есть 3 таблицы, которые позволяют мне получить все теги некоторого изображения или все изображения с определенным тегом.

Я также хотел бы знать, сколько раз каждый тег существует.Как я могу получить эту информацию, используя MySQL?

Стоит ли добавить столбец "Count" в таблицу Tags для хранения этой информации?

Таблица файлов

File ID    File Name    ...
-------    ---------
   1         a.jpg      ...
   2         b.png      ...
   3         c.jpg      ...
   .           .
   .           .
   .           .

Таблица тегов

Tag Name    Tag Creator     ...
--------    -----------  
 David        david         ...
 2010         julia         ...
   .            .
   .            .
   .            .

Таблица файлов с тегами

File ID    Tag Name
-------    --------  
   1        2010
   1        April
   1        David
   2        2010
   2        Julia
   3        Friends
   .          .
   .          .
   .          .

Ответы [ 3 ]

4 голосов
/ 31 июля 2010
SELECT FilesTags.Tag_name, COUNT(*) as number_of_occurences
FROM FilesTags
GROUP BY FilesTags.Tag_name;
3 голосов
/ 31 июля 2010

Ответ Заки отвечает на один из ваших вопросов, но не на другой.

"Стоит ли добавить столбец" Количество "в таблицу тегов для хранения этой информации? "

Это действительно зависит от того, что вы собираетесь делать со счетами.Что, в свою очередь, зависит от характера вашего веб-сайта.

SO отображает счетчики рядом с тегами;это отчасти потому, что его целевая аудитория - гики и гики, как цифры.Но также подсчет полезной информации, когда дело доходит до пометки вопроса.Кроме того, необходимо рассмотреть значок таксономиста и отображение новых тегов на странице модераторов.Другими словами, на счетчике много вызовов, поэтому имеет смысл удерживать и поддерживать счетчик для каждого тега.

Другие сайты не выделяют почти столько же сока из своих тегов.Но, например, скажем, вы хотите отобразить облако тегов ;Возможно, вы захотите избегать подсчета всех записей в FileTags каждый раз, когда вы его визуализируете.В таком случае удержание счетчика поможет.

Но помните, что запись может быть дорогой.Так что имейте четкое представление о том, что вы собираетесь делать с подсчетами, прежде чем решите их сохранить.Поддерживать их асинхронно, возможно, в пакетной работе, было бы хорошей идеей.

1 голос
/ 31 июля 2010

Чтобы узнать, сколько раз встречается тег "ABC", просто выполните команду

ВЫБЕРИТЕ СЧЕТЧИК (*) ИЗ ФАЙЛОВ ФАЙЛОВ ФАЙЛОВ, ГДЕ Имя тега = "ABC";

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...