LINUX.ORG.RU

История изменений

Исправление 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 к сурьёзности и усложнит базу данных