Проверка - целостность данных - PullRequest
2 голосов
/ 26 мая 2010

В таблице можно хранить только 10 записей в определенном состоянии, например, 10 пользователей старше 30 лет, остальные должны быть не старше 30 лет.Это бизнес-правило и как таковое должно соблюдаться.Как обеспечить это состояние?Подумайте: несколько пользователей получают доступ к этой таблице.

Явная блокировка?

Ответы [ 3 ]

1 голос
/ 26 мая 2010

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

1 голос
/ 26 мая 2010

Либо создайте некую некрасивую процедуру для базы данных (и навсегда ее возненавидит тот, кто вынужден ее поддерживать), либо просто примените правило на уровне бизнеса (возможно, в каком-то методе storeUser (User user)). Если у вас в коде много разных мест, где вы храните пользователей, это будет ценным уроком в архитектуре:)

0 голосов
/ 26 мая 2010

SIRA_PRISE позволяет вам просто объявить это ограничение в алгебраической форме, а SIRA_PRISE обеспечит ваше ограничение для вас без необходимости писать какой-либо код.

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

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

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