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

  • Автор темы Автор темы Sherman
  • Дата начала Дата начала

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 парамтера.

Может кто решал такие задачи с помощью такой вот отсталой СУБД — поделитесь...
 
А ничего другого и не сделаешь.
1. Пишешь функцию, которая по заданной позиции а) удаляет набор параметров и б) удаляет позицию.
2. Пишешь функцию, которая по заданной категории а) применяет к позициям функцию 1 и б) удаляет категорию.

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

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

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

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

У меня примерно такая-же структура БД и я периодически на 3.23.58 изгаляюсь по всякому :-)
 
А это будет быстро? Я думал над этим но еще не тестировал.

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

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

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

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

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

-~{}~ 16.06.05 00:25:

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