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

Форум MySQL

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

 

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

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

тема: обьекты и их свойства
 
 автор: Sergi   (16.05.2009 в 16:36)   письмо автору
 
 

всем привет есть такая задача

имееется каталог книг. неообходимо дать пользователю возможность уточнять какие книги он хочет видеть. например: он может выбрать книги ангийские, русские, а так же уточнить романы или трилллер. т.е он может комбинировать ангийские-триллеры или русские-триллеры или английские-романы и т.д.
вот ломаю голову как красиво придумать базу данных. пока есть такая идея
содать 2 таблицы
первая "books" - она хранит ВСЕ обьекты(книги) что имеются,
втрорвя "property" - она хранит все свойства и все комбинации свойств и "id" книг из таблицы "books"
---books---
id       book
1          b1
2          b2
3          b3



---property---
book_id                   prop
    1             анлгийск                       // все английские книги
    1             ангийск+триллер       // все английские триллеры
    1             триллер                        // триллеры и английские и русские
    2             русск                             // русские - все
    2             русск+романы

и т.д.

таким образом таблица "property" становится огромной но зато работает
не знаю может есть другие варианты?

  Ответить  
 
 автор: Trianon   (16.05.2009 в 16:50)   письмо автору
 
   для: Sergi   (16.05.2009 в 16:36)
 

а не проще добавить в основную таблицу пару столбцов ( язык и жанр) ?

  Ответить  
 
 автор: Sergi   (16.05.2009 в 16:57)   письмо автору
 
   для: Trianon   (16.05.2009 в 16:50)
 

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

  Ответить  
 
 автор: Trianon   (16.05.2009 в 17:04)   письмо автору
 
   для: Sergi   (16.05.2009 в 16:57)
 

А у детской книги языка нет?
Придется добавить еще один элемент жанра.
Безо всяких доп.столбцов.

  Ответить  
 
 автор: Sergi   (16.05.2009 в 17:11)   письмо автору
 
   для: Trianon   (16.05.2009 в 17:04)
 

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

  Ответить  
 
 автор: Trianon   (16.05.2009 в 17:46)   письмо автору
 
   для: Sergi   (16.05.2009 в 17:11)
 

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

Значит не придется.
Это следуя Вашей. Не моей. Я бы добавил.

  Ответить  
 
 автор: Sergi   (16.05.2009 в 17:53)   письмо автору
 
   для: Trianon   (16.05.2009 в 17:46)
 

>Значит не придется.
>Это следуя Вашей. Не моей. Я бы добавил.

не ну что значит "не придется" мне НУЖНО найти книги "детские - романы"
как их НЕ найти это я и сам знаю

  Ответить  
 
 автор: Trianon   (16.05.2009 в 17:58)   письмо автору
 
   для: Sergi   (16.05.2009 в 17:53)
 

Следуя моей логике детских романов не бывает.

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

  Ответить  
 
 автор: Sergi   (16.05.2009 в 18:04)   письмо автору
 
   для: Trianon   (16.05.2009 в 17:58)
 

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

есть еще варианты

может как вариант:

создать на каждое свойство по таблице?

  Ответить  
 
 автор: Trianon   (16.05.2009 в 18:50)   письмо автору
 
   для: Sergi   (16.05.2009 в 18:04)
 

>да детские романы это просто пример

плохой пример.

  Ответить  
 
 автор: neadekvat   (16.05.2009 в 19:21)   письмо автору
 
   для: Trianon   (16.05.2009 в 18:50)
 

> проблема в том что не очень это хорошо созавать столбец в котором есть пара записей а остальные значения NULL.
Что же в этом плохого?
База данных создана для того, чтобы в ней было _удобно_ хранить данные, а не для того, чтобы ее, бедную, не нагружать лишними полями (тем более, что они далеко не лишнии)

И вообще, по-моему, вам стоило бы с уважением относится к людям, которые вам помогают. Не рабы же тут сидят

  Ответить  
 
 автор: Sergi   (16.05.2009 в 19:29)   письмо автору
 
   для: neadekvat   (16.05.2009 в 19:21)
 

вы считаете нормальным таблицу с 10000 записей у которой в одном из столбцев всего пара значений а остальные NULL?

ведь БД надо спланировать правильно и я не согласен с вами что не необходимости думать о том чтобы не нагружать базу

  Ответить  
 
 автор: Trianon   (16.05.2009 в 19:34)   письмо автору
 
   для: Sergi   (16.05.2009 в 19:29)
 

Вы знаете, что значение NULL в строке таблицы занимает один бит? И вообще отсутствует в индексе?

  Ответить  
 
 автор: Sergi   (16.05.2009 в 19:38)   письмо автору
 
   для: Trianon   (16.05.2009 в 19:34)
 

тогда ок решено!!!
создаю одну таблицу со свойствами в качестве столбцов и точка.

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

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