Блокировка неправильных данных

 

Даже лучшие проектировщики БД проводят бессонные ночи, тревожась об ошибках, способных проникнуть в их БД. Неверные данные — печально известная проблема, эти данные проникают в БД, прячутся там с течение месяцев и проявляют себя, только когда вы отправили по электронной почте счет клиенту "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 находит пропущенное значение, она останавливает поиск и спрашивает вас, что делать. Вы можете сохранить изменения (даже если они конфликтуют хотя бы с одной записью) — в итоге, по крайней мере, новые записи не будут порождать подобную проблему. Другой возможный вариант — вернуть прежнее, более терпимое значение свойству поля. В любом случае вы можете найти пропущенные данные, отсортировав данные с помощью вопроса, выводящего незаданные значения в верхние строки таблицы

 

Для тех, кто понимает. Не требуйте слишком многого

 

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

Например, компания, продающая костюмы Элвиса, возможно, не захочет вставлять новый комплект одежды в свою таблицу Products (изделия), пока он не будет полностью готов. Свойство Обязательное поле в данном случае хорошее подспорье, поскольку не даст включить в каталог незавершенные изделия.

С другой стороны, такая строгость не годится в таблице Customers (клиенты) той же компании. Отделу продаж нужна гибкость при добавлении новых предполагаемых клиентов, даже если предоставлена только частичная информация. Потенциальный клиент может позвонить и оставить только почтовый адрес (без номера счета, номера телефона, адреса электронной почты и т. п.). Даже в этом случае, не имея полной информации о клиенте, вы должны включить его в таблицу Customers, для того чтобы он или она получали ежемесячный информационный бюллетень.

 

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

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100