Для поиска определенной записи в базах данных можно ввести номер нужной записи в поле номера записи в левом нижнем углу окна таблицы.

С помощью диалогового окна "Поиск" можно найти записи с конкретным содержанием или определенные значения в полях. Это стандартное средство Windows - команда ПРАВКА/НАЙТИ. Имеется возможность перехода по записям по мере обнаружения каждого вхождения нужного элемента. Если требуется заменить конкретные обнаруженные при поиске значения, следует воспользоваться диалоговым окном "Замена". Искомая информация может быть и не уникальной, например, когда отыскиваются все клиенты, проживающие в одном городе.

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

* - любое количество букв, цифр или других символов;

? - любой один текстовый символ;

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

- - любой символ из диапазона, его следует указывать по возрастанию, т.е. [Е-У], а не [У-Е];

# - любая одна цифра.

Ускорить поиск нужной записи можно и с применением сортировки данных по одному или нескольким полям таблицы - команда ЗАПИСИ/СОРТИРОВКА.

Чтобы при поиске в таблицах видеть только записи, определяемые заданным критерием, используется фильтрация (ЗАПИСИ/ФИЛЬТР).

Например, для того, чтобы из таблицы, приведённой на рис. 5.1, выбрать записи для клиентов, проживающих в Самаре, достаточно открыть нужную таблицу, в поле "ГОРОД" выделить запись "Самара" и задать команду ЗАПИСИ/ФИЛЬТР/ФИЛЬТР ПО ВЫДЕЛЕННОМУ.

Рис. 5.1. Таблица "КЛИЕНТЫ" – исходный вид

Результат действия этой команды показан на рис. 5.2.

Рис. 5.2. Таблица "КЛИЕНТЫ" после фильтрации

Если необходимо задать критерии выборки записей более, чем по одному полю, удобно применить команду ЗАПИСИ/ФИЛЬТР/РАСШИРЕННЫЙ ФИЛЬТР. Эта команда выводит бланк фильтра (см. рис. 5.3), в который следует ввести поля (перетаскиванием мышью или двойным щелчком) и условия отбора по соответствующему полю (здесь выбираются клиенты, чья фамилия начинается на "П" и имеющие кредит выше 1000).

Рис. 5.3. Пример бланка фильтра

После заполнения бланка задается команда ЗАПИСИ/ПРИМЕНИТЬ ФИЛЬТР. Результат действия расширенного фильтра приведён на рис. 5.4.

Рис. 5.4. Результат действия на таблицу "КЛИЕНТЫ" фильтра рис.5.3.

Результаты фильтрации отображаются непосредственно в таблице и, как правило, не сохраняются для дальнейшего использования. Чтобы снять фильтр и снова вывести на экран все записи, ранее отображавшиеся в таблице, следует применить команду ЗАПИСИ/УДАЛИТЬ ФИЛЬТР. Условия фильтрации (и обычного, и расширенного фильтра) сохраняются при сохранении таблицы, если предварительно фильтр не удалён. Их можно посмотреть командами ЗАПИСИ/ФИЛЬТР/ИЗМЕНИТЬ ФИЛЬТР или ЗАПИСИ/ФИЛЬТР/РАСШИРЕННЫЙ ФИЛЬТР. Таким образом, в случае необходимости повторной фильтрации по тем же критериям фильтр заново создавать не нужно, достаточно в открытой таблице применить команду ЗАПИСИ/ПРИМЕНИТЬ ФИЛЬТР.

Описанные выше приёмы фильтрации применяются и при поиске данных в запросах и формах.

Перечисленные простейшие средства поиска данных используются в небольших базах данных и для простых критериев поиска. В более сложных случаях следует использовать запросы (см. раздел 7).

 

ИНДЕКСИРОВАНИЕ

 

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

В Access допускается определение первичных ключей трех типов:

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

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

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

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

Рис. 6.2. Пример таблицы, требующей создания составного ключа

Для создания составного ключа следует в режиме конструктора выделить нужные поля, удерживая клавишу CTRL, а затем выполнить команду ПРАВКА/КЛЮЧЕВОЕ ПОЛЕ (кнопка ).

Если порядок полей в составном первичном ключе должен отличаться от порядка полей в таблице, следует выполнить команду ВИД/ИНДЕКСЫ (кнопка на панели инструментов), чтобы открыть окно "Индексы". В этом окне и следует указать другой порядок полей для индекса с именем "PrimaryKey" (см. рис.6.3).

Рис. 6.3. Окно для изменения порядка полей в составном ключе

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

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

Пример окна для создания индексированного поля типа "Да (Совпадения не допускаются)" приведён на рис. 6.4 – это поле "КОД ТОВАРА" таблицы "ТОВАРЫ".

Рис. 6.4. Вид таблицы "ТОВАРЫ" в режиме конструктора

Такой тип индексации описывает уникальное поле, т.е. товары могут иметь повторяющиеся значения в полях "КАТЕГОРИЯ", "НАИМЕНОВАНИЕ" и даже "ЦЕНА", но поле "КОД ТОВАРА" однозначно идентифицирует этот товар.

 

ВОПРОС 25

ОСОБЕННОСТИ ПРОЕКТИРОВАНИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ

6.1.Понятие реляционной базы данных

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

 

Таблица 2

№№ ИМЯ ПОЛЯ ТИП ПОЛЯ
1 Фамилия Текстовый
2 Имя Текстовый
3 Отчество Текстовый
4 Почтовый индекс Текстовый
5 Страна Текстовый
6 Город Текстовый
7 Адрес Текстовый
8 Кредит Денежный
9 Примечание МЕМО или OLE
10 Категория товара Текстовый
11 Наименование товара Текстовый
12 Фирма-производитель Текстовый
13 Цена Денежный
14 Дата заказа Дата/Время
15 Заказано Числовой
16 Дата продажи Дата/Время
17 Продано Числовой

 

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

Поэтому целесообразно разбить эту таблицу на четыре таблицы “КЛИЕНТЫ”, “ЗАКАЗЫ И ПРОДАЖИ”, “ТОВАРЫ” и "ПОСТАВЩИКИ", установив связи между ними, например, так, как показано на рис. 6.1.

 

 

 

Рис. 6.1. Схема данных в реляционной БД

Реляционная база данных – совокупность некоторых таблиц с данными, взаимосвязанных между собой определёнными логическими соотношениями (relation).

 

6.2. Первичные ключи и индексирование

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

В Access допускается определение первичных ключей трех типов:

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

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

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

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

Рис. 6.2. Пример таблицы, требующей создания составного ключа

Для создания составного ключа следует в режиме конструктора выделить нужные поля, удерживая клавишу CTRL, а затем выполнить команду ПРАВКА/КЛЮЧЕВОЕ ПОЛЕ (кнопка ).

Если порядок полей в составном первичном ключе должен отличаться от порядка полей в таблице, следует выполнить команду ВИД/ИНДЕКСЫ (кнопка на панели инструментов), чтобы открыть окно "Индексы". В этом окне и следует указать другой порядок полей для индекса с именем "PrimaryKey" (см. рис.6.3).

Рис. 6.3. Окно для изменения порядка полей в составном ключе

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

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

Пример окна для создания индексированного поля типа "Да (Совпадения не допускаются)" приведён на рис. 6.4 – это поле "КОД ТОВАРА" таблицы "ТОВАРЫ".

Рис. 6.4. Вид таблицы "ТОВАРЫ" в режиме конструктора

Такой тип индексации описывает уникальное поле, т.е. товары могут иметь повторяющиеся значения в полях "КАТЕГОРИЯ", "НАИМЕНОВАНИЕ" и даже "ЦЕНА", но поле "КОД ТОВАРА" однозначно идентифицирует этот товар.

 

6.3. Связи в базе данных

Преимуществом установки связей является поддержка целостности базы данных: данные автоматически защищаются от изменения и удаления тех записей, которые могут нарушить связи между таблицами. Например, невозможно удалить код клиента из таблицы “КЛИЕНТЫ”, если в таблице “ЗАКАЗЫ И ПРОДАЖИ” имеются сведения об операциях с данным клиентом. Связываемые поля обычно имеют одинаковые имена (это не обязательно), и одинаковые типы данных (это обязательно!). Чаще всего связывают ключевое поле одной таблицы с совпадающим полем другой.

ACCESS поддерживает три типа отношений между таблицами:

Один-к-одному, когда каждая запись в одной таблице соответствует только одной записи в другой таблице (оба поля уникальные);

Один-ко-многим (например, может быть много записей в таблице "ЗАКАЗЫ И ПРОДАЖИ" для одного и того же клиента);

Много-ко-многим.

Создание и удаление связей осуществляется командой СЕРВИС/СХЕМА ДАННЫХ. Создание и удаление связей между открытыми таблицами не допустимо, их нужно предварительно закрыть.

В окне “Схема данных” связываемое поле одной таблицы перемещается на соответствующее поле второй таблицы, при этом открывается окно "Изменение связей". Тип отношения устанавливается автоматически с учётом уже заданного свойства связываемых полей "Индексированное поле" (см. рис. 6.5)

Рис. 6.5. Пример окна "Изменение связей" для связывания таблиц "ТОВАРЫ" и "ЗАКАЗЫ И ПРОДАЖИ"

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

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

 

Связи в БД.

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

аксес поддерживает три типа отношений между таблицами.

1 стремится к бесконечности

бесконечность стремится к одному

беск. к бескон.

1 к 1.

 

ВОПРОС 26