crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> SQL и совместное редактирование данных
Majestio
  опции профиля:
сообщение 17.3.2013, 20:13
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Возможно вопрос не совсем по Qt, а скорее по использованию БД, тем не менее... Вопрос есть, попробую задать сюда :unsure:
Вопрос о многопользовательском доступе к данным в БД.

Ситуация

Пользователь1 открыл на редактирование "Карточку клиента #n" и находится в процессе редактирования. В этом процессе участвует еще куча таблиц из БД, отвечающих за привязку карточки к различным Рубрикаторам/Признакам/Таблицам как угодно. В них тоже вносятся изменения.

Пользователь2 открыл ту же "Карточку клиента #n" ... прочитал ее содержимое и ... удалил ее и все привязки, посчитав все это ненужным (имеет право). Ну или отредактировал.

Вопрос

Как правильно обработать ситуацию для Пользователя1? Какие есть готовые подходы/решения/сценарии/реализации?

Сообщение отредактировал Majestio - 17.3.2013, 20:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 18.3.2013, 10:00
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Можно сделать например таблицу блокировок, и когда пользователь открывает какую либо карточку, добавлять туда что карточка открыта для чтения/редактирования в такое то время. Тогда другим пользователям запрещать удаление если карточка открыта для редактирования.

А можно удалять карточку, а первому пользователю предлагать на выбор - пересоздать карточку или отказаться от операции ( и например показывать кто удалил :lol: )

Вообще все зависит от контекста программы - какие действия будут выглядеть наиболее правильными и логичными.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2013, 21:22
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тут многое зависит от применяемой СУБД. В Firebird для этого есть соответствующие "уровни изоляции" у транзакции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 4.4.2013, 5:49
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Всем спасибо за обсуждение - пришел к выводу, что в контексте моей разработки логичнее блочить записи. Ибо редактирование может быть многоступеньчатым - его "откаты" из-за вмешательств со стороны буду непонятны и пользователю, и программно, вернее логически не получается их обработать понятно. Поэтому просто недопускаем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 19:52