Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузить таблицу, отвечающую записи из другой таблицы
 
 автор: nebelll   (26.12.2008 в 15:17)   письмо автору
 
 

здравствуйте. У меня есть один вопрос - он несложный, но хочу посоветоваться с людьми более понимающими в этом вопросе.

У меня есть одна таблица - в ней хранится список всех участников.

И есту еще куча таблиц - по одной на каждого участника, куда будет записываться каждую неделю новая информация на каждого участника.

Мне нужно сделать, чтобы при выборе определенного участника - то есть определенной записи из таблицы участников, вызывалась другая таблица, которая отвечает этому участнику.

Самый простой способ - это в таблице участников сделать дополнительное поле, где для каждого участника будет записано название таблицы, которое ему отвечает, и это название вставлять в функцию SELECT.

Но есть ли другой, возможно более рациональный, способ привязки одной таблицы к записи из другой таблицы? Заранее спасибо за ответ.

  Ответить  
 
 автор: Root   (26.12.2008 в 16:41)   письмо автору
 
   для: nebelll   (26.12.2008 в 15:17)
 

>И есту еще куча таблиц - по одной на каждого участника, куда будет записываться каждую неделю новая информация на каждого участника.

Не проще создать одну таблицу info и записывать туда каждую неделю новую информацию?

  Ответить  
 
 автор: xx77   (26.12.2008 в 16:49)   письмо автору
 
   для: nebelll   (26.12.2008 в 15:17)
 

>> куда будет записываться каждую неделю новая информация на каждого участника.

Всмысле стараю информация на участника тоже необходимо сохранять ?
Вообще-то и в этом случае можно попробовать всю информацию на всех поместить в одной таблице .

Насчёт свяэей записей тогда просто можно было-бы добавить в таблицу поле с id участника к которому относится эта информация.
Слишком много таблиц тоже плохо. Мне кажется достать по индексам в файле быстрее чем достать по названиям файлов в файловой системе , если слишком много файлов таблиц , которые mysql хранит в одной дирректории

  Ответить  
 
 автор: AcidTrash   (26.12.2008 в 21:17)   письмо автору
 
   для: nebelll   (26.12.2008 в 15:17)
 

>Самый простой способ - это в таблице участников сделать дополнительное поле, где для >каждого участника будет записано название таблицы, которое ему отвечает
Вы это серьезно?
А если участников будет 1000000, то вы хотите плодить такое же количество таблиц?

  Ответить  
 
 автор: nebelll   (26.12.2008 в 23:31)   письмо автору
 
   для: AcidTrash   (26.12.2008 в 21:17)
 

А как иначе? Как всех посетить в одну таблицу? Поля, которіе надо заполянть в участников будут разніе, і всех их поместить в одну таблицу, кажется не так просто...


Тоесть если будет одна огромная таблица ,это лучше чем много небольших?

В принцыпе возможно сдулать одну таблицу где было-би поле с идентификатором участника, к которому относятся данные в строке.

Но то гда из таблицы будет необходимо выводить допустим 10 строк в которых 20 элементов. Но при этом во всей таблице будет около 10000 записей. Как в таком случае ускорить процес строк, в которых есть этот самый идентификатор? Слишал что-то об индексации, подходит он под этот случай?

Спасибо.

  Ответить  
 
 автор: nebelll   (27.12.2008 в 05:02)   письмо автору
 
   для: nebelll   (26.12.2008 в 23:31)
 

Я все таки подумал еще раз, почитал немного и решил что лучше я буду делать много таблиц. Дело в том, что при входе в системое определенное количество полейу пользователя, ему нужно вывести всю информацию, занесенную в таблицу, которая относится именно к этому пользователю. Или часть строк из этой таблицы.

Соответственно, если у меня будет 100 000 пользователей , у меня будет на них 100 000 таблиц, в каждой из которых будет свое определенное количество полей для каждого пользователя (так как оно может отличаться) , и одна таблица со списком всех пользователей, где будет поле с названием таблицы, которая соответствует каждому пользователю. В таком случае следующий запрос будет выводить необходимое количество строк из одной таблицы которую мы уже знаем, и в которой будет находится максимум 2000 записей и только нужные этому пользователю заполненные поля.

А если делать все одной таблицей, в ней будет максимум примерно 100 000 * 2000 = 200 000 000 записей, и при этом некоторые поля будут заполнены лишь у небольшой части пользователей, так как другим пользователям эти поля не нужны. А производить поиск всех строк, принадлежащих конкретному пользователю из таблицы с таким огромным количеством записей очень непросто, как мне кажется.

Если я правильно понимаю, мой вариант с 100 000 таблиц должен занимать меньше пространства на диске сервера за счет отсутствия пустых невостребованных полей для многих пользователей.
Да и запрос по выводу необходимых данных одного пользователя будет происходить быстрей чем в случае одной огромной таблицы.

Учитывая, что каждый пользователь сможет вызвать данный только о себе и соответственно вызываться будет лишь одна таблица на каждого пользователя, то даже в случае, если все 100 000 пользователей одновременно зайдут и сделают запрос на вывод своей информации, то MySQL должна будет вывести 100 000 таблиц - по одному разу каждую, искать будет минимум...

Если я не прав в своих рассуждениях, прошу поправить. Буду благодарен за любой ответ. Спасибо.

  Ответить  
 
 автор: Trianon   (27.12.2008 в 07:15)   письмо автору
 
   для: nebelll   (27.12.2008 в 05:02)
 

Совершенно однозначно, Ваш способ будет куда более затратным.
Напишите пример для двух-трех пользователей и трех-четырех необязательных свойств пользователя (очень зря Вы их здесь называете полями) .
Можно будет легко показать, что для нормальной формы схемы БД потребуется куда меньше записей, чем Вы полагаете.

  Ответить  
 
 автор: nebelll   (27.12.2008 в 14:46)   письмо автору
 
   для: Trianon   (27.12.2008 в 07:15)
 

Пользователь1: Математика Английский Этика Логика Украинский язык
Пользователь 2: Алгебра Геометрия Английский Немецкий Физика Химия Биология Программирование Украинский язык Украинская литература Зарубежная литература и т.д.
Пользователь 3: Черчение Економика Геометрия Мат. анализ ДПЮ + все перечисленное для 2-го пользователя

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования