Ограничение бизнес-логики на уровне приложения в лучшем случае недальновидно. Опытные профессиональные разработчики баз данных редко допускают это в своих системах. База данных должна иметь ограничения, триггеры и хранимые процедуры, чтобы помочь определить, как в нее будут поступать данные из любого источника.
Если база данных должна поддерживать свою целостность и гарантировать, что все источники новых данных или изменений данных следуют правилам, база данных - это место для размещения необходимой логики. Если говорить о прикладном уровне, это ждет своего часа кошмар с данными. Базы данных не получают информацию только из одного приложения. Бизнес-логика в приложении часто непреднамеренно игнорируется импортом (предположим, что у вас появился новый клиент, который хотел, чтобы его старые исторические данные были импортированы в вашу систему, или большое количество целевых записей, никто не собирается вводить миллион возможных целей через интерфейс, это произойдет при импорте.) Это также игнорируется изменениями, внесенными через окно запроса, чтобы исправить разовые проблемы (например, повышение цен на все продукты на 10%). Если у вас есть логика прикладного уровня, которая должна была быть применена к изменению данных, ее не будет. Теперь можно поместить его и на прикладной уровень, нет смысла отправлять неверные данные в базу данных и тратить впустую полосу пропускания сети, но неспособность поместить их в базу данных рано или поздно вызовет проблемы с данными.
Еще одна причина хранить все это в базе данных связана с возможностью совершения пользователями мошенничества. Если вы поместите всю свою логику на уровень приложения, вы должны предоставить пользователям доступ непосредственно к таблицам. Если вы инкапсулируете всю свою логику в сохраненные процессы, они могут быть ограничены выполнением только того, что позволяют хранимые процессы, а не чем-либо еще. Я бы не стал рассматривать возможность какого-либо доступа пользователей к базе данных, в которой хранятся финансовые записи или личная информация (например, медицинские записи), поскольку я не позволю никому, кроме пары dbas, напрямую обращаться к производственным записям в любой форме или форме. . Совершается больше мошенничества, чем думают многие разработчики, и почти никто из них не учитывает возможность в своем дизайне.
Если вам нужно импортировать большой объем данных, прохождение уровня доступа к данным может замедлить импорт до обхода, поскольку он не требует преимуществ операций на основе наборов, которые базы данных предназначены для обработки.
person
HLGEM
schedule
24.09.2009