Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2018, 12:25   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Момент по проектированию БД

Доброе время суток,

Ситуация следущая:
Имеется несколько отделов и плановый отдел, все отделы имеют право состовлять договора, но только плановый может назначать уже сделанным договорам номера (поле «number») и если что отправлять их в архив (статутс «архив» поле «archive»).
Т.к. большинство полей совпадает, то у меня все договора по всем отделам в том числе и планового, содержатся в одной таблице.

Наверняка, в процессе работы с БД, появятся коллизии в плане редактирования одной и той же записи в одно время обычным и плановым отделом.
Например когда обычный отдел редактирует свой договор, а плановый отдел захочет присвоить ему номер, то сохранится та запись (того dataset), которая позже сохранилась, или такая же ситуация может произойти с редактированием поля «archive».

Для избежания таких ситуаций (с однвременным доступом к одной той же записи), мне наверно нужно перенести общие поля (такие как «number» и «archive») в другую таблицу с конкретным ID записи конечно.

Вопрос:
Это правильный выход, чтоб избежать этой ситуации? Или есть еще вариант?

Спасибо за ответ
KBO вне форума Ответить с цитированием
Старый 09.04.2018, 11:52   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

НЕ пользоваться "прямой" редакцией набора данных, а использовать для внесения исправлений SQL( и только для действительно изменяемых полей).
Код:
update dogovor set num=.., archive=1  //для планового отдела

update dogovor set num=.., archive=1.... // для прочих отделов
where ...
 and archive =0 //и дополнительно можем проверить, вдруг его УЖЕ(только что) "заблокировали"(убрали в архив) плановики
+ внести данные операции в ХП(хранимые процедуры СУБД) и назначить им(ХП) разрешенияБ т.е. права пользователей(плановики/обычные пользователи).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.04.2018 в 11:58.
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Литература и прочие материалы по проектированию Квэнди Общие вопросы по программированию, компьютерный форум 20 02.04.2024 09:40
Задания по проектированию СУБД Korobka Помощь студентам 0 23.12.2015 06:09
Проектированию табл и связь Айдар БД в Delphi 5 08.12.2012 16:05
Как отследить момент момент добавления новой записи? artemavd БД в Delphi 4 11.09.2012 09:17
Вопросы по проектированию БД FB25 delphicoding БД в Delphi 8 21.03.2012 13:03