За последние 24 часа нас посетили 36525 программистов и 1696 роботов. Сейчас ищут 979 программистов ...

АРхитектура таблиц, счетчик просмотров

Тема в разделе "PHP и базы данных", создана пользователем TigerZaka, 25 авг 2012.

  1. TigerZaka

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

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Всем, добрый день!
    Есть задача, сделать счетчики просмотров.
    Как правильней спроектировать БД, вот например есть "новости" и "статьи", и поле "просмотры". Как я понял лучше вынести их в отдельную таблицу и сделать многие-ко-многим, но вот что не могу понять, к каждому виду материалов, надо делать отдельную таблицу "просмотров" или как то на общак завязывать?
    пока сделал так:
    новости м-к-м просмотры
    [id_news]-[text_news] / [id_news]-[id_views] / [id_views] [count]

    ----------------------
    и еще вопрос, если у меня есть три таблицы: город->район->улица
    ['id_city]-[name_city] / [id_area]-[name_area]-[id_city] / [id_street]-[name_street]-[id_area]

    можно ли выбрать все улицы из выбранного города не используя [id_city] в таблицы "улицы"?
    и если да, то как это отобразится на времени выборки. спс ))
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    1. Если под полем "просмотры" ты подразумеваешь просто число - сколько раз страницу открывали, которое будет увеличиваться на 1 при каждом просмотре - я бы не стал выносить в отдельную таблицу.
    2. Если шибко важно, чтобы всё было прям очень быстро, то лучше добавить поле `id_city` в таблицу улиц и делать выборку по одной таблице. А при такой структуре б.д., как ты привёл выше - запрос на выборку может быть таким, например:
    Код (PHP):
    1. SELECT `streets`.`id_street`, `streets`.`street_name`
    2. FROM `streets`
    3. INNER JOIN `areas` USING (`id_area`)
    4. INNER JOIN `cities` USING (`id_city`)
    5. WHERE `cities`.`name_city` = 'Москва'; 
    Можешь попробовать сперва так написать, потом уже, если действительно будет перегружаться сервер - займёшься оптимизацией.
     
  3. TigerZaka

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

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    спасибо! ребят, а посоветуйте литературу достойную, по этой теме. рус/англ