Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
16.03.2016
Размер:
20.6 Mб
Скачать

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

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

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

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

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

Пропущенные значения и пустые строки

Программа Access поддерживает свойство Обязательное поле (Required) для всех типов данных. Но, возможно, для некоторых типов данных понадобятся дополнительные провер­ки. Это объясняется тем, что свойство Обязательное поле запрещает только незаполненные поля — поля, в которых нет совсем никаких данных. Но программа Access, что кажется не­сколько странным, различает пропущенные значения и пустые строки (empty text).

Пропущенное значение (null) означает отсутствие данных. Пустая строка свидетельству­ет о том, что значение поля было введено, но оказалось пустым. Все еще недоумеваете? Раз­ница существует, т. к. БД, такие как Access, должны распознавать пропущенные данные. Пропущенное значение может означать оплошность — возможно, кто-то просто забыл вве­сти значение, С другой стороны, пустая строка означает сознательное решение исключить данную информацию.

Примечание

Для того чтобы проверить эту разницу в своей таблице, создайте текстовое поле со значением свойства Обязательное поле, равным Да. Попытайтесь вставить новую запись и оставить ее пустой. (Access хладнокровно остановит вас.) Теперь попробуйте вставить новую запись, но поместите единственный пробел в поле. Происходит странная вещь: Access автоматически об­резает пробелы и, делая это, превращает ваш единственный пробел в пустую строку. Но вы не получите сообщения об ошибке, поскольку пустая строка — это не то же самое, что пропущен­ное значение.

К счастью, если вы сочтете это различие сбивающим с толку, можно запретить и пропу­щенные значения, и пустые строки. Просто установите в свойстве Обязательное поле (Required) значение Да для запрета пропущенных значений и в свойстве Пустые строки (Allow Zero Length) значение Нет для запрета пустых строк.

Примечание

Такое же различие существует и у данных числового типа. Даже если установить свойство Обязательное поле равным Да, вы все равно можете вставить значение 0. Если вы хотите помешать этому, нужно применить правила верификации, описанные в разд. "Правила вери­фикации или условия на значения" далее в этой главе.

Задание значений по умолчанию

До сих пор поля в ваших таблицах заполнялись явно человеком, вставлявшим запись или пропускавшим ее. Но есть еще одна возможность — вы можете определить значение по умолчанию. Теперь, если кто-то вставляет запись и пропускает поле, программа Access ис­пользует в нем значение по умолчанию.

Задается значение по умолчанию в свойстве поля Значение по умолчанию (Default Value). Для поля AddedCost (добавленная стоимость) числового типа вы могли бы оставить его равным 0. В текстовом поле Country (страна) можно использовать строку "U.S.A." как значение по умолчанию. (Все текстовые значения, используемые как значения по умолча­нию, должны быть заключены в кавычки.)

Программа Access выводит вес значения по умолчанию в строке, подготовленной для ввода новой записи, в нижней части таблицы (рис. 4.4). Она также автоматически вставляет значения по умолчанию в любые скрытые столбцы (см. разд. "Скрытие столбцов " главы 3).

Рис. 4.4. Эта служба знакомств использует четыре значения по умолчанию: стандартный рост (5.9), город по умолчанию (New York), штат по умолчанию (тоже New York — NY) и страну по умолчанию (U.S.A.). Такая система хороша, поскольку в большинстве новых записей содержится именно эта информация. С другой стороны, нет оснований предлагать значения по умолчанию для полей, содержащих имя и фамилию

Access вставляет значение по умолчанию, когда вы создаете новую запись (но вы всегда можете изменить это значение). Вы также можете во время редактирования поля вернуться к значению по умолчанию с помощью сочетания клавиш <Сtrl>+<Аlt>+<Пробел>.

Совет

Очень удобно использовать значение по умолчанию как отправную точку для новой записи. Например, когда создается новая запись в таблице, можно редактировать значение по умол­чанию, а не заменять его полностью другим значением.

Вы можете создать и более развитые динамические значения по умолчанию. Программа Access оценивает их, когда вы вводите новую запись, что означает зависимость выбранного значения по умолчанию от других данных записи. Динамические значения по умолчанию используют выражения (специальные формулы БД), способные выполнять вычисления или извлекать другие подробности. Одна полезная функция Date ( ) извлекает текущую дату, установленную на вашем компьютере. Если применить эту функцию как значение по умол­чанию для поля с датой (как показано на рис. 4.5), программа Access автоматически встав­ляет текущую дату при вводе новой записи.

Рис. 4.5. Если вы применяете функцию Date ( ), как значение по умолчанию в поле DateAcquired в таблице с куклами-болванчиками, то при каждой вставке новой записи о кукле программа Access вставляет текущую дату. Вы решаете — оставить ее или заменить другим значением

Примечание

Вы узнаете больше о выражениях языка SQL (Structured Query Language, язык структуриро­ванных запросов) в части II.

Предотвращение дублирования значений с помощью индексов

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

Но здесь есть подводный камень. Как вы узнали из главы 2, самый надежный способ — создание идентификационного поля (поля Код) для первичного ключа. До сих пор во все таблицы, которые вы видели, включалось такое поле. Но что, если вам нужно, чтобы другие поля тоже были уникальны? Представьте себе, что вы создаете таблицу Employees (сотрудники). Вы следуете правильным принципам проектирования БД и идентифицируете каждую запись автоматически генерируемым идентификационным номером. Но вы также хотите быть уверены в том, что в таблице нет двух сотрудников с одинаковыми номерами социального обеспечения (Social Security number, SSN), и, тем самым, желаете предупредить возможные ошибки — такие, как случайный повторный ввод данных об одном и том же со­труднике.

Примечание

Для того чтобы вспомнить, почему так важны идентификационные поля, еще раз прочитайте примечание "На профессиональном уровне. Как Access предотвращает дублирование записей" в разд. "Первичный ключ" главы 2. В таблице Employees вы конечно можете выбрать SSN в качестве первичного ключа, но ситуация будет далека от идеальной, когда вы начнете связы­вать таблицы друг с другом (см. главу 5), и возникнут проблемы, если позже понадобится из­менить номер социального обеспечения (например, из-за ошибки) или ввести информацию о сотруднике до того, как вы получите SSN.

Вы можете заставить поле требовать уникальных значений с помощью индекса. Индекс БД похож на предметный указатель в книге — это список значений (из поля) с перекрестной ссылкой, которая указывает на соответствующий раздел (полную запись). Если индексиро­вать поле SocialSecurityNumber, программа Access создаст список, подобный приведенному в табл. 4.1 и хранящийся в файле вашей БД.

Таблица 4.1. Список, хранящийся в БД после создания индекса

SocialSecurityNumber

Location of Full Record

001-01-3455

001-02-0434

001-02-9558

002-40-3200

С помощью этого списка программа Access может быстро определить, не дублируется ли в новой записи уже имеющийся SSN. Если это опасение подтверждается, Access не разрешит вставить такое значение.

Соседние файлы в папке Управление данными