[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимизация запроса
Страницы: 1, 2, 3
Zzepish
И так, господа.
Пилю я голосовалку (сервис голосования)
Такая дилема: при редактировании нужно апдейтить поля (если они не удалены), или добавлять новые (если добавляются новые, само-собой).
Я подумал и решил: проще удалить ВСЕ поля при сохранении, и перезаписать (в том числе и старые).
Таблицы такие:
user posted image
user posted image
Zzepish
up
Valick
Zzepish, вот ты вот щас чё спросил?


_____________
Стимулятор ~yoomoney - 41001303250491
mvg
Каждый раз удалять - плохая идея.
curious
таблица 1
question_id - id
title - вопрос
is_deleted - стутус(удален, нет)

таблица 2
answer_id - id овтета
question_id - id вопроса
title - ответ
is_deleted - стутус(удален, нет)

is_deleted - не обязателен

если я понял о чем речь
curious
перечитал) походу не понял.
sergeiss
Цитата (Zzepish @ 22.12.2013 - 19:49)
Такая дилема: при редактировании нужно апдейтить поля (если они не удалены), или добавлять новые (если добавляются новые, само-собой).
Я подумал и решил: проще удалить ВСЕ поля при сохранении, и перезаписать (в том числе и старые).

Удалить поля или перезаписать значения в полях???

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Zzepish
Valick
есть две таблицы!
В одной: инфрмация о вопросе: сам вопрос, его название, его id и автор.
Во второй: id, id_вопроса, вариант вопроса.
Так вот: когда юзер захочет отредактировать голосование- придется или перезаписывать, или удалять записи, а потом вписывать их как новые.

Как при такой архитектуре перезаписать в одном запросе- не представляю (с учетом того, что должна идти проверка на юзера)
Zzepish
Эх, мне еще учится и учится высказывать свою мысль(((
sergeiss
Цитата (Zzepish @ 23.12.2013 - 01:09)
Как при такой архитектуре перезаписать в одном запросе- не представляю (с учетом того, что должна идти проверка на юзера)

Так а в чем проблема-то? И при чем тут "проверка на юзера"? Если ты хочешь что-то обновить, то указываешь в WHERE некие параметры, характеризующие нужную запись. Вот скажи: при вставке ты какие параметры указываешь?

Цитата (Zzepish @ 23.12.2013 - 01:10)
мне еще учится и учится...

Учиться и учиться wink.gif

Если захочешь - научишься. Надо просто научиться абстрагироваться от того, что ты знаешь что-то по этому вопросу и попробовать глянуть на вопрос глазами человека, который не знает то, что знаешь ты.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Zzepish
sergeiss
Смотри: в первой таблице указывается автор. Во второй таблице указывается id самого опроса (voting_id). Т.е. при перезаписи нужно будет проверять: является ли текущий юзер автором этого варианта ответа. Если да- перезаписывать. Сложность в том, что автор записан в одной таблице, а варианты ответа в другой
Magistr
Zzepish
Хм какое совпадение я тоже юзаю опросы с нуля.
Зачем разделять автора опроса с id опроса и вариант ответа?
Запешы все в одну таблицу, попроще будет переверять.
У меня например id, автор, тема, варианты ответа, количество ответов по номеру ответа все в одной таблице.
Но если из за етих изменений многа кота прийдется перелопатить нада думать над другим вариантом...
Valick
Цитата
Во второй: id, id_вопроса, вариант вопроса.

ты хотел сказать вариант ответа, сам вопрос должен быть в первой таблице
структура БД правильная
Цитата
Так вот: когда юзер захочет отредактировать голосование- придется или перезаписывать, или удалять записи, а потом вписывать их как новые.

Зачем? Тут обычный UPDATE ну или INSERT если необходимо добавить еще один (ну или пару миллионов) вариант ответа. У тебя есть id вопроса (причем в обеих таблицах, по этому полю они и связаны), по нему можно узнать автора и предоставить права на редактирование.
Просто редактирование вопроса и его описания, ну и удаление, это одна задача. А редактирование ответов их добавление и удаление, это другая задача. Даже если ты одновременно Хочешь отредактировать вопрос и ответы, это разные запросы к БД.
Может ты и загнался тем, что хочешь их объединить?

_____________
Стимулятор ~yoomoney - 41001303250491
Zzepish
Цитата
ты хотел сказать вариант ответа, сам вопрос должен быть в первой таблице

Именно.
Цитата
Зачем? Тут обычный UPDATE ну или INSERT если необходимо добавить еще один (ну или пару миллионов) вариант ответа. У тебя есть id вопроса (причем в обеих таблицах, по этому полю они и связаны), по нему можно узнать автора и предоставить права на редактирование.
Просто редактирование вопроса и его описания, ну и удаление, это одна задача. А редактирование ответов их добавление и удаление, это другая задача. Даже если ты одновременно Хочешь отредактировать вопрос и ответы, это разные запросы к БД.
Может ты и загнался тем, что хочешь их объединить?


Понимаешь в чем беда: я могу запилить через 2 запроса без проблем. Но хотелось бы одним. Это возможно?
glock18
Можно одним. Ключик, правда, может дополнительный потребоваться.

EDIT: ан-нет, нельзя
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.