Структура базы товарных предложений(+)

Sherman

Mephi
Структура базы товарных предложений(+)

Создал нормальную структуру базы и код(классы для каждой сущности). Но не учел особенности работы c mysql 3.23.58:((

Структура:

store(st_ID) - магазин
store_categories(sc_ID, st_ID) - категори товаров в которых представлен магазин(связаны с другой таблицей, но она тут не причем).
store_position(sp_ID, sc_ID) - позиция товара
store_parameters(spar_ID) - парамтеры для позиции(могут изменяться)
store_parameters_postions(spar_ID,sp_ID) - связь позиции в прайслисте и параметра.

пояснения:

st_ID - ID магазина
sc_ID- ID категории прайслиста
sp_ID- ID позиции(товара)
spar_ID- ID праметра

типы таблиц: myisam(поддежрки innodb нет).

Возникли серьезнейшие проблемы с удалением и обновлением.

Оказалось что эта версия mysql не поддерживает операторы delete, update сразу на нескольких таблицах.

Что делать — ума не приложу. Варианты типа:

1. получить список категорий
удалить
2. потом получить список позиций
удалить
3. потом получить для каждой позиции набор параметров
удалить

не подходят, т.к. получается очень много запросов на шаге 3.
прикиньте кол-во позиций для среднестатистического магазина, а у каждой позиции есть 3-4 парамтера.

Может кто решал такие задачи с помощью такой вот отсталой СУБД — поделитесь...
 

tashkentchi

Новичок
А ничего другого и не сделаешь.
1. Пишешь функцию, которая по заданной позиции а) удаляет набор параметров и б) удаляет позицию.
2. Пишешь функцию, которая по заданной категории а) применяет к позициям функцию 1 и б) удаляет категорию.

Когда нужно удалить категорию, применяешь функцию 2.
 

Sherman

Mephi
Ну это нереально, даже если разрешить клиентам обновлять прайс раз в сутки, то нагрузка будет огого. А многие заноют, что они хотят обновлять чаще:(

p.s. Я уже проверял.
 

alexhemp

Новичок
Sherman

А сколько сстрок удаляется за раз?

попробуй DELETE FROM table WHERE ID IN (полный список идентификаторов).

У меня примерно такая-же структура БД и я периодически на 3.23.58 изгаляюсь по всякому :)
 

Sherman

Mephi
А это будет быстро? Я думал над этим но еще не тестировал.

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

Да. Забыл добавить, что оперирую довольно большими размерами данных. Например, таблица postion_parameters насчитывает сейчас 640.000 записей:)

p.s. ты с форума imho? (у меня там ник Sheryld).
 

alexhemp

Новичок
Sherman

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

Sherman

Mephi
А каков максимальный предел кол-ва параметров функции in.

У меня просто очень много товаров может быть. И поэтому наверное имеет смысл разбить все это на несколько запросов.

-~{}~ 16.06.05 00:25:

В итоге решили все-таки заставить хостера сменить на mysql. Но теперь они не хотят ставить 4.1, а предлагают только 4.0, хотя 4.1 уже production:)
 
Сверху