sims
Guest
Структура таблицы заказов и товаров
Помогите пожалуйста решить такую задачу:
Пишем, например, систему заказов товаров по телефону:
т.е. у оператора открыто окно, со списком товаров напротив которых стоят чекбоксы. Пользователь говорит "хочу то, то и это". Оператор ставит напротив услуг галочки и нажимает "добавить". Всё, ничего сложного.
вопрос в том, как это удобнее хранить.
изначально я делал так:
таблица возможных услуг (меняется редко)
таблица в которой хранятся заказы клиентов
таблица в которой хрянятся "пожелания" клиентов
таблица "пожеланий" имеет структуру
-------------------------------
id
id_звонка_клиента (2я таблица)
id_товара (1я таблица)
-------------------------------
т.е. оператор ставит галочки
в таблицу заказов добавляется одна запись
в таблицу "пожеланий" столько записей, сколько галочек наставил оператор
идея, я надеюсь, понятна.
Для работы это вполне удобно:
получаем список записей, кликаем одну, там делается перекрёстный запрос к таблицам товаров и пожеланий, таким образом по id заказа получаем список заказанных товаров.
НО
когда форимируется отчёт для распечатки... это просто труба
на экране должно быть около 2000 записей (только за один месяц) при этом, в каждой строке-записи должен быть список товаров, т.е. в каждой из 2000 итерраций делаем ещё по запросу. итого 2000 запросов :-/ работает около 20 секунд, что есть очень долго.
Можно ли это дело как нибудь оптимизировать?
Сейчас передомной стоит похожая задача, как это лучше реализовать в ней? Не хочу допускать подобных ошибок.
я пришел к заключению что, лучше избавиться от таблиц товаров и таблиц пожеланий, и записать данные в массивы (данные меняются не часто) а списки товаров (вернее их индексы в массиве) хранить в строковом поле таблицы в формате ;16;4;15;1;25;. Но тогда будет не очень удобно делать отчёты по продажам определённых товаров (если такое понадобится вбудущем)
Объяснил как можно подробнее, жду от вес помощи!
Помогите пожалуйста решить такую задачу:
Пишем, например, систему заказов товаров по телефону:
т.е. у оператора открыто окно, со списком товаров напротив которых стоят чекбоксы. Пользователь говорит "хочу то, то и это". Оператор ставит напротив услуг галочки и нажимает "добавить". Всё, ничего сложного.
вопрос в том, как это удобнее хранить.
изначально я делал так:
таблица возможных услуг (меняется редко)
таблица в которой хранятся заказы клиентов
таблица в которой хрянятся "пожелания" клиентов
таблица "пожеланий" имеет структуру
-------------------------------
id
id_звонка_клиента (2я таблица)
id_товара (1я таблица)
-------------------------------
т.е. оператор ставит галочки
в таблицу заказов добавляется одна запись
в таблицу "пожеланий" столько записей, сколько галочек наставил оператор
идея, я надеюсь, понятна.
Для работы это вполне удобно:
получаем список записей, кликаем одну, там делается перекрёстный запрос к таблицам товаров и пожеланий, таким образом по id заказа получаем список заказанных товаров.
НО
когда форимируется отчёт для распечатки... это просто труба
на экране должно быть около 2000 записей (только за один месяц) при этом, в каждой строке-записи должен быть список товаров, т.е. в каждой из 2000 итерраций делаем ещё по запросу. итого 2000 запросов :-/ работает около 20 секунд, что есть очень долго.
Можно ли это дело как нибудь оптимизировать?
Сейчас передомной стоит похожая задача, как это лучше реализовать в ней? Не хочу допускать подобных ошибок.
я пришел к заключению что, лучше избавиться от таблиц товаров и таблиц пожеланий, и записать данные в массивы (данные меняются не часто) а списки товаров (вернее их индексы в массиве) хранить в строковом поле таблицы в формате ;16;4;15;1;25;. Но тогда будет не очень удобно делать отчёты по продажам определённых товаров (если такое понадобится вбудущем)
Объяснил как можно подробнее, жду от вес помощи!