Посоветуйте пожалуйста как реализовать принадлежность файла к нескольким категориям... Категории и данные о файлах хранятся в бд MySQL... Думал записывать в данных о файле ид-ы категорий через запятую, но как то нехорошо получится... Подскажите если кто знает)
Связь называется один ко многим. делается через справочную таблицу... т.е. третью category (поля id, name, ...) files (id, name, ...) file_in_categories (id, category_id, file_id) и в третей таблице будут поля: id (primary, int), category_id (int) и file_id (int) Так же можно и нужно проставить ключи (если движок InnoDB)
Большое спасибо... Смотрел подобный вариант, но так и не нашел нужной информации по связи "один ко многим"... Буду признателен если вы напишите пример выборки... Или же может знаете какой то мануал по этому вопросу?
Код: SELECT * FROM category AS ct INNER JOIN file_in_categories AS fic ON (ct.id = fic.category_id) INNER JOIN file AS fl ON (fl.id = fic.file_Id) WHERE fl.name = 'FileName' p.s. Я наврал, связь называется многие ко многим В случае один ко многим, можно обойтись без справочной таблицы. а file_id поместить в таблицу категорий. Но, в этом случае у вас у категории будет только один файл. т.е. один файл может быть у многих категорий, но только один.
А на сколько велика будет нагрузка от кучи записей.... Например в 1000 файлов каждый из них пренадлежит 5 категориям, значит в file_in_categories будет 5к записей... При каком количестве записей мускул может загнуться?
нет не может. подумайте, как работает, например, форум.. представляете сколько в нём записей и что к чему принадлежит. + никто не отменял оптимизацию самого мускула, запросов и т.д.