Вступление
Окей, у нас вырисовывается архитектура системы:
- Фотографии хранятся с именем GUID
- Все фотографии имеют три версии — большое разрешение (начальное), среднее (для просмотра), и маленькое (для каталога) — с именами GUID_b.jpg, GUID_m.jpg и GUID_s.jpg.
- Информация о фотографиях хранится в базе данных в 3 нормальной форме — в трёх таблицах:
- Список фотографий;
- Список всевозможных тегов;
- Список номеров тегов к каждой фотографии.
При добавлении новой фотографии складываем запись в таблицу фотографий с её идентификатором — GUID. При указании тега проверяем наличие его в таблице тегов, и если его нет — добавляем. После всего этого в таблицу «фотография–тег» добавляем n=n_тегов записей «ID записи — GUID — номер тега».
Выборка данных
Выборку данных будем делать SQL-запросом, объединяя все три таблицы.