Начало работы с MS Access. Создание новой таблицы
После запуска Access нужно в окне Miсrosoft Access из списка доступных шаблонов выбрать шаблон Новая база данных, задать имя для файла БД и нажать кнопку Создать (рис. 1.1). После этого на экране появляется основноеокно базы данных (рис. 1.2), из которого можно получить доступ ко всем ее объектам: таблицам, запросам, формам и т.д. В верхней части окна находится главное меню с вкладками Файл, Главная, Создание и пр.
Рис. 1.1. Диалог загрузки Access
Под главным меню располагается так называемая лента с кнопками и другими объектами управления работой СУБД, объединенными в группы. Вид ленты и состав объектов управления на ней зависит от выбранного пункта главного меню (выбранной вкладки) и текущего состояния процесса работы с СУБД.
Выбор того или иного действия (команды) с обрабатываемой базой данных в дальнейшем будет обозначаться последовательностью наименований вкладок и управляющих объектов ленты (групп и кнопок), разделенных наклонной чертой. Например, Создание/Таблица будет обозначать выбор вкладки Создание с последующим нажатием кнопки Таблица.
Для создания новой таблицы нужно выполнить команды Создание/Таблица или Создание/Конструктор таблиц.В первом случаесвойства таблицы и ее полейзадаются объектами ленты, при выборе второго способа Access выводит окно Конструктора таблицы, в котором задаются имена, типы и свойства полей для создаваемой таблицы.
Рис. 1.2. Основное окно Access
Имена полей рекомендуется выбирать, исходя из смыслового соответствия хранящимся в них атрибутам таблицы. В качестве имен могут быть использованы слова и группы слов любого языка, в том числе – русского.
Тип данных поля должен соответствовать хранящемуся в нем атрибуту и может быть выбран из следующего списка основных типов:
· Текстовый. Алфавитно-цифровые данные (до 255 символов).
· Поле Mеmо. Алфавитно-цифровые данные - предложения, абзацы, тексты (до 64 000 символов).
· Числовой. Различные числовые данные (имеет несколько форматов).
· Дата/время. Дата или время в одном из предлагаемых Access форматов.
· Денежный. Денежные суммы, хранящиеся с 8 знаками в десятичной части. В целой части каждые три разряда разделяются запятой.
· Счетчик. Уникальное длинное целое, создаваемое Access для каждой новой записи в возрастающей последовательности. Редактировать значения такого поля нельзя.
· Логический. Логические данные, имеющие значения Истина или Ложь.
· Поле объекта OLE. Картинки, диаграммы и другие объекты OLE из приложений Windows.
· Гиперссылка. В полях этого типа хранятся гиперссылки, которые представляют собой путь к файлу на жестком диске либо адрес в Интернете.
Кроме вышеперечисленных типов данных в списке есть элемент Мастер подстановок, который позволяет представить значения полей в виде простого или комбинированного списка. Дополнительные свойства такого поля представлены на вкладке Подстановка окна конструктора таблиц. Использование Мастера подстановок подробно рассматривается в разделе 1.9.
Каждое поле обладает индивидуальными свойствами, по которым можно установить, как должны сохраняться, отображаться и обрабатываться данные. Набор свойств поля зависит от выбранного для него типа данных. Для определения свойств поля используется бланк Свойства поля в нижней части окна конструктора таблиц.
Свойства полей устанавливаются с помощью вкладок Общие и Подстановка в нижней половине окна конструктора таблиц. Рассмотрим эти свойства.
Размер поля. Для текстового поля это максимальное число символов (до 255). По умолчанию устанавливается размер 255 символов. При выборе размера надо учитывать, что в поле размером 20 символов нельзя будет ввести текст, длиной 30 символов. С другой стороны, установка слишком большой длины может привести к бесполезному увеличению размера файла базы данных, если значения, хранимые в поле, будут существенно меньше его установленной длины.
Для числовых полей размер выбирается из списка возможных числовых типов данных. Числовой тип данных, в свою очередь, выбирается исходя из формы хранимых чисел (целые или с плавающей точкой) и диапазона возможных значений.
Формат устанавливает вид данных на экране, например, для типа Дата/время можно выбрать представление даты вида 30 июня 2017 г. или 30.06.2017.
Число десятичных знаков определяет количество цифр после десятичной точки для дробных чисел. Это значение влияет только на вид представления числовых величин, а не на способ их хранения в памяти.
Маска ввода позволяет задать шаблон для ввода, который дает некоторую гарантию правильности ввода данных. Она применяется для полей типа Дата/время и текстовых. Маска ввода выводит на экран символы-местозаменители (дефис, скобки и т.п.) и показывает, сколько символов нужно ввести. Например, для даты маска ввода может выглядеть так: __.__.____. Данная маска кодируется набором символов 00.00.0000. Заполнитель 0 означает, что разрешается вводить только цифры, причём их ввод является обязательным. При выборе свойства Маска ввода справа появляется кнопка, по которой запускается мастер создания маски.
Значение свойстваПодписьиспользуется в качестве заголовка столбца в режиме таблицы.
Значение по умолчанию позволяет автоматически вводить в поле какое–либо значение.
Свойство Условие на значение позволяет задать диапазон допустимых значений поля, а свойство Сообщение об ошибке – текст сообщения, которое будет появляться при вводе значений поля вне заданного диапазона.
Свойство Обязательное поле имеет два значения Да и Нет. Если установить значение Да, Ассеss потребует обязательного ввода какого-либо значения в данное поле.
Свойство Пустые строки определяет, допускается ли ввод в данное поле пустых строк.
Свойство Индексированное поле определяет, будет или нет проводиться индексация по данному полю. Индексация состоит в создании списка номеров записей, упорядоченных в соответствии со значениями поля. Наличие индекса ускоряет операции поиска и сортировки, но требует дополнительного места на диске.
Для значения Да свойства Индексированное поле возможны две установки. Установка Совпадения не допускаются означает, что данный индекс является уникальным, то есть повторение значений данного поля в различных записях невозможно. Установка Допускаются совпадения означает, что данный индекс не является уникальным, и значения данного поля в различных записях могут повторяться. Так, например, в таблице Группы индекс по полю НомерГруппы должен быть уникальным, не допускающим совпадения номеров групп в различных записях, а индекс по полю КодФакультета – неуникальным, так как различные группы могут относиться к одним и тем же факультетам.
Просмотреть и отредактировать созданные индексы возможно в режиме конструктора таблиц при нажатии кнопки Индексы.
Типы данных полей таблицы и их свойства выбираются, исходя из природы хранимых в них данных. Так, если над содержимым поля могут производиться вычисления, его тип целесообразно установить числовым. Полям, в которых хранятся денежные суммы, лучше задавать денежный тип. Поля логической природы с двумя возможными значениями Да и Нет естественно делать логического типа.
Для сохранения структуры таблицы нужно ввести команду Файл/Сохранить и в окне Сохранение ввести имя таблицы. Другим способом сохранения таблицы является щелчок правой кнопкой мыши на заголовке таблицы и выбор команды Сохранить из контекстного меню.
Определение ключевых полей
Любая таблица базы данных в обязательном порядке должна иметь первичный ключ, однозначно идентифицирующий каждую запись. В таблице не может быть нескольких записей с одним и тем же значением ключа. В многотабличной базе данных ключевые поля используются также для установления связей между таблицами.
Первичным ключом таблицы может быть любое поле, однозначно идентифицирующее ее записи. Так, например, в таблице Студенты таким полем мог бы быть номер зачетной книжки, а в таблице Группы – номер группы. Однако в этом случае всегда возникает вопрос: может ли при определенных условиях значение ключа быть изменено? Представим, например, что руководство ВУЗа решило изменить систему нумерации групп. В таком случае в базе данных придется выполнить эту перенумерацию не только в таблице Группы, но и во всех связанных с ней таблицах, например, в таблице Студенты.
Поэтому более предпочтительным является использование в качестве первичного ключа специально создаваемого автоинкрементного поля типа “счетчик”, значения которого автоматически формируются при вводе новых записей и не могут быть изменены пользователем. Такие ключи обладают рядом важных преимуществ:
· снимается проблема обновления внешних ключей в связанных таблицах, так как первичный ключ типа “счетчик” не может быть изменен;
· разработчик базы данных получает полную свободу в изменении содержимого и свойств неключевых полей таблицы, так как такие изменения уже не влияют на связанные таблицы;
· поле типа “счетчик” имеет относительно небольшую длину (8 байтов), что позволяет экономно использовать память в связанных таблицах;
· упрощаются и унифицируются связи между таблицами.
Для определения поля как ключевого нужно, находясь в конструкторе таблиц, установить курсор в строке с именем этого поля и нажать на кнопку Ключевое поле. После этого в строке рядом с именем выбранного поля появится изображение ключа. Для отмены выбора ключевого поля достаточно еще раз нажать кнопку Ключевое поле, находясь в строке с ключевым полем. Для переопределения ключевого поля надо выполнить это действие, находясь в строке с любым другим полем таблицы.
В таблицах, реализующих связь “многие-ко-многим”, первичный ключ часто бывает составным, состоящим из двух или более внешних ключей. Так, в таблице Оценки первичный ключ состоит из двух внешних ключей КодСтудента+КодДисциплины. Такой ключ позволяет избежать дублирования оценок студентов по одной и той же дисциплине.
Чтобы определить составной первичный ключ таблицы, надо выделить ключевые поля в столбце ключей с помощью мыши и клавиши Shift, а затем нажать кнопку Ключевое поле. При этом изображения ключа появляются во всех соответствующих строках.
Если к моменту сохранения создаваемой таблицы ключевое поле не определено, то Access предлагает и в случае подтверждения автоматически создает первичный ключ, вставив перед первым указанным в структуре полем поле Код и задав для него тип “счетчик”.
Определение индексов
Как уже отмечалось в п. 1.5, создание индексов по отдельным полям таблицы позволяет ускорить выполнение операций поиска и сортировки по этим полям, а также выполнение запросов, в которых участвуют индексируемые поля. Кроме того, создание уникальных индексов позволяет избежать повторения значений в этих полях. Следует иметь в виду, что по ключевому полю (полям) таблицы автоматически создается уникальный индекс с именем PrimaryKey.
Индексы занимают дополнительное место на диске. Кроме того, на их модификацию при обновлении данных в таблице тратится дополнительное время. Потому индексы следует создавать только по тем полям, по которым будет производиться поиск и сортировка данных, а также по полям, участвующим в запросах к базе данных.
Уникальные индексы следует создавать по тем полям или их комбинациям (составные индексы), которые не должны повторяться при вводе данных в таблицу, если такая уникальность не обеспечивается первичным ключом таблицы. Например, таблица Студенты в базе данных Успеваемость студентов имеет ключевое поле Код типа “счетчик”, а поле НомерЗачетки является неключевым. Очевидно, что по номеру зачетки может производиться поиск и сортировка данных, и этот атрибут может использоваться в различных запросах к БД. Поэтому по полю НомерЗачетки следует создать индекс, причем он должен быть уникальным во избежание появления в таблице Студенты нескольких записей о студентах с одним и тем же номером зачетки.
Индекс по некоторому полю может быть создан путем соответствующей установки свойства Индексированное поле в конструкторе таблиц (см. п. 1.5). Кроме того, индексы могут быть созданы, отредактированы и просмотрены в окне Индексы (рис. 1.3), появляющемся при нажатии кнопки Индексы в конструкторе таблиц. Использование окна индексов является единственной возможностью для создания составных индексов по нескольким полям.
1.8. Установка связей между таблицами
После определения структуры таблиц БД и определения ключевых полей необходимо установить связи между таблицами. Для определения связей нужно перейти в окно базы данных и выполнить командуРабота с базами данных/Схема данныхили, находясь в конструкторе таблиц, нажать кнопку Схема данных. После этого Access открывает окно Схема данных. По щелчку правой кнопкой мыши появляется контекстное меню, в котором надо выбрать команду Добавить таблицу, в появившемся окнеДобавление таблицы выделить имена таблиц, добавляемых в схему данных, и нажать на кнопку Добавить. После этого окно Добавление таблицы можно закрыть.
В окне Схема данных появятся изображения всех указанных таблиц со списками их полей. Нужно выделить ключевое поле таблицы со стороны “один”, нажать кнопку мыши, перетащить ее курсор на соответствующее поле в связываемой таблице, после чего кнопку мыши отпустить. В результате появится диалоговое окно Изменение связей.
Рис. 1.3. Окно индексов Access
В этом окне Access заполнил первую строку именами полей, по которым связывались таблицы. Чтобы в связанных таблицах не нарушалась целостность данных, нужно включить флажок Обеспечение целостности данных. После этого Access сделает невозможным:
· запись в таблицу со стороны "многие" такого значения внешнего ключа, которого нет в таблице со стороны "один";
· удаление из таблицы со стороны “один” записи с таким ключом, который присутствует как внешний ключ в таблице со стороны “многие”.
Например, если таблицей со стороны “один” является таблица Факультеты, а таблицей со стороны “многие” – Группы, то после включения обеспечения целостности будет невозможно добавить в таблицу Группы запись о группе факультета, которого нет в таблице Факультеты. В то же время становится невозможным удаление записи о некотором факультете из таблицы Факультеты, если в таблице Группы присутствуют записи о группах этого факультета.
После включения обеспечения целостности данных в окне Изменение связей становятся доступными две дополнительные опции: Каскадное обновление связанных полей и Каскадное удаление связанных полей.
Если выбрать первую опцию, то при изменении какого-либо значения первичного ключа в таблице со стороны "один" Access автоматически обновит значения соответствующего внешнего ключа в соответствующих записях всех связанных таблиц. Как уже говорилось, если первичным ключом является поле типа “счетчик”, то изменение первичного ключа невозможно, поэтому выбор этой опции не имеет смысла.
Выбор второй опции при удалении одной из записей в таблице со стороны "один" приведет к удалению тех записей в таблицах со стороны "многие", которые имеют такое же значение ключа. Например, если из таблицы Факультеты удалить запись об одном из факультетов, то записи обо всех группах удаленного факультета в таблице Группы будут удалены автоматически. Поэтому к выбору данной опции следует относиться с осторожностью. При отказе от каскадного удаления при каждой попытке удаления записи таблицы со стороны "один" Access будет сообщать о наличии записей с соответствующим внешним ключом в связанных таблицах и предлагать пользователю удалить эти записи. Так, например, если таблица Группы содержит записи о группах некоторого факультета, то удаление записи об этом факультете из таблицы Факультеты станет возможным только после удаления всех таких записей из таблицы Группы.