Изменение структуры таблицы

Практическая работа № 5

Тема: Индексирование таблиц

Цели: Изучить принципы построения баз данных, освоить правила создания и редактирования таблиц в СУБД ACCESS, изучить способы установления индексов.

Ход работы.

Задание 1. Создайте новую базу данных.

В окне базы данных объекты распределены по вкладкам и изображаются значками. Для работы с объектом определенного типа необходимо перейти на соответствующую вкладку и выделить требуемый объект. Для создания объекта служит кнопка Создать в окне базы данных, которая открывает окно Конструктора. После закрытия окна предлагается сохранить новый объект и вводится его имя. Модификация объекта возможна в режиме Конструктора, для перехода в этот режим предназначена кнопка Конструктор в окне базы данных. После закрытия окна конструктора предлагается сохранить внесенные изменения или аннулировать их, оставив объект таким, какой он был до перехода в режим Конструктора. Измененный объект можно сохранить под другим именем, выбрав в меню пункт Файл, Сохранить как. Работа с объектом начинается после нажатия кнопки Открыть (для отчета соответствующая кнопка носит название Просмотр, а для макроса – Запуск) в окне базы данных.

Над каждым объектом можно выполнять операции удаления, копирования, вставки, изменения имени используя соответствующие пункты меню Правка (Удалить, Вырезать, Копировать, Вставить, Переименовать).

Создание таблицы

Таблица – основной объект базы данных.

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

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

В таблице перечислены типы данных, определенные в Access

Тип Размер Описание
Текстовый до 255 символов Символьные или числовые данные, не требующие вычислений. В свойстве Размер поля задается максимальное количество символов, которые могут быть введены в данное поле.
Поле МЕМО до 65 535 символов Предназначено для ввода текстовой информации, по объему превышающей 255 символов.
Числовой 1, 2, 4, 8 или 16 байт Используется для хранения числовых данных, используемых в математических расчетах. Имеет много подтипов, которые задаются в свойстве Размер поля.
Дата/Время 8 байт Используется для представления даты и времени. Позволяет вводить даты с 100 по 9999 год.
Денежный   Предназначен для хранения данных, точность представления которых колеблется от 1 до 4 знаков после запятой. Целая часть может содержать до 15 десятичных знаков.
Счетчик 4 байта Автоинкрементное поле, уникальный номер, создаваемый для каждой новой записи автоматически. Значения поля обновлять нельзя.
Логический   Предназначен для хранения двух значений, интерпретируемых как "Да / Нет". Для представления значения "Да" используется 1, "Нет" – 0.
Поле объекта OLE Ограничивается дисковым пространством. Содержит ссылку на OLE–объект

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

В таблице перечислены свойства полей таблицы Access

Свойство Описание
Подпись Название столбца таблицы при просмотре ее содержимого.
Обязательное поле Определяет, является ли ввод данных в это поле обязательным.
Формат поля Задает формат ввода данных.
Маска ввода Задает маску ввода, позволяющую автоматизировать проверку вводимых символов.
Размер поля Для числовых полей определяет размер и тип чисел (длинное целое, целое, байт, с плавающей точкой, десятичное и др.)
Число десятичных знаков Определяет число десятичных знаков после запятой.
Индексированное поле Определяет, является ли поле индексированным.
Значение по умолчанию Указывает значение, автоматически вставляемое в поле для каждой новой записи, если оно не введено пользователем.
Условие на значение Определяет ограничения на вводимые в это поле данные.
Сообщение об ошибке Содержит текст сообщения, который будет выдаваться пользователю, если при вводе данных не соблюдается условие, указанное в свойстве "Условие на значение".
Пустые строки Для текстового типа определяет, допустимо ли вводить в данное поле пустые строки.
Сжатие Юникод Для текстового типа определяет, используется ли кодировка UNICODE для данного поля.
Новые значения Для типа счетчик указывает способ формирования следующего значения счетчика.

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

На рисунке представлено окно Конструктора для таблицы Student

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

Задание 2. Создайте таблицы следующей структуры:

Таблица Student

Имя поля Тип поля Значения свойств Описание
NStudent Ключевое поле Числовой Размер поля = Длинное целое Подпись = Номер Номер зачетной книжки студента.
CName Текстовый Размер поля = 25 Подпись = ФИО Обязательное поле = Да Фамилия И.О. студента
NDepartment Числовой Размер поля = Длинное целое Подпись = Факультет Код факультета, на котором учится студент
NIQ Числовой Размер поля = Длинное целое Подпись = Интеллект Показатель интеллекта студента, вычисленный по специальной методике.
NTeacher Числовой Размер поля = Длинное целое Подпись = Руководитель Код преподавателя, руководящего научной работой студента.
OPhoto Поле объекта OLE Подпись = Фотография Графический файл с фотографией студента

Таблица Department

Имя поля Тип поля Значения свойств Описание
NDepartment Ключевое поле Числовой Размер поля = Длинное целое Подпись = Код Уникальный код факультета.
CName Текстовый Размер поля = 25 Подпись = Название Наименование факультета

Таблица Post

Имя поля Тип поля Значения свойств Описание
NPost Ключевое поле Числовой Размер поля = Длинное целое Подпись = Код Уникальный код должности.
CName Текстовый Размер поля = 25 Подпись = Наименование Наименование должности

Таблица Teacher

Имя поля Тип поля Значения свойств Описание
NTeacher Ключевое поле Числовой Размер поля = Длинное целое Подпись = Код Уникальный код преподавателя.
CName Текстовый Размер поля = 25 Подпись = ФИО ФИО преподавателя.
NDepartment Числовой Размер поля = Длинное целое Подпись = Факультет Код факультета, на котором работает преподаватель.
NPost Числовой Размер поля = Длинное целое Подпись = Должность Код должности, занимаемой преподавателем.

Таблица Subject

Имя поля Тип поля Значения свойств Описание
NSubject Ключевое поле Числовой Размер поля = Длинное целое Подпись = Код Уникальный код предмета.
CName Текстовый Размер поля = 25 Подпись = Наименование Наименование предмета.
NHour Числовой Размер поля = Целое Подпись = Объем Объем занятий по предмету (часов).
NTeacher Числовой Размер поля = Длинное целое Подпись = Преподаватель Код преподавателя, ведущего занятия.

Изменение структуры таблицы

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

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

Задание 3.Модифицируйте структуру таблицы Student, добавив в нее поле, указанное ниже.

Имя поля Тип поля Значения свойств Описание
Remark поле MEMO Подпись = Примечания Примечания.

Индексы

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

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

Чтобы создать индекс, необходимо открыть окно Конструктора таблицы, выделив таблицу и щелкнув по кнопке Конструктор.

Для создания индекса необходимо выбрать в меню Индексы. Открывшееся окно Индексы содержит таблицу, в которой представлены все индексы, созданные для таблицы. Таблица состоит из трех столбцов. Первый столбец содержит имя индекса, второй – название поля, по которому построен индекс, третий – порядок сортировки. Каждая строка таблицы описывает один индекс. Если вы определили ключевое поле, то таблица будет содержать строку с именем индекса PrimaryKey.

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

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

После заполнения таблицы можно закрыть окно Индексы.

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

 

 

Задание 4. Создайте простой индекс для таблицы Student по полю CName.

Задание 5. Создайте составной индекс в таблице Subject по полям CName, NHour.

 

Связи между таблицами

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

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

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

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

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

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

Чтобы изменить связь необходимо выбрать в меню пункт Связи, Изменение связей. После выполнения этих действий откроется окно Связи.

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

1. Флажок "Обеспечение целостности данных" включает режим, при котором:

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

§ Не допускается удаление записи из родительской таблицы, если существуют связанные с ней записи в дочерней таблице.

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

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

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

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

Пример

Создадим связь между таблицами Student и Department по полю NDepartment. Откройте окно Схемы данных и перетащите с помощью мыши поле NDepartment из таблицы Student на поле NDepartment в таблице Department. В открывшемся окне установите флажок "Обеспечение целостности данных". Теперь в поле NDepartment таблицы Student невозможно внести код, отсутствующий в таблице Department. Невозможно удалить строку из таблицы Department или изменить значение поля NDepartment в этой таблице, если в таблице Student есть хотя бы одна запись с кодом факультета равным коду факультета удаляемой или изменяемой записи.

На рисунке представлено окно Схемы данных
со связью между таблицами Student и Department

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

Задание 6. Установите еще четыре связи между таблицами, соответствующие содержанию этих таблиц.

Задание 7. Установите следующие правила целостности:

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

б). запрещается удалять информацию о преподавателе, если он читает хотя бы один предмет;

в). разрешить каскадное изменение во всех дочерних таблицах при изменении кода преподавателя;

г). при удалении должности разрешить каскадное удаление всех преподавателей, имеющих эту должность;

д). при добавлении нового студента установить проверку на на наличие вводимого кода факультета и вводимого кода преподавателя.