Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическое занятие 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
269.25 Кб
Скачать

1.6. Определение ключевых полей

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

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

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

  • снимается проблема обновления внешних ключей в связанных таблицах, так как первичный ключ типа “счетчик” не может быть изменен;

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

  • поле типа “счетчик” имеет относительно небольшую длину (8 байтов), что позволяет экономно использовать память в связанных таблицах;

  • упрощаются и унифицируются связи между таблицами.

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

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

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

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

1.7. Определение индексов

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

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

Уникальные индексы следует создавать по тем полям или их комбинациям (составные индексы), которые не должны повторяться при вводе данных в таблицу, если такая уникальность не обеспечивается первичным ключом таблицы. Например, таблица Студенты в базе данных Успеваемость студентов имеет ключевое поле Код типа “счетчик”, а поле НомерЗачетки является неключевым. Очевидно, что по номеру зачетки может производиться поиск и сортировка данных, и этот атрибут может использоваться в различных запросах к БД. Поэтому по полю НомерЗачетки следует создать индекс, причем он должен быть уникальным во избежание появления в таблице Студенты нескольких записей о студентах с одним и тем же номером зачетки.

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