Пренадлежность файла к нескольким категориям

Тема в разделе "Базы Данных", создана пользователем PaRaDoX, 10 апр 2014.

  1. PaRaDoX

    PaRaDoX

    Регистрация:
    10 апр 2014
    Сообщения:
    4
    Симпатии:
    0
    Посоветуйте пожалуйста как реализовать принадлежность файла к нескольким категориям... Категории и данные о файлах хранятся в бд MySQL...
    Думал записывать в данных о файле ид-ы категорий через запятую, но как то нехорошо получится...
    Подскажите если кто знает)
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Связь называется один ко многим.
    делается через справочную таблицу... т.е. третью
    1. category (поля id, name, ...)
    2. files (id, name, ...)
    3. file_in_categories (id, category_id, file_id)
    и в третей таблице будут поля: id (primary, int), category_id (int) и file_id (int)
    Так же можно и нужно проставить ключи (если движок InnoDB)
     
  3. PaRaDoX

    PaRaDoX

    Регистрация:
    10 апр 2014
    Сообщения:
    4
    Симпатии:
    0
    Большое спасибо... Смотрел подобный вариант, но так и не нашел нужной информации по связи "один ко многим"...
    Буду признателен если вы напишите пример выборки... Или же может знаете какой то мануал по этому вопросу?
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    Код:
    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. Я наврал, связь называется многие ко многим :Smile: В случае один ко многим, можно обойтись без справочной таблицы.
    а file_id поместить в таблицу категорий. Но, в этом случае у вас у категории будет только один файл. т.е. один файл может быть у многих категорий, но только один.
     
    PaRaDoX нравится это.
  5. PaRaDoX

    PaRaDoX

    Регистрация:
    10 апр 2014
    Сообщения:
    4
    Симпатии:
    0
    А на сколько велика будет нагрузка от кучи записей.... Например в 1000 файлов каждый из них пренадлежит 5 категориям, значит в file_in_categories будет 5к записей... При каком количестве записей мускул может загнуться?
     
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    нет не может.

    подумайте, как работает, например, форум.. представляете сколько в нём записей и что к чему принадлежит.
    + никто не отменял оптимизацию самого мускула, запросов и т.д.
     
    PaRaDoX нравится это.
  7. PaRaDoX

    PaRaDoX

    Регистрация:
    10 апр 2014
    Сообщения:
    4
    Симпатии:
    0
    Спасибо за совет)