Хорошо ли использовать контрольные ограничения для бизнес-правил

В настоящее время мы используем контрольные ограничения для реализации бизнес-правил, но я хочу знать, следует ли нам внедрять бизнес-правила в SQL или на уровне бизнес-логики (C #). Я искал в сети и обнаружил, что контрольные ограничения хороши в использовании.

Пожалуйста, дайте мне знать, если кто-то знает более подробную информацию об этом. Еще одна вещь заключается в том, что данные можно закачивать в мою базу данных с помощью мобильного приложения, а также с помощью веб-приложения.

Да, проверки ограничений являются допустимым инструментом для бизнес-правил.

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

Целостность данных является ключевым; система не имеет большого значения, которая позволит человеку хранить что-то, что не соответствует бизнес-правилам, если приложение обходит. Это также облегчает жизнь, если логика находится в базе данных для ситуаций, когда исходное приложение находится на C #, а высшее руководство решило, что рынку нужна версия Java / Ruby / Python / etc.

Да, это хорошо!

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

Зачем? Представьте, что кому-то удалось отправить некоторые данные в вашу базу данных, не используя ваше приложение, – если у вас есть ваши чеки только в приложении, эти проверки не применяются.

Если у вас есть свои чеки в базе данных, вы можете убедиться, что данные в базе данных соответствуют, по крайней мере, тем простым проверкам, которые могут быть сформулированы в SQL CHECK CONSTRAINTS.

Определенно используйте их! Вам необходимо попытаться сохранить качество данных как можно выше – добавление ссылочной целостности, проверки ограничений и уникальных ограничений и т. Д. В базе данных поможет вам это сделать.

Не полагайтесь только на свое приложение!

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

Трудно определить строгие бизнес-правила в SQL. Придерживайтесь проверки данных в базе данных и фактических бизнес-правил в приложении.

Кроме того, постарайтесь упорядочить схему таким образом, что затрудняет ввод плохих данных с помощью внешних ключей и т. П.

Поскольку более «интеллектуальная» – ваша база данных, более надежной будет целостность содержащихся в ней данных. Итак, да, я думаю, что это хорошо и важно для его реализации.

Это дает множество преимуществ: вы можете гарантировать, что ваши данные будут защищены, если есть несколько приложений, изменяющих данные (например, приложение C # + приложение для веб-приложений + мобильное приложение …), и это позволяет вам меньше работать в эти «секретные» приложения. Если база данных выполняет всю работу, приложения являются только интерфейсом для базы данных.

В будущем будет проще переносить приложения, но будет более сложным для переноса базы данных. Это важное решение.

Зависит от ограничений

  1. Это зависит от ограничений
  2. Вы также должны стараться избегать (если возможно) того же ограничения, что и в двух местах – это означает, что в вашей системе дублируется код , что приводит к ненужной сложности.

Существуют некоторые ограничения, которые могут и должны применяться в базе данных, например, ограничения внешнего ключа и уникальность. База данных сможет применять их быстро и эффективно.

Другие более сложные «бизнес-ограничения» лучше применяются на уровне бизнес-логики. Примерами таких могут быть: «у клиента должен быть утвержденный адрес электронной почты, прежде чем разрешить покупку». Они были бы сложными и обременительными для применения в базе данных – вы рискуете кодировать свою систему в SQL, которая является плохой идеей.

C #. Гораздо проще повторно использовать логику на C #, чем SQL (по моему опыту) и вообще поддерживать.

  • SQL Server: как проверить, установлено ли в поле ограничение «NULL» или «NOT NULL»?
  • Как переименовать ключи («PK_») и ограничения («DF_») автоматически при переименовании таблицы и / или столбца в SQL Server?
  • Применение правила
  • Ограничение поля SQL
  • Переименовать ограничение в SQL Server?
  • Временное отключение ограничений (MS SQL)
  • UNIQUE CONSTRAINT в столбце из внешней таблицы в SQL Server 2008
  • столбец с заданным значением длины
  • Как сделать это ограничение в SQL Server?
  • Ограничение SQL Предотвращает получение книги дважды
  • Как сопоставить разные числа с manys с тем же ограничением
  • Давайте будем гением компьютера.