|
|
|
| всем привет есть такая задача
имееется каталог книг. неообходимо дать пользователю возможность уточнять какие книги он хочет видеть. например: он может выбрать книги ангийские, русские, а так же уточнить романы или трилллер. т.е он может комбинировать ангийские-триллеры или русские-триллеры или английские-романы и т.д.
вот ломаю голову как красиво придумать базу данных. пока есть такая идея
содать 2 таблицы
первая "books" - она хранит ВСЕ обьекты(книги) что имеются,
втрорвя "property" - она хранит все свойства и все комбинации свойств и "id" книг из таблицы "books"
---books---
id book
1 b1
2 b2
3 b3
|
---property---
book_id prop
1 анлгийск // все английские книги
1 ангийск+триллер // все английские триллеры
1 триллер // триллеры и английские и русские
2 русск // русские - все
2 русск+романы
|
и т.д.
таким образом таблица "property" становится огромной но зато работает
не знаю может есть другие варианты? | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 16:36)
| | а не проще добавить в основную таблицу пару столбцов ( язык и жанр) ? | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 16:50)
| | хорошо но с расчетом на будущее если я хочу добавить еще одну категорию "детские книги" придется создавать еще один столбец ради одного свойства . в этом столбце будет пара записей а остальные поля будут пустые? | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 16:57)
| | А у детской книги языка нет?
Придется добавить еще один элемент жанра.
Безо всяких доп.столбцов. | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 17:04)
| | не правильный ответ потому что "детская книга" не может быть записана в столбце жанр, скорее придеться добавить новый столбец "возрастная группа" или че то такое.
в "жанр" нельзя добавить т.к. вдруг мне придется найти книгу "детская - романы" оба эти свойства по вашей логике должны стоять в столбце жанр | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 17:11)
| | >в "жанр" нельзя добавить т.к. вдруг мне придется найти книгу "детская - романы" оба эти свойства по вашей логике должны стоять в столбце жанр
Значит не придется.
Это следуя Вашей. Не моей. Я бы добавил. | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 17:46)
| | >Значит не придется.
>Это следуя Вашей. Не моей. Я бы добавил.
не ну что значит "не придется" мне НУЖНО найти книги "детские - романы"
как их НЕ найти это я и сам знаю | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 17:53)
| | Следуя моей логике детских романов не бывает.
А Вы конечно, можете добавить возрастную группу, диапазон или еще что-нибудь в этом роде. | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 17:58)
| | да детские романы это просто пример
короче как я понял для каждого свойства придется создавать отдельный столбец
или я не так понял? проблема в том что не очень это хорошо созавать столбец в котором есть пара записей а остальные значения NULL.
есть еще варианты
может как вариант:
создать на каждое свойство по таблице? | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 18:04)
| | >да детские романы это просто пример
плохой пример. | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 18:50)
| | > проблема в том что не очень это хорошо созавать столбец в котором есть пара записей а остальные значения NULL.
Что же в этом плохого?
База данных создана для того, чтобы в ней было _удобно_ хранить данные, а не для того, чтобы ее, бедную, не нагружать лишними полями (тем более, что они далеко не лишнии)
И вообще, по-моему, вам стоило бы с уважением относится к людям, которые вам помогают. Не рабы же тут сидят | |
|
|
|
|
|
|
|
для: neadekvat
(16.05.2009 в 19:21)
| | вы считаете нормальным таблицу с 10000 записей у которой в одном из столбцев всего пара значений а остальные NULL?
ведь БД надо спланировать правильно и я не согласен с вами что не необходимости думать о том чтобы не нагружать базу | |
|
|
|
|
|
|
|
для: Sergi
(16.05.2009 в 19:29)
| | Вы знаете, что значение NULL в строке таблицы занимает один бит? И вообще отсутствует в индексе? | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2009 в 19:34)
| | тогда ок решено!!!
создаю одну таблицу со свойствами в качестве столбцов и точка. | |
|
|
|