массив в ячейке или вспомогательная таблица...

Тема в разделе "Базы данных", создана пользователем fafee, 4 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    Добрый день. возникла проблема:
    Есть пользователи с user_id и альбом с media_id каждого элемента, которые хранятся в соответствующей таблице. по умолчанию каждый пользователь может комментировать любую фотографию, но не может ответить на другой комментарий, то есть комментарии выстраиваются в столбик, а не в дерево.
    Уведомления о новом комментарии отправляются только владельцу альбома.
    Чтобы улучшить ситуацию, пришла в голову мысль сделать "подписку на комментарии для любого элемента". То есть пользователь ставит галку "подписаться на комменты" и уведомление приходит не только владельцу альбома, но и ему (такая возможность встроена в движки многих форумов).
    А вот с тем как это реализовать вышла загвоздка. По идее, в таблице с media_id должно быть поле где будет массив, с user_id подписавшихся. Но тут возникает вопрос - может ли ячейка таблицы хранить массив и как потом по нему делать выборку.
    Второй вариант - создать вспомогательную таблицу - с media_id по строкам и user_id по столбцам, где будут по умолчанию ноли, и единица, если пользователь подписался на комментарий. Тут опять вопрос - при большом количестве пользователей и фотографий, таблица будет немаленькая. И скорее всего нагрузка на сервер тоже. Может есть какой-то более изящный способ?..
    php и mySQL только начинаю учить, буду благодарен любым советам. Cпасибо :)
     
  2. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Делать однозначно отдельную таблицу.
    Только не надо писать в нее сразу все варианты. Зачем тебе это?
    Есил какой-то пользователь подписывается на комментарии, то добавляешь запись в эту табличку: media_id, user_id.

    В своем коде, при наступлении события постинга в альбом делаешь выборку из этой таблицы по полю media_id и рассылаешь полученным пользователям сообщения.
     
    fafee нравится это.
  3. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    Я так в итоге и сделал, спасибо. Просто вечером какая-то дурь в голове была;)
     
  4. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Ну ниче-ниче, бывает такое ;-)
     
Статус темы:
Закрыта.