Использование ограничений для обеспечения безопасности
Ограничения часто используют для поддержания целостности (данных, ссылочной или доменной). Более подробно о создании ограничений можно прочитать в главе 4. В настоящем разделе рассмотрены ограничения только в ракурсе системы безопасности. Ограничения целостности домена, такие как CHECK, проверяют данные на корректность формата и содержимого. К примеру, в базе данных ACME ограничение CHK_ADDR_TYPE проверяет корректность типа адреса: SHIPPING или BILLING. Теперь любая попытка ввести некорректные данные (к примеру, ‘HOME’) в поле типа адреса приведет к ошибке. Так данные защищают от нарушения целостности. Проверка данных перед их помещением в таблицу — довольно эффективное средство защиты информации. Еще один механизм поддержания доменной целостности обеспечивается с помощью значения по умолчанию. Это гарантирует отсутствие неопределенных значений NULL, даже если данные не вводятся явно. В следующем примере (использован синтаксис Microsoft SQL Server) определяется значение по умолчанию, присваиваемое столбцу CUST_STATUS_S, если в инструкции INSERT оно не будет указано явно.
До сих пор не утихают дискуссии по вопросу, чем являются значения по умолчанию: брешью в системе защиты или эффективным механизмом системы безопасности. С одной стороны, они обеспечивают целостность данных, что совсем неплохо. Однако с другой стороны, они в некоторой мере снимают ответственность с пользователя за ввод точных данных и к тому же облегчают работу вредителям при внесении в базу данных посторонней информации. Целостность сущности поддерживается индексами и ограничениями, такими как UNIQUE или PRIMARY KEY. Они исключают возможность ввода пользователем дублирующихся значений. К примеру, применив эти ограничения к столбцу номера карточки социального обеспечения (SSN), можно избежать повторения этого номера в разных строках для разных имен людей.