Нужно ли проверять данные на уровне базы данных? - PullRequest
13 голосов
/ 14 июля 2009

Я пишу некоторые хранимые процедуры для создания таблиц и добавления данных. Одним из полей является столбец, который указывает процент. Значение там должно быть 0-100. Я начал думать: «Где должна проводиться проверка данных? Где вообще должна проводиться проверка данных? Это индивидуальная ситуация?»

Мне приходит в голову, что, хотя сегодня я решил, что 0-100 является действительным значением для процента, завтра я могу решить, что любое положительное значение является допустимым. Так что это может быть бизнес-правилом, не так ли? Следует ли реализовать бизнес-правило на уровне базы данных?

Просто ищите руководства, у нас здесь больше нет базы данных.

Ответы [ 12 ]

0 голосов
/ 14 июля 2009

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

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

Задача состоит в том, чтобы структурировать уровень приложения так, чтобы привратник был чистым и не дублировался.

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

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

0 голосов
/ 14 июля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...