Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как лучше построить таблицу?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ВэйДлин
Отправлено: 12 Сентября, 2012 - 02:12:50
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




У меня есть отдельная таблица с числами (кол-во новостей юзера, кол-во тем на форуме, кол-во лайков, кол-во подписок)
И у мня есть таблица с id юзера и временем его последнего посещения (time()) для статистики онлайн, как будет лучше с точки зрения оптимизации? Соединить эти таблицы?
Учитывая то что таблица online обновляется аяксом каждые 5сек
 
 Top
EuGen Администратор
Отправлено: 12 Сентября, 2012 - 08:55:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Соединить для чего? Какова изначальная задача?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
ВэйДлин
Отправлено: 12 Сентября, 2012 - 13:36:14
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Соединить 2 таблицы чтоб делать 1 запрос к БД вместо 2
 
 Top
Zuldek
Отправлено: 12 Сентября, 2012 - 14:09:14
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




В описанной вами структуре вы не сможете произвести объединение таблиц поскольку не указали какое поле является идентификатором пользователя в таблице с "количеством добавленных материалов".

Посмотрите как задают вопросы по БД и SQL-запросам и переформулируйте свой вопрос, выложив нормальную структуру данных.
 
 Top
ВэйДлин
Отправлено: 12 Сентября, 2012 - 14:12:28
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Стоит ли объединять эти 2 таблицы чтобы не делать 2 запроса к бд?
Учитывая то что 1 таблица обновляется не так часто как вторая (каждые 5сек)
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `user_count` (
  2.   `id` int(11) NOT NULL, -- id юзера
  3.   `new_messages` int(8) NOT NULL DEFAULT '0',
  4.   `quest_interim` int(8) NOT NULL DEFAULT '0',
  5.   `likes` int(11) NOT NULL DEFAULT '0',
  6.   `my_sub` int(11) NOT NULL DEFAULT '0',
  7.   `sub_to_me` int(11) NOT NULL DEFAULT '0',
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE = MyISAM DEFAULT CHARSET=cp1251

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `online` (
  2.   `id` int(11) NOT NULL, -- id юзера
  3.   `time` int(15) NOT NULL, -- Время последнего визита
  4.   PRIMARY KEY (`id`)
  5. ) ENGINE = MyISAM DEFAULT CHARSET=cp1251
 
 Top
Zuldek
Отправлено: 12 Сентября, 2012 - 14:23:15
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Если вам нужно извлечь только время последнего визита, или только число 'likes' пользователя то объединять таблицы не нужно.

Если вам одновременно необходимо извлечь данные из обеих таблиц, то объединение необходимо.

Если при загрузке страницы вам необходимо показать данные из обеих таблиц, а далее каждые 5 секунд показывать обновляемые данные одной таблицы, то при первоначальной загрузке страницы вы делаете один многотабличный запрос и далее аяксом запрашиваете данные только одной таблицы.
 
 Top
armancho7777777 Супермодератор
Отправлено: 12 Сентября, 2012 - 15:26:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Zuldek пишет:
то объединение необходимо

Как Вы это себе представляете, если ни одно поле таблицы не ссылается ни на одно поле другой? Нет связи между таблицами.
 
 Top
Zuldek
Отправлено: 12 Сентября, 2012 - 15:48:28
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




armancho7777777 пишет:
Как Вы это себе представляете, если ни одно поле таблицы не ссылается ни на одно поле другой? Нет связи между таблицами.

Цитата:

CODE (htmlphp):
скопировать код в буфер обмена
  1. CREATE TABLE `online` (
  2.   `id` int(11) NOT NULL, -- id юзера

Цитата:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `user_count` (
  3.   `id` int(11) NOT NULL, -- id юзера

Внимательнее.
 
 Top
armancho7777777 Супермодератор
Отправлено: 12 Сентября, 2012 - 15:55:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А, ну, комментарии в коде не заметил. Пардон.
Заработался.
Спать пора.

(Отредактировано автором: 12 Сентября, 2012 - 15:56:39)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB