История изменений
Исправление MrClon, (текущая версия) :
Каждая пара «файл - тэг» — одна строка таблицы. Т.е. таблица:
id filename tag
1 barsik.jpg котики
2 barsik.jpg Барсик
3 mypasport.jpg документы
4 mypasport.jpg мои-фото
5 mypasport.jpg приватное
Итого:
barsik.jpg — котики, Барсик
mypasport.jpg — документы, мои-фото, приватное
Индексы по filename и tag (и primary индекс по id, это самому мускулю нужно).
Для каждого файла можно найти все относящиеся к нему тэги, для каждого тэга можно найти все относящиеся к нему файлы. И то и другое очень быстро. Каждая строка таблицы содержит один факт, минимальную и достаточную единицу информации (принадлежность тэга фотографии).
Можно заморочиться и сделать вторую таблицу, словарь, в которой сопоставить каждый тэг с его ID (tag_id) и в первой таблице в колонке tag использовать уже tag_id. Это сэкономит сколько-то там копеек места, даст +2 к сурьёзности и усложнит базу данных
Исходная версия MrClon, :
Каждая пара «файл - тэг» — одна строка таблицы. Т.е. таблица:
id filename tag
1 barsik.jpg котики
2 barsik.jpg Барсик
3 mypasport.jpg документы
4 mypasport.jpg мои-фото
5 mypasport.jpg приватное
Итого:
barsik.jpg — котики, Барсик
mypasport.jpg — документы, мои-фото, приватное
Индексы по filename и tag (и primary индекс по id, это самому мускулю нужно).
Для каждого файла можно найти все относящиеся к нему тэги, для каждого тэга можно найти все относящиеся к нему файлы. И то и другое очень быстро. Каждая строка таблицы содержит один факт, минимальную и достаточную единицу информации (принадлежность тэга фотографии).
Можно заморочиться и сделать вторую таблицу, словарь, в которой сопоставить каждый тэг с его ID (tag_id) и в первой таблице в колонке tag использовать уже tag_id. Это сэкономит сколько-то там копеек места, даст +2 к сурьёзности и усложнит базу данных