Вступление

Окей, у нас вырисовывается архитектура системы:

  • Фотографии хранятся с именем GUID
  • Все фотографии имеют три версии — большое разрешение (начальное), среднее (для просмотра), и маленькое (для каталога) — с именами GUID_b.jpg, GUID_m.jpg и GUID_s.jpg.
  • Информация о фотографиях хранится в базе данных в 3 нормальной форме — в трёх таблицах:
  1. Список фотографий;
  2. Список всевозможных тегов;
  3. Список номеров тегов к каждой фотографии.

При добавлении новой фотографии складываем запись в таблицу фотографий с её идентификатором — GUID. При указании тега проверяем наличие его в таблице тегов, и если его нет — добавляем. После всего этого в таблицу «фотография–тег» добавляем n=n_тегов записей «ID записи — GUID — номер тега».

Выборка данных

Выборку данных будем делать SQL-запросом, объединяя все три таблицы.