За последние 24 часа нас посетили 44584 программиста и 3286 роботов. Сейчас ищут 1637 программистов ...

Не просмотреные темы пользователями (на форумах), как ?

Тема в разделе "PHP для новичков", создана пользователем NR55RU, 16 фев 2011.

  1. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    Давно занимает идеологический вопрос, как реализовано хранения информации о том какие темы пользователь смотрел а как нет в частности на форумах.

    Я вижу несколько вариантов.
    1. Хранение для каждой темы списка идентификаторов пользователя которые ее смотрели.
    2. Хранение для каждого пользователя списка идентификаторов тем которые смотрел он.

    Возможно есть еще варианты, я не очень пока хорошо знаком с MySQL возможно есть решения позволяющие делать это более цивилизованно но для обоих вариантов я вижу тока два вида реализации
    1. Поле в которое записывается куча идентификаторов разделенных между собой (на мой взгляд решение треш по многим причинам)
    2. Создание отдельной таблицы для темы/пользователя куда заносятся все пользователи/темы ее просмотревшие (вроде лучше но такая куча таблиц и опять же не факт что верное решение)

    В данном вопросе не интересует код, интересует имено логическое решение наиболее оптимального варианта.
    На данный момент решения подобной задачи не стоит, просто мысль давно занимает, как это делается.
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Всё очень просто:
    Таблица пользователей
    Таблица тем
    Таблица просмотров (id пользователя, id темы, время просмотра)
     
  3. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    То есть получается, одна таблица в которой собраны все записи о просмотре всеми пользователями всех тем так ? (ну пока не будем говорить о возможности разбить таблицу на несколько мелких по каки то критериям)

    И тогда допустим когда тема обновилась то в таблице просмотров во всех строках с идентификатором изменившийся темы мы меняем дату просмотра пользователями на скажем 0 .. и таким образом когда пользователь заходит на форум мы просто проверяем в таблице просмотров для каких тем с его идентификатором дата просмотра 0 и получаем список тем в которых были изменения.
    Что то типа того ?

    Но в даном случае если таблица одна и тем на форуме 100 000 и пользователей 100 000 то только эта таблица будет иметь 100 000 х 100 000 строк в идеале, если все пользователи смотрели все темы. Такие размеры вообще нормально или же при расчете на такие размеры надо заранее проектировать базу так что бы таблица просмотров была разбита на ряд более мелких ?
     
  4. BMWSauber

    BMWSauber Активный пользователь

    С нами с:
    21 ноя 2009
    Сообщения:
    151
    Симпатии:
    0
    Я думаю все еще проще,
    1. Список пользователей просмотревших топик вести просто не зачем,
    Просмотренные темы хранятся в "куки".
    2. Количество простмотров это простой int counter. вот и вся загадка.
     
  5. NR55RU

    NR55RU Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    88
    Симпатии:
    0
    BMWSauber
    Вариант конечно но в реалии обрати внимание, когда заходишь на форум с двух разных машин, например дома и на работе он помнит что ты смотрел а что нет, то есть данные о просмотре хранятся где то там и это более удобно для пользователя, то есть хранение подобных данных локально уже прошлое, в то время когда у людей по 5 компов по 10 ноутбуков и по 100 нетбуков а уж про телефоны и смартфоны вообще молчу.
    Таким образом в настоящее время хранение данных локально по меньшей мере не удобно для пользователя.

    Но вообще tommyangelo на мо взгляд изначально сказал верный корень, дальше уже вопрос более детальной продумки базы для ускорения процесса.
     
  6. BMWSauber

    BMWSauber Активный пользователь

    С нами с:
    21 ноя 2009
    Сообщения:
    151
    Симпатии:
    0
    ну... на пример к Этому форуму это не относится. т.е. сейчас же захожу с другого компа и все сообщения отмечены как непрочитаные, Проверь сам, зайди другим браузером.
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    BMWSauber

    Это у тебя так - я с разных компов и соответственно с разных браузеров захожу сюда - и всё корректно отображается.
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ооо, пришел BMWSauber и предложил решение проблемы, над которой думали небезызвестные люди в области IT.
    Обожаю самонадеянность, ммм.
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Есть же тема гдето здесь на кучу страниц и многа букав.
    Лично у меня сделано без доп. таблиц и без куков. Запоминает непросмотренные топы и с головой хватает реализации в десяк-второй строк.