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

Форум MySQL

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

 

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

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

тема: Теория проектирования базы данных
 
 автор: neokortex   (27.07.2011 в 02:13)   письмо автору
 
 

Есть вопрос о проектировании базы данных MySQL. Давно он меня мучает.
Суть такова. Есть предположим книги. Каждую книгу можно описать темами. Тем, предположим, может быть от 1 до 100-200, а книг неограниченное количество.

ИД книги мы знаем.

Надо с максимальной скоростью выбрать темы относящиеся к определенной книге.

Я предполагаю, что базу можно сделать двумя способами:

1) Сделать 2 таблицы, books и themes. Каждой книге будет соответствовать перечень идентификаторов тем вида "5,8,98,15,30,41". Выбираем книгу, берем ид тем, потом выбираем из таблицы themes все записи соответствующие ид перечисленным выше. Все можно сделать одним запросом.

2) Сделать 3 таблицы books, themes, books_themes, где будут храниться связи идентификаторов. Например,

id | id_book | id_theme |
--------------------------------
1 | 535 | 128
2 | 535 | 130
3 | 535 | 131
4 | 550 | 128
5 | 550 | 131
6 | 600 | 109
7 | 600 | 110
8 | 600 | 111
9 | 600 | 112
10 | 600 | 113
11 | 605 | 115
12 | 609 | 131

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

Собственно вопросы: что будет работать быстрее? Какая нагрузка на железо (оператива, процессор)? Какой метод хранения данных эффективнее для высоконагруженного сайта (с большой посещаемостью)?

  Ответить  
 
 автор: cheops   (27.07.2011 в 10:29)   письмо автору
 
   для: neokortex   (27.07.2011 в 02:13)
 

Быстрее будет работать второй способ, строки обрабатываются медленее чисел.

  Ответить  
 
 автор: neokortex   (27.07.2011 в 10:58)   письмо автору
 
   для: cheops   (27.07.2011 в 10:29)
 

а то, что может получиться очень большая таблица books_themes - из-за этого не будет долго выборка происходить?

  Ответить  
 
 автор: cheops   (27.07.2011 в 21:54)   письмо автору
 
   для: neokortex   (27.07.2011 в 10:58)
 

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

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

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