Блокировка неправильных данных
Даже лучшие проектировщики БД проводят бессонные ночи, тревожась об ошибках, способных проникнуть в их БД. Неверные данные — печально известная проблема, эти данные проникают в БД, прячутся там с течение месяцев и проявляют себя, только когда вы отправили по электронной почте счет клиенту "Blank Blank" ("Пробел пробел") или продали мешок арахиса за -4.99 долларов.
Лучший способ борьбы с подобными проблемами — прежде всего, помешать некорректным данным проникать в вашу БД. Другими словами, нужно задать правила проверки, которые отвергают подозрительные данные в момент их ввода. После того как неверные данные попали в БД, найти их труднее, чем иголку в стоге сена.
В этой главе описан основной набор средств проверки, имеющийся у программы Access:
§основные, включая совпадения, обязательные поля и значения по умолчанию;
■ маски ввода, форматирующие, с помощью образцов обычный текст, такой как почтовые коды и телефонные номера;
■ правила верификации (validation rules), устанавливающие строгие правила для полей, не подчиняющихся никаким законам;
■ подстановки (lookups), ограничивающие возможные значения списком заранее заданных вариантов.
О целостности данных
Все средства проверки программы Access реализованы в режиме Конструктора, с которым вы познакомились в главе 2. Для их применения вы выбираете поле и настраиваете его свойства. Единственная сложность — знать, какие свойства наиболее полезны. Некоторые из них описаны в главе 2, но в следующих разделах вы найдете дополнительные подробности.
Совет
Программа Access предоставляет три варианта переключения в режим Конструктора.Можно щелкнуть правой кнопкой мыши на заголовке вкладки таблицы и выбрать из меню команду Конструктор,использовать кнопку Режимна вкладке ленты Главнаяили воспользоваться крошечными кнопками режима в правом нижнем углу окна программы Access. Если вы очень нетерпеливы, то можете даже не открывать вашу таблицу, а просто найти ее в области переходов, щелкнуть ее правой кнопкой мыши и выбрать команду Конструктор.
Запрет незаполненных полей
Для того чтобы каждая запись имела какой-то смысл, в ней должен быть хотя бы абсолютный минимум информации. Без вашей помощи программа Access не может отделить важную информацию от необязательных деталей. По этой причине все поля в новой таблице определены как необязательные, за исключением поля первичного ключа (которое обычно содержит идентификационный номер записи). Убедитесь в этом с помощью таблицы Dollsиз главы 1; вы быстро обнаружите, что можете вставлять записи, фактически не содержащие данных.
Этот недостаток легко исправить. Просто выберите в Конструкторе поле, которое обязательно должно быть заполнено и задайте в свойстве Обязательное поле(Required) значение Да (рис. 4.1).
Рис. 4.1. Свойство Обязательное полесообщает программе Access о запрете пропущенных значений (именуемых на профессиональном жаргоне null)
Access проверяет свойство Обязательное полепри каждом добавлении новой записи или исправлении поля в уже имеющейся записи. Но если в вашей таблице уже есть данные, нет гарантии, что они соответствуют установленным правилам.
Представьте, что вы внесли в таблицу Dollsсведения о нескольких куклах-болванчиках до того, как решили, что в поле Characterобязательно должно быть значение. Вы переключаетесь в Конструктор,выбираете поле Characterи заменяете значение свойства Обязательное полена Да. Когда вы сохраняете таблицу (возвращаясь в Режим таблицыили закрывая таблицу), программа Access дает вам возможность проверить записи о куклах-болванчиках,
уже внесенных в таблицу (рис. 4.2). Если вы выбираете выполнение проверки и Access обнаруживает проблему, программа позволяет вам отменить внесенные корректировки (рис. 4.3).
Рис. 4.2. Это хорошая идея проверить таблицу на соответствие новым требованиям, которые вы установили. В противном случае некорректные данные могут остаться в БД. Не дайте этому сообщению запугать вас — пока у вас нет десятков тысяч записей, такая проверка не займет много времени
Рис. 4.3. Если программа Access находит пропущенное значение, она останавливает поиск и спрашивает вас, что делать. Вы можете сохранить изменения (даже если они конфликтуют хотя бы с одной записью) — в итоге, по крайней мере, новые записи не будут порождать подобную проблему. Другой возможный вариант — вернуть прежнее, более терпимое значение свойству поля. В любом случае вы можете найти пропущенные данные, отсортировав данные с помощью вопроса, выводящего незаданные значения в верхние строки таблицы
Для тех, кто понимает.