1

Тема: Спроектировать каталог (MySQL)

Есть такая задача - каталог, в котором будут какие-то товары. Нужно,чтобы при добавлении товара админ мог добавлять определенные характеристики. Допустим, в базе заложены (при создании таблицы есть такие поля) цена и год , а он хочет добавить еще вес товара, цвет и так далее.
Я бы сделал обычный xml, но по этим полям потом должна идти сортировка (самые дешевые, самые тяжелые и так далее).
Вопрос - как лучше это сделать? Кроме как менять саму таблицу через alter table.

У меня есть идея, создать в таблице обычный varchar  "параметры", в котором будет serialize текст, либо xml либо еще что-то подобное. Но будет ли быстрой сортировка при наличии тысяч записей?

2

Re: Спроектировать каталог (MySQL)

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

3

Re: Спроектировать каталог (MySQL)

Спасибо, посмотрю какие-то движки, может что и найдется.

Еще есть идея - а если хранить свойства в каком-то поле (тот же варчар или еще что нибудь, в json / xml формате не суть важно). Обращаемся к базе вида
SELECT * FROM `content`

Далее, через mysql_fetch_row мы получаем все записи и создаем из каждой объект (т.е. поле Mysql , отвечающее за свойства, преобразуется в несколько свойств объекта). И сортировка уже пусть идет средствами сугубо php.

Только интересно - если объектов будет несколько сотен - наверное, это очень плохо скажется на производительности сценария? С ООП почти не работал.

4

Re: Спроектировать каталог (MySQL)

Я же говорю, что сортировать через PHP не вариант. Представь, что в магазине 100000 товаров - всё будет очень плохо. Я вот знаю, что MS SQL сам поддерживает XML со схемами и вроде как умеет делать выборки по полям, содержащим XML, но не думаю, что это тоже очень быстро. В MySQL есть ли такое, не в курсе.

5

Re: Спроектировать каталог (MySQL)

Хорошо,последний вопрос - если под каждую категорию создавать таблицу SQLite? Они простые (2 типа, только int и text), как раз под свойства. Единственное - если этих таблиц в базе будет штук 100, можно ли так? Вроде как Sqlite держит большие базы, но точно не уверен. Тем более, с ним какая-то путаница в РНР - до 5.3 он встроен, а потом вроде только через PECL.

6

Re: Спроектировать каталог (MySQL)

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