Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник(Семенова).doc
Скачиваний:
13
Добавлен:
26.08.2019
Размер:
9.15 Mб
Скачать

Не соответствующих типу поля

Зачастую возникает потребность в более жестких ограничениях. Рассматривая в качестве примера все ту же таблицу «Студент», реализуем такое ограничение целостности, как «Значение поля «курс» должно находиться в интервале от 1 до 5». В СУБД ACSESS достаточно в режиме конструктора внести соответствующее логическое выражение в строку «Значение на параметр» и заполнить строку «Сообщение об ошибке» (рис. 15).

Рис.15. Пример реализации ограничения целостности

Для задания интервала значения числового поля в субд access

Существуют достаточно простые способы задания такого ограничения целостности и в СУБД FoxPro.

Так, например, как для ввода нового значения (в пустое поле), так и для редактирования имеющегося можно воспользоваться командой редактирования @ … SAY … GET … READ

@ 2,4 SAY «Ведите курс» GET kurs VALID kurs>0 .AND. kurs<=5; ERROR «Ошибка! Значение поля должно быть в интервале от 1 до 5»

READ

В более сложных случаях в опции VALID может быть указано не логическое выражение, а пользовательская функция.

Реализация ограничений целостности для полей строкового типа зачастую предполагает использование функций. Так, в частности, для организации контроля за тем, чтобы Фамилия, Имя, Отчество содержали буквы кириллицы, можно использовать, например, функцию Asc(), которая возвращает ASCII код первого символа строки, являющейся аргументом. Как известно, символам кириллицы в таблице кода ASCII соответствуют коды со 128 по 175 и с 224 по 239. В связи с этим вводимое значение (по крайней мере первый символ) должно удовлетворять следующему логическому выражению: Asc([Имя])>=128 And Asc([Имя])<=175 Or Asc([Имя])>=224 And Asc([Имя])<=239. Однако, исходя из здравого смысла и учитывая, что значениям кода со 176 по 123 соответствуют символы псевдографики, можно записать и более простое логическое выражение (рис. 16).

Рис. 16. Пример реализации ограничения целостности

По формату и интервалу значений в субд access

Следует обратить внимание на то, что дополнительные возможности для контроля за вводом данных обеспечивает задание маски ввода. Так, в частности, маска «>L<???????????????» обеспечивает ввод с клавиатуры символов латиницы и кириллицы, причем первый символ – автоматически преобразуется в прописной, что предопределено наличием в маске знака «>», а остальные буквы будут строчными в связи с присутствием в маске знака «<».

Следует заметить, что использование маски ввода при описании структуры таблицы в СУБД ACCESS предоставляет широкие возможности для реализации ограничений целостности.

При этом нецелесообразно использовать маску ввода одновременно с форматом поля, который обеспечивает лишь заданное отображение данных на экране и не влияет на то, в каком виде хранятся данные.

Использование маски ввода облегчает процесс вода данных, предоставляя пользователю некоторый шаблон или автоматически выполняя какие-либо преобразования. Так в предыдущем примере в независимости от того, с использованием какого регистра пользователь будет вводить данные в поле «Имя», на экран значение поля будет выводиться и в базе данных будет храниться в соответствии с заданной маской. Для задания маски могут использоваться различные символы, задавая разнообразные правила преобразования данных (табл. 5).

Приведем несколько примеров конкретного применения маски ввода для данных, которые должны вводиться и сохраняться в заданном формате.

Таблица 5

Символы, используемые для создания масок ввода

Символ

Описание

0

На заданном месте обязательно стоит цифра (0-9)

9

На заданном месте стоит цифра либо пробел, либо ничего

#

Цифра, пробел, знаки плюс (+) и минус (-), введенные пробелы при сохранении удаляются

L

На заданном месте обязательно символ кириллицы или латиницы

?

На заданном месте либо символ кириллицы или латиницы, либо ничего

A

Буква или цифра, обязательный символ

a

Буква или цифра, необязательный символ

&

Любой символ или пробел, обязательный символ

C

Любой символ или пробел, необязательный символ

>

Преобразование букв к прописным

<

Преобразование букв к строчным

!

Заполнение данных справа налево

\

Символ, следующий за этим знаком выводится как константа

PASSWORD

Вводимые символы отображаются в виде звездочек, а сохраняются в том виде, в каком введены

Все известно, что регистрационный номер транспортного средства имеет следующий формат: БЦЦЦББ (здесь «Б» обозначает заглавную букву, «Ц» - любую цифру). Ограничение целостности должно быть сформулировано следующим образом: «Для базы данных «Автовладелец» в таблице «Автомобиль» необходимо обеспечит ввод данных в поле «регистрационный номер автомобиля» по формату: первый символ – большая буква, кириллицы, второй, третий и четвертый символ – цифра, пятый и шестой символ - большая буква, кириллицы». Ограничение целостности можно определить через свойства поля так, как показано ниже, задав и маску ввода, и условие на значение (рис. 17).

Рис.17. Пример реализации ограничения целостности в СУБД ACCESS для задания формата данных(поле «регистрационный № авто»)

Создает определенные удобства в работе и одновременно обеспечивает реализацию ограничений целостности, задание маски для ввода значения в поле «№ телефона» (рис. 18).

Рис. 18. Пример реализации ограничения целостности в СУБД ACCESS