Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_ЛР.doc
Скачиваний:
10
Добавлен:
09.02.2015
Размер:
3.1 Mб
Скачать

Задание для самостоятельной работы.

Откройте БД Студенты_Занятия.

  1. В таблице Студенты:

  • Установите ширину столбцов в соответствии с их данными.

  • Оставьте только вертикальные линии сетки таблицы, сделав их темно-серыми на светло-сером фоне.

  • поменяйте шрифт на синий наклонный.

  1. В таблице Занятия:

  • Переместите столбец Год на третью позицию.

  • Поменяйте при помощи команды ПравкаЗаменитькаждое из значений в столбце Год на текущий год, например, 2003.

  • Добавьте еще по одной записи для каждого преподавателя (преподаватель определяется его кодом).

  • Поменяйте место, время проведения и тему занятий для первого и второго преподавателя.

  1. В таблице Адрес при помощи команды ПравкаЗаменитьпоменяйте все номера телефонов с кодом города 095, начинающиеся на 3. Теперь эти номера должны начинаться с цифры 5.

Лабораторная работа 4: Сортировка, индексация, поиск и фильтрация данных. Цель работы

Освоение методов поиска в БД нужной информации и способов ускорения поиска.

Общие сведения.

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

В базах данных используется как физическое, так и логическое упорядочение данных. Физическое упорядочение данных называется сортировкой. Результатом является новая таблица, в которой строки расположены в порядке возрастания или убывания значений одного или нескольких полей. Поле или группа полей, по которым осуществляется упорядочение, называетсяключом сортировки. Если ключ состоит из одного поля, и это поле типа Дата, то строки упорядочиваются в хронологическом порядке. Например, 12.10.1812 < 12.10.1912 < 12.12.1912 < 01.02.2002 < 02.02.2002. Если ключевое поле текстового типа, то порядок лексикографический в соответствие с таблицей кодирования. Например, Иванов < Ивановский < Ивашко < Иващук. Если ключ сортировки состоит из n полей, а x1,x2,…,xnи y1,y2,…,yn- это значения ключей для двух строк таблицы, тогда x1,x2,…,xn< y1,y2,…,yn, если для всякого i >= 1 x1= y1, …, xi=yiи xi+1 < yi+1. Например, пусть ключом сортировки является группа из трех полей: C, N, D. Ключи для пяти строк таблицы имеют следующие значения:

C

N

D

A

1

01.03.03

B

2

02.03.03

A

1

02.03.03

B

1

02.03.03

B

2

01.03.03

В результате сортировки по возрастанию получим:

C

N

D

A

1

01.03.03

A

1

02.03.03

B

1

02.03.03

B

2

01.03.03

B

2

02.03.03

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

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

В СУБД Access термин «сортировка» используется в другом смысле. Сортировка в Access позволяет изменить порядок строк в таблице только при выводе ее на экран. Сортировка производится в режиме таблицы по одному или нескольким полям, как по возрастанию, так и по убыванию. Проще всего можно отсортировать таблицу по одному полю (столбцу), щелкнув в любом месте нужного столбца, а затем по одной из пиктограмм сортировки (по возрастанию или по убыванию). Таким же способом можно отсортировать таблицу и одновременно по нескольким полям. Сортировка при этом осуществляется сначала по первому полю, при равенстве значений первого поля – по второму и т.д., причем для всех полей по возрастанию или для всех по убыванию. Перед осуществлением такой операции столбцы таблицы при выводе ее на экран должны располагаться рядом, и их порядок должен соответствовать порядку сортировки. Если требуется осуществить сортировку по нескольким полям, причем по одному из них – по возрастанию, а по другому – по убыванию, придется воспользоваться расширенным фильтром (ЗаписиФильтрРасширенный фильтр…). Порядок расположения полей в окне расширенного фильтра должен соответствовать порядку сортировки.

Фильтры используют не только и не столько для упорядочения данных, сколько для их отбора по заданному условию. Задать условие отбора строк из таблицы по каждому из полей можно, как в окне формирования расширенного фильтра, так и при помощи простого фильтра, воспользовавшись командой ЗаписиФильтрИзменить фильтр. При задании условия и в том и в другом случае допускается использование операций сравнения, логических операций и предикатов, уже описанных в лабораторной работе 1. Для каждой таблицы система сохраняет последний созданный фильтр. Обычно желательно иметь возможность в разных случаях по-разному упорядочивать и отбирать данные из таблицы, т.е. хранить одновременно несколько фильтров. Такая возможность может быть реализована только путем сохранения каждого созданного фильтра, как запроса – командаФайлСохранить как запрос…. Запросам присваиваются имена, поэтому в любой момент, открыв соответствующий запрос, вы можете получить на экране интересующую вас информацию.

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

Простой индекс содержит только одно поле и задается при определении поля в структуре таблицы (свойство Индексированное поле). Одновременно можно создать для одной таблицы несколько, но не более 32 индексов. При этом, если в критерии поиска содержится более одного поля, то поиск будет осуществляться по индексу с меньшим числом строк, имеющих указанное значение поля. Для ускорения поиска в больших таблицах по нескольким полям создается составной индекс, содержащий до 10 полей. Составной индекс создается в режиме определения структуры таблицы с помощью командыВидИндексыили соответствующей пиктограммы. В окне индексов для построения составного индекса в пустую строку столбца Индекс вводится имя индекса, а в нескольких строках столбца Поле последовательно задаются имена полей, которые составляют этот индекс. В столбце Порядок сортировки против каждого поля можно выбором из списка указать По возрастанию или По убыванию. В свойствах индекса можно указать, является ли он уникальным и надо ли пропускать пустые поля. Созданные индексы, как простые, так и составные, сохраняются при сохранении структуры таблицы. Последовательность полей в составном индексе должна совпадать с последовательностью, в которой поля включаются в условие поиска при формировании фильтра. Наличие составного индекса для поиска по нескольким полям ускоряет поиск, но не является обязательным, таблица может быть упорядочена по одному полю или вообще не упорядочена. С другой стороны, можно, имея индекс, состоящий, например, из трех полей, осуществлять поиск не по всем трем полям, а только по первому или по первому и второму, но при этом только последнее условие поиска может быть неравенством, а остальные должны быть равенствами. Нельзя также осуществлять поиск по значению второго поля, пропустив первое, или искать одновременно по первому и третьему полям, пропустив втрое. Например, создав составной индекс по полямA,B,C, можно осуществить поиск по всем трем полям , а можно только по полюAили по полямAиB. При этом, поскольку только последнее условие может быть неравенством и пропускать поля нельзя, то возможны следующие критерии поиска:

A= «значение»

A> «значение»

A= «значение»ANDB= «значение»

A= «значение»ANDB< «значение»

A= «значение»ANDB= «значение»ANDC>«значение».

а недопустимыми являются следующие критерии поиска:

A> «значение»ANDB= «значение»

A> «значение»ANDB> «значение»

A> «значение»ANDB= «значение»ANDC>«значение».

B= «значение»ANDC>«значение».

A= «значение»ANDC>«значение».

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