Смекни!
smekni.com

Компьютерные технологии в товароведении и экспертизе товаров (стр. 23 из 32)

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

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

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

Если при определении связи установить флажок Каскадное обновление связанных полей, любое изменение значения в ключевом поле главной таблицы приведет к автоматическому обновлению соответствующих значений во всех связанных записях. Например, при изменении кода клиента в таблице “Клиенты” будет автоматически обновлено поле “КодКлиента” во всех записях таблицы “Заказы” для заказов каждого клиента, поэтому целостность данных не будет нарушена. Microsoft Access выполнит каскадное обновление без ввода предупреждающих сообщений.

Типы ограничений

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

В современных СУБД имеются средства поддержания целостности данных. Гораздо сложнее дело обстоит с ошибками в допустимых значениях данных. Такие ошибки условно называются арифметическими, хотя это не совсем точно, так как ошибочно может быть записано значение текстового данного, однако существует ряд средств для выявления арифметических ошибок, однако на пользовательском уровне ограничиваются простым визуальным контролем.

Ограничения можно определять на двух уровнях:

1. В базе данных. Ограничения в базе данных ассоциируются с определениями объектов-таблиц. Например, для таблицы может быть установлено ограничение, которое требует, чтобы каждое значение в столбце было уникальным.

2. В приложении Access (в программном коде или свойствах объектов). Ограничения в приложении ассоциируются с объектами приложения, которые формируют интерфейс к информации базы данных. Например, текстовое поле может иметь ограничение, которое требует, чтобы все вводимые в него значения были больше 20.

Размещение ограничений в базе данных имеет следующие преимущества:

- централизация. Ограничение базы данных определяется только один раз и может автоматически использоваться всеми клиентами, обращающимися к базе данных. Определение ограничения в базе данных освобождает разработчика от необходимости вносить одни и те же ограничения в каждую форму, которая использует данную информацию. Кроме того, при необходимости модифицировать ограничение изменения вносятся только в один объект;

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

- простота. Ограничения базы данных просты в определении и не требуют никакого программного кода.

Ограничение Unigue

Ограничение – некоторое ограничивающее условие. В базе данных – общее понятие, охватывающее широкий круг аспектов управления базой данных: ключи, значения, типы и форматы данных и т. д. Ограничения устанавливают для пользователя некоторые рамки при вводе, изменении или удалении данных приложения. Вся система ограничений при создании приложения базы данных строится с целью обеспечения целостностиданных.

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

Чтобы установить ограничение Unigue для одного поля таблицы:

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

2. В панели свойств для свойства Индексированное поле установить значение "Да (Совпадения не допускаются)".

Чтобы установить ограничение Unigue для нескольких полей таблицы:

1. В режиме конструктора открыть окно индексов и создать составной индекс, включив в него поля, в которые должен быть, запрещен ввод повторяющихся значений.

2. Выбрав имя индекса, в панели свойств индекса в ячейке свойства Уникальный индекс установить значение "Да".

Ограничения Not Null

Ограничение Not Null запрещает ввод в столбец таблицы пустых значений. Оно всегда применяется к отдельным столбцам. Ограничения Not Null используются, чтобы гарантировать, что для важных данных всегда имеются значения. Например, это ограничение можно использовать, чтобы гарантировать, что в записи каждого служащего в базе данных проставлено его жалованье. При определении структуры таблицы это ограничение задается установкой значений свойств Обязательное поле и Пустые строки поля таблицы. Необходимо различать два типа пустых значений: пустые значения и пустые строки. В некоторых ситуациях поле может быть оставлено пустым потому, что данные для него либо существуют, но пока неизвестны, либо их не существует вовсе. В связи с этим и различают два типа пустых строк. Например, если в таблице есть поле "Номер факса", то оно может быть пустым потому, что пользователь не знает, есть ли у клиента номер факса или нет, или потому, что он знает, что номера факса у клиента нет. Таким образом, если поле имеет пустое значение, то это означает, что его значение неизвестно. Если же введена пустая строка (два знака прямых кавычек (" ")), то это означает, что строкового значения нет.

Ограничения Primary Key

Ограничение Primary Key гарантирует, что каждая строка в таблице будет уникально идентифицирована значением в столбце или наборе столбцов первичного ключа. Ограничение по первичному ключу объединяет черты ограничения 0пiцие и ограничения Unigue и Not Null.

Обычно рекомендуется включать ограничение Primary Key в каждой создаваемой таблице. Использование первичного ключа может значительно повысить быстродействие доступа к строкам таблицы. Ограничение Primary Key также используется для поддержания ссылочной целостности, когда в базе данных определены отношения один-к-многим. Установка ссылочной целостности позволяет поддерживать соответствие между главной и подчиненной таблицами. Для поддержания ссылочной целостности ограничения Primary Key используются в комбинации с ограничениями Primary Key, описанными ниже.

Ограничения Foreign Key

Ограничение Foreign Key (внешний ключ) гарантирует, что каждое значение, введенное в столбец, уже существует в некотором другом столбце (обычно в другой таблице). Ограничения Foreign Key обычно используются для поддержания ссылочной целостности, когда в базе данных определены отношения один-к-многим. Ограничения Foreign Key всегда используются вместе с ограничениями Foreign Key (описанными в предыдущем разделе). В отношении один-к-многим внешний ключ – столбец в подчиненной таблице, которая содержит идентификатор строки в главной таблице. Значение в столбце внешнего ключа равно значению в столбце первичного ключа в другой таблице. Также, в отношении один-к-одному каждая строка в подчиненной таблице соответствует уникальной строке в главной таблице, одной строке в главной таблице может соответствовать любое количество строк в подчиненной таблице.

Поиск и замена данных

1. Поиск конкретных вхождений образца в поле

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

Подстановочные знаки используются в качестве прототипов для других символов при указании образца поиска в следующих случаях:

· Известна только часть значения.

· Требуется найти значения, начинающиеся с конкретной буквы или соответствующие определенному шаблону.

Для задания параметров поиска нужно щелкнуть на кнопке Поиск. Откроется диалоговое окно поиска. В поле “Просмотр” можно выбрать направление просмотра: “Все”, “Вверх” или “Вниз”. В поле “Совпадение” можно выбрать режим сравнения: “Поля целиком”, “С начала поля”, “С любой частью поля”. Для поиска значений полей, записей или имен файлов допускается применение следующих символов в диалоговых окнах Поиск и Замена или в запросах, командах и выражениях.

* Cоответствует любой цифре или любому символу. Может использоваться в качестве первого или последнего символа текстовой строки.
Например, wh* — поиск слов what, white и why.
? Соответствует любому текстовому символу. Например, B?ll — поиск слов ball, bell и bill.
[ ] Соответствует любому одному символу из заключенных в скобки.
Например, B[ae]ll — поиск слов ball и bell, но не bill.
! Соответствует любому одному символу, кроме заключенных в скобки.
Например, b[!ae]ll — поиск слов bill и bull, но не bell или ball.
Соответствует любому символу из диапазона. Необходимо указывать этот диапазон по возрастанию (от A до Z, но не от Z до A).
Например, b[a-c]d — поиск слов bad, bbd и bcd.
# Соответствует любой цифре. Например, 1#3 - поиск значений 103, 113, 123.

2. Создание фильтра