Программа для отображения содержания накладных и связанных с ними списков книг готова. Ее можно запустить и просматривать накладные. Однако не рекомендуется вставлять, редактировать или удалять записи в накладных и списках книг, пока в программе не реализован комплекс бизнес-правил.
Бизнес-правила определяют реакцию системы на добавление, изменение или удаление данных, обеспечивая непротиворечивость и ссылочную целостность БД.
Если, например, для какой-либо накладной удалить запись о книге из ее списка книг, то программа должна автоматически изменить сумму в соответствующей накладной, количество книг на складе и сальдо партнера, в противном случае будут получены недостоверная накладная, неверное количество книг и ошибочное сальдо. Таким образом, корректная реакция программы на удаление записи о книге и есть бизнес-правило удаления книг.
Бизнес-правила разрабатываются на основе тщательного изучения автоматизируемой области человеческой деятельности.
Для файл-серверных систем они обычно реализуются в комплексе обработчиков событий AfterXXXX - BeforeXXXX компонентов-наборов данных TTable или TQuery.
В клиент-серверных и некоторых локальных системах эти действия, как правило, реализуются на сервере БД с помощью триггеров - процедур, которые автоматически запускаются при вставке, изменении или удалении записей.
Рассмотрим небольшой пример, реализующий часть бизнес-правил, связанных с удалением данных о накладной. Перед удалением данных о накладной надо удалить список связанных с ней книг, иначе в таблице MOVEBOOK появятся записи, которые ссылаются на несуществующую запись в таблице NAKLS.
Примечание. Для данного примера при правильном проектировании БД, в частности задания свойства каскадное удаление, собственно корректное удаление будет выполнено автоматически за счет средств самой СУБД. Однако при более сложных бизнес-правилах, когда удаление данных требует дополнительной обработки БД, ответственность за правильное выполнение удаления все равно ляжет на программиста.
Наиболее подходящим местом для реализации этого бизнес-правила является обработчик события BeforeDelete набора данных tbNakls. Это событие автоматически генерируется перед удалением записи.
Перейдите к форме модуля данных, щелкните на НД tbNakls в правой панели модуля и дважды щелкните в строке события BeforeDelete в окне инспектора объектов. Напишите такой обработчик события:
procedureTDM.tbNaklsBeforeDelete(DataSet: TDataSet);