Создание базы данных в режиме конструктора

Задание. Создать новую базу данных  «Деканат», в которой будут храниться сведения о студентах вашего потока.

1.    Запустить ACCESS. (Пуск, Программы, MS Access)

2.    При запуске появится с правой стороны диалоговое окно, в котором надо выбрать строку Новая база данных.

3.    В окне Файл новой базы указать имя новой БД Деканат») в поле ввода Имя файла и выбрать нужную папку. Нажать кнопку Создать.

Рис.12. Создание файла новой базы данных

4.    В появившемся окне База данных активизировать вкладку Таблицы и щелкнуть по кнопке Создать.

5.    Создать таблицу, воспользовавшись Конструктором. В окне Новая таблица выбрать пункт Конструктор и подтвердить выбор.

Рис.13. Создание таблицы в режиме Конструктора

 

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

В окне, появившемся после запуска Конструктора, создать поля БД, согласно таблице.

 

Поле

Тип поля

Размер

Номер

Числовое

Целое

Фамилия

Текстовое

15

Имя

Текстовое

10

Отчество

Текстовое

15

Дата рождения

Дата

Краткий формат

Группа

Текстовое

5

Дом адрес

Текстовое

20

 

Типы полей снова определяем по той информации, какую мы будем в них хранить. Например, тип поля «Фамилия» текстовый, так как в этом поле мы будем хранить текст, а именно фамилию студента. Размер поля – 15, так как мы предполагаем, что более длинные фамилии нам не встретятся.

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

 

Рис.14. Создание полей таблицы базы данных

 

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

8.    Сделать поле «Номер» ключевым. Для этого нужно выделить его и выбрать меню Правка/Ключевое_поле или нажать кнопку Ключевое_поле на панели инструментов. При этом слева от имени ключевого поля таблицы появится изображение ключа.

Рис.15. Создание ключевого поля

 

9.    Закрыть заполненную таблицу и сохранить ее под именем «Студенты».

10.              В результате мы получили пустую таблицу базы данных с заданными полями.

2.1. Ввод данных в таблицу

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

Задание. Ввести сведения о студентах потока в таблицу «Студенты» базы данных «Деканат».

1.    Запустить ACCESS. (Пуск, Программы, MS Access)

2.    Справа найти в списке имя своей базы данных – «Деканат» - и щелкнуть по ней правой клавишей мыши. Если окна справа нет,  то дать команду Файл, Открыть и в открывшемся диалоговом окне выбрать папку, где сохранена база данных «Деканат», и нажать кнопку Открыть. В окне папки выбрать файл базы данных и щелкнуть по кнопке Открыть.

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

4.    Откроется таблица, в которую можно вводить данные. Занести в таблицу 10 записей, используя Приложение.

Рис.19. Таблица, открытая для ввода данных

Рис.20. Заполненная данными таблица

 

5.    Добавить в таблицу еще две произвольных записи.

6.    Закрыть заполненную таблицу, нажав на значок

 

Приложение.

Номер

Фамилия

Имя

Отчество

Дата рождения

Группа

Дом. адрес

1111

Сидоров

Алексей

Петрович

15.02.81

ГЛГ-1

Малкова,1-11

1125

Сергеева

Мария

Васильевна

14.12.80

ГИГ-2

Ленина, 12-25

1245

Васильева

Анна

Ивановна

26.01.82

ГЛГ-2

Вавилова, 4-85

1489

Петров

Евгений

Петрович

12.07.79

ГИГ-3

Букирева, 1-37

1392

Попов

Александр

Сергеевич

03.05.82

ГЛГ-1

Юрша, 7-33

2468

Ромашина

Татьяна

Николаевна

27.08.81

ГИГ-2

Ленина, 69-47

1497

Горшков

Валерий

Викторович

08.11.80

ГЛГ-1

Сибирская, 7-5

5269

Сметанина

Лариса

Петровна

21.07.81

ГИГ-1

Леонова, 25-64

2871

Гладких

Алексей

Иванович

30.01.82

ГЛГ-3

Лодыгина, 1-3

1693

Семенова

Надежда

Валерьевна

16.01.80

ГЛГ-1

Ленина, 2-17

2358

Иванов

Сергей

Николаевич

29.10.81

ГЛГ-2

Леонова, 12 -9

3546

Пирогов

Алексей

Викторович

18.02.81

ГИГ-1

Мира, 88-23

1461

Симонова

Марина

Игоревна

31.12.80

ГЛГ-3

Вавилова, 5-23

2297

Волегов

Александр

Иванович

28.06.81

ГИГ-2

Гагарина, 10-2

1364

Папанова

Ольга

Сергеевна

19.04.80

ГЛГ-1

Малкова, 6-59

 

3.2. Редактирование и сортировка  данных

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

Задание 1. Отредактировать сведения о студентах потока в таблице «Студенты» базы данных «Деканат».

1.    Запустить ACCESS. (Пуск, Программы, MS Access)

2.    Справа найти в списке имя своей базы данных – «Деканат» - и щелкнуть по ней правой клавишей мыши. Если окна справа нет,  то дать команду Файл, Открыть и в открывшемся диалоговом окне выбрать папку, где сохранена база данных «Деканат», и нажать кнопку Открыть. В окне папки выбрать файл базы данных и щелкнуть по кнопке Открыть.

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

Рис.21. Открытие таблицы

 

4.    Отредактировать введенные записи: заменить во второй записи одно из полей. Для этого установить курсор в одно из полей во второй строке и удалить находящуюся там информацию, используя клавиши Backspace или Delete. Ввести новую информацию в это поле.

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

Рис.22. Удаление записи в таблице

6.    Замените имя у студента в третьей записи, фамилию – у студента в шестой записи и дату рождения – у студента в девятой записи.

7.    Проведите  сортировку записей в таблице по возрастанию (в алфавитном порядке) по полю «Фамилия». Для этого установите курсор в любой записи в поле «Фамилия» и нажмите на кнопку    или выберите команду Записи, Сортировка, Сортировка по возрастанию. Обратите внимание на изменение порядка записей в таблице.

8.    Проведите сортировку записей по полю «Имя» в порядке убывания. Для этого установите курсор в любой записи в поле «Имя» и нажмите на кнопку    или выберите команду Записи, Сортировка, Сортировка по убыванию. Обратите внимание на изменение порядка записей в таблице.

9.    Закройте таблицу «Студенты» – изменения сохранятся автоматически.

 

3.3. Применение простого и расширенного фильтров

Применение простого фильтра, фильтра по выделенному и расширенного фильтра

·       Если удается легко найти и выделить значение, которое должны содержать отбираемые записи, следует использовать фильтр по выделенному.

·       Фильтр по форме (простой фильтр) используется для выбора искомых значений из списка без просмотра всех записей или при указании нескольких условий отбора одновременно.

Для создания сложных фильтров следует использовать окно расширенного фильтра. Расширенный фильтр применяется, если производится:

·       поиск записей, удовлетворяющих нескольким условиям.

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

·       ввод выражений в качестве условий.

 

Задание 1. Произвести отбор данных в таблице «Студенты» базы данных «Деканат», используя фильтр по выделенному. Вывести на экран студентов с именем «Александр». Для этого:

1.    Открыть таблицу «Студенты».

2.    Установить курсор в поле «Имя» со значением «Александр».

3.    Выполнить команду Записи, Фильтр, Фильтр по выделенному (или использовать пиктограмму Фильтр по выделенному ).

4.    Просмотреть полученные результаты.

5.    Чтобы убрать фильтр, воспользоваться командой Записи, Удалить фильтр (или пиктограммой ).

6.    Закрыть таблицу «Студенты».

 

Задание 2. Произвести отбор данных в таблице «Студенты» базы данных «Деканат», используя простой фильтр. Вывести на экран студентов группы «ГИГ-2». Для этого:

1.    Открыть таблицу «Студенты».

2.    Выполнить команду Записи, Фильтр, Изменить фильтр (или использовать пиктограмму Изменить фильтр ). Вместо таблицы появится строка для выбора параметров фильтра.

3.    Установить курсор в поле «Группа», нажать на значок всплывающего меню и выбрать номер нужной группы.

 

Рис.23. Задание фильтра

 

4.    Выполнить команду Фильтр, Применить фильтр (или использовать пиктограмму )  на панели инструментов. Просмотреть появившиеся на экране записи и убедиться, что в списке присутствуют все студенты группы ГИГ-2.

5.    Чтобы убрать фильтр, воспользоваться командой Записи, Удалить фильтр (или пиктограммой ).

6.    Закрыть таблицу «Студенты».

 

Задание 3. Произвести отбор данных в таблице «Студенты» базы данных «Деканат», используя расширенный фильтр. Вывести на экран список студентов группы «ГИГ-2», код которых превосходит 1500. Для этого:

1.    Открыть таблицу «Студенты», установить курсор в поле «Группа», содержащее значение «ГИГ-2».

2.    Выполнить команду Записи, Фильтр, Расширенный фильтр. Вместо таблицы появится окно для ввода условий отбора.

3.    В строке Условие отбора под полем «Номер» ввести «>1500», как того требует условие.

 

Рис.24. Создание расширенного фильтра

 

4.    Для просмотра данных выбрать пункт меню Фильтр, Применить фильтр (или нажать на кнопку Применить фильтр на панели инструментов). Проанализировать отобранные данные.

5.    Если бы нужного нам поля не оказалось в списке полей по умолчанию (там находились бы лишь поля «Номер» и «Группа»), мы могли бы выбрать их из списка, щелкнув в свободной ячейке справа от поля «Группа».

6.    Чтобы убрать фильтр, воспользоваться командой Записи, Удалить фильтр (или пиктограммой ).

7.    Закрыть таблицу «Студенты».

4.1 Создание отчета в режиме мастера

Задание. Создать отчет на основе таблицы «Студенты», выбрав из нее 4 поля: «Номер», «Фамилия», «Имя», «Дата рождения». Данные в отчете должны быть отсортированы по полю «Фамилия», вид отчета – Табличный, стиль отчета – Строгий.

 

1.    Запустить ACCESS и открыть базу данных «Деканат».

2.    В окне «База данных» активизировать вкладку Отчеты и щелкнуть кнопку Создать. В появившемся окне «Новый отчет» выбрать в качестве источника данных таблицу «Студенты» и выбрать пункт Мастер отчетов  и нажать кнопку ОК для его запуска.

 

Рис.25. Создание отчета с помощью Мастера

 

3.    В появившемся диалоговом окне выбрать нужные поля, используя кнопку , после чего нажать на кнопку Далее.

 

Рис. 26. Выбор полей для отчета

 

4.    Пропустить пункт «Уровни группировки», нажав еще раз на кнопку Далее.

5.    В диалоговом окне задать сортировку по полю «Фамилия» по возрастанию, выбрав поле из списка полей. Второй уровень группировки задавать не нужно. Нажать на кнопку Далее.

6.    Выбрать вид (макет) отчета – Табличный, ориентация – Книжная. Нажать на кнопку Далее.

7.    В следующем окне задать стиль отчета – Строгий. Нажать на кнопку Далее.

8.    Дать отчету имя «Студенты», выбрать пункт «Просмотреть отчет» и нажать на кнопку Готово.

9.    Просмотрите готовый отчет.

10.              Закройте отчет и выйдите в окно База данных.

4.3. Создание формы в режиме мастера

 

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

Задание. Создать однотабличную пользовательскую форму для ввода и редактирования данных в ранее созданную таблицу «Студенты» базы данных «Деканат», содержащую все поля этой таблицы. Внешний вид формы выбрать – В один столбец, стиль – Официальный.

1.    Запустить ACCESS и открыть базу данных «Деканат».

2.    В окне «База данных» активизировать вкладку Формы и щелкнуть кнопку Создать. В появившемся окне «Новая форма» выбрать в качестве источника данных таблицу «Студенты» и выбрать пункт Мастер форм  и нажать кнопку ОК для его запуска.

 

Рис.31. Создание формы в режиме Мастера

3.    В появившемся окне выбрать поля для создаваемой формы: из списка «Доступные поля» перенести в список «Выбранные поля» при помощи кнопки  , кнопка , переносит сразу все поля. В нашем случае, форма должна содержать все поля таблицы и мы можем воспользоваться этой кнопкой.

Рис.32.Выбор полей формы

 

4.    Щелкнуть по кнопке Далее, выбрать внешний вид формы В один столбец, щелкнуть по кнопке Далее.

5.    Выбрать стиль формы Официальная, щелкнуть по кнопке Далее.

6.    Указать название формы «Студенты», указать в качестве дальнейших действий Открыть форму для просмотра и ввода данных и  нажать кнопку Готово.

7.    Добавить в таблицу 5 записей в режиме формы.

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

Рис.33. Просмотр данных в режиме формы

 

9.    Закрыть окно формы.

10.              Открыть таблицу и просмотреть добавленные записи в таблице.

11.              Закрыть таблицу, выйти в окно «База данных».

5.1. Создание простого запроса

 

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

Запросы могут быть простыми: например, можно вывести все записи, в которых цена книги превышает $100 - или сложными, в которых производится ряд последовательных сравнений содержимого полей и учитываются альтернативные условия. Так, в результате запроса могут быть найдены записи о книгах в мягкой обложке, купленных за последние 2 года, и книгах в жесткой обложке, купленных за последние 5 лет.

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

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

 

1.    Запустить ACCESS и открыть базу данных «Деканат».

2.    В окне «База данных» активизировать вкладку Запросы и нажать  кнопку Создать.

3.    Выбрать режим Простой запрос и подтвердить выбор, нажав на кнопку ОК.

 

Рис.34. Создание простого запроса

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

Рис.35. Выбор полей для запроса

5.    Выбрать поля, которые будут составлять запрос, и переместить их с помощью кнопки  в окно «Выбранные поля». Так как условие отбора в нашем запросе накладывается на дату рождения, то в число этих полей обязательно должна входить дата рождения. Итак, выберем для создания запроса следующие поля: «Номер», «Фамилия», «Имя», «Дата рождения». Нажать на кнопку Далее.

6.    В открывшемся окне ввести имя запроса «Возраст» и выбрать пункт «Изменить макет запроса». Нажать кнопку Готово.

Рис.36. Изменение макета запроса

 

7.    В открывшемся окне «Запрос на выборку» в строке Условия отбора внести в поле «Дата рождения» критерий отбора: «<01.01.82». В строке Вывод на экран значок «галочка» означает, что в результате выполнения запроса данное поле будет выводиться на экран.

 

Рис.37. Задание условия отбора

8.    Для просмотра отобранных данных, выполнить команду Запрос\Запуск (или использовать пиктограмму ).

9.    Для сохранения запроса нажать на кнопку  и выбрать Сохранение изменения макета.

5.2. Создание запроса в режиме конструктора

Задание. Создать запрос – выборку из таблицы «Студенты» базы данных «Деканат», содержащую сведения о студентах, чьи номера не превышают 1599.

1.    Открыть базу данных «Деканат».

2.    В окне «База_данных» активизировать вкладку Запрос и нажать  кнопку Создать.

3.    Выбрать режим Конструктор и подтвердить выбор.

Рис.38. Создание запроса в режиме Конструктора

 

4.  В появившемся окне «Добавление таблицы» выделить имя таблицы, из которой будет производиться запрос(сейчас это таблица «Студенты»), и нажать кнопку Добавить.

 

Рис.39. Добавление таблицы

 Список полей этой таблицы должен появиться в окне «Запрос на выборку».

5.  Закрыть окно «Добавление таблицы».

6.  В окне «Запрос на выборку» щелкнуть верхнюю левую ячейку, относящуюся к заголовку «Поле».

7.  В ячейке должен появиться значок всплывающего меню, щелкнув по которому мышью, мы увидим список всех доступных  для запроса полей. Выберем в списке имя первого поля  запроса – «Номер».

Рис.40. Выбор полей запроса

8.    Аналогично заполнить другие ячейки первой строки, выбрав следующие поля: «Фамилия», «Имя», «Дата рождения». Установить сортировку по полю «Фамилия».

9.    В строке Условия отбора внести в нужное поле критерий отбора: в поле «Номер» ввести «<1599».

10.              В строке Вывод на экран значок «галочка» означает, что в результате выполнения запроса данное поле будет выводиться на экран.

Рис.41. Ввод условия отбора

11.              Для просмотра отобранных данных, выполнить команду Запрос\Запуск (или использовать пиктограмму ).

12.              Для сохранения запроса нажать на кнопку  и выбрать сохранение изменения макета. Сохранить запрос под именем «Номера».

 

5.3. Формирование условий для отбора

Задание. Сформировать условия отбора студентов и создать запросы к таблице «Студенты» базы данных «Деканат». Отобрать следующих студентов: 1) с отчествами, начинающимися на букву «И»; 2) родившихся в мае; 3) с именами «Алексей» и «Александр».

 

1.    Для задания условий отбора, используются логические операции OR, AND, NOT и различные операторы задания шаблонов. Приведем несколько примеров.

Примеры использования символов задания шаблонов

Использование символов

Образец

Поиск в MS Access

Вопросительный знак ( ? ); в качестве шаблона для любого символа

За?ор

Забор
Затор

Звездочка ( * ); в качестве шаблона для любой группы символов

Д*нь

День
Добрый день
Длинная тень

Звездочка ( * ); в качестве шаблона для любой группы начальных символов

*й

128й
Последний

Знак фунта (#); в качестве шаблона для любой цифры

#

5-й
8-й

Восклицательный знак ( ! ) после первой скобки; для поиска символа, который не входит в данный набор символов

Иванов[!аы]

Иванову
[но не Иванова или Ивановы]

 

2.    Теперь приведем несколько примеров использования условных выражений:

 

Примеры условных выражений

Условные выражения

Вывод записей, которые

Саратов

имеют значение Саратов

Not Саратов

не имеют значение Саратов

In (Саратов, Томск, Уфа)

имеют значение Саратов, Томск или Уфа

<М

начинаются с букв А-Л

>=М

начинаются с букв М-Я

100

имеют числовое значение 100

<=20

имеют числовое значение 20

Date()

имеют значение текущей даты

>=01.01.94

имеют значение даты позднее 01.01.94

Beetween 01.01.93 AND 31.12.93

имеют значение года 1993

*.02.*

имеют значение месяца Февраль

Null

содержат в поле пустое значение

Is Not Null

имеют не пустое значение в поле

Like "Р*"

начинаются с буквы Р

3.    На основе приведенных выше примеров сформируем условия отбора студентов согласно условиям, поставленным в Задании. Так, согласно 1), нам необходимо отобрать студентов с отчествами, начинающимися на букву «И». Используем для этой цели знак «*» как шаблон для любой группы символов. Запись «И*» в строке Условие отбора в поле «Отчество» позволит нам отобрать студентов с необходимым отчеством.

4.    Для отбора студентов, родившихся в мае, можно использовать различные символы. Так, например, если использовать символ «*», то в строке Условие отбора поля «Дата рождения» нужно ввести «*.05.*». Если использовать символ «?», то условие отбора буде иметь вид: «??.05.19??». Аналогичным образом можно использовать знак «#» - условие отбора примет вид «##.05.19##».

5.    Для отбора студентов с заданными именами необходимо использовать логическую операцию OR (ИЛИ). В строке Условие отбора в поле «Имя» нужно ввести следующую запись  «Александр OR Алексей».

 

6.1. Создание многотабличной базы данных

 

Многотабличная база данных – это БД с двумя или более таблицами, между которыми установлены связи, объединяющие их в единое целое. Для создания такой базы данных необходимо провести проектирование БД. Проектирование структуры базы данных - это решение о том, как должны быть организованы поля в базе данных. Необходимо решить, каким образом поля распределяются по таблицам и в каком порядке. Если информация в некоторых полях повторяется в ряде записей, следует подумать о помещении этих полей в отдельную таблицу и установке связей. Это позволяет существенно уменьшить объем базы и повысить точность данных. Например, если у вас имеется много книг одного издательства, вероятно, вместо повторяющегося ввода информации о нем в каждую запись имеет смысл создать таблицу, которая, скажем, будет называться «Издатели», и включить в нее всю эту информацию, назначив каждому издательству идентифицирующий код. После этого в таблице «Книги» достаточно ввести данный код, чтобы установить связь между книгой и ее издателем. Процесс организации полей и распределения их в одной или нескольких таблицах, а также создания связей, называется нормализацией (подробнее мы остановимся на нем в разделе 6.2).

Приведем еще один пример. Допустим, в базе нужно хранить данные о студентах (фамилия, изучаемая дисциплина) и преподавателях (фамилия, номер кафедры, ученая степень, преподаваемая дисциплина). Если хранить данные в одной таблице, то в строке с фамилией студента, изучающего конкретную дисциплину, будут храниться все атрибуты преподавателя, читающего эту дисциплину. Получается огромная избыточность данных. А если хранить данные о студенте в одной таблице, о преподавателе - в другой и установить связь между полями «Читаемая дисциплина» - «Изучаемая дисциплина» (фактически это одинаковые поля), то избыточность хранимых данных многократно уменьшится без ущерба для логической организации информации.

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

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

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

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

Тип создаваемой связи зависит от полей, для которых определяется связь:

·       связь Один-ко-многим создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс, т.е. значения в нем не повторяются;

·       связь Один-к-одному создается в том случае, когда оба связываемых поля являются ключевыми или имеют уникальные индексы;

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

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

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

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

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

Задание 1. Создать многотабличную БД «Деканат» на основе однотабличной БД, добавив в нее таблицы «Сессия» и «Стипендия»  и установить связи между таблицами.

1.    Запустить ACCESS. (Пуск, Программы, MS Access) и открыть созданную ранее БД  «Деканат». Пока там находится одна таблица – «Студенты».

2.    Перед созданием таблиц в режиме конструктора рекомендуется повторить раздел 2.1 «Создание базы данных в режиме конструктора».

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

Сессия

Признак ключа

Поле

Тип поля

Размер поля

Ключ

Номер

Числовое

Целое

 

Оценка 1

Числовое

Целое

 

Оценка 2

Числовое

Целое

 

Оценка 3

Числовое

Целое

 

Оценка 4

Числовое

Целое

 

Результат

Текстовый

5

 

4.    Сохранить эту таблицу под именем «Сессия».

5.    Заполнить таблицу «Сессия» данными: ввести 5 записей, номер студента необходимо взять из таблицы «Студенты», оценки вводить произвольные – от 2 до 5. Что касается поля «Результат», то его значение необходимо вычислять по следующей таблице:

Неуд.

Хор.

Хор1.

Отл.

За удов. и неудов.

За две 4 и более

5 5 5 4

 5 5 5 5

Например, если студент имеет хотя бы одну оценку 2 или 3 по итогам сессии, то его результат – «Неуд». Если у него две четверки и две пятерки, три четверки и одна пятерка, четыре четверки – то его результат – «Хор». Два оставшихся  варианта приведены в таблице.

6.    Закрыть заполненную таблицу.

7.    Создать таблицу «Стипендия» в режиме конструктора. В этой таблице мы будем хранить зависимость размера стипендии от результата сессии. Размер стипендии будет выражен в процентах от минимальной стипендии. Поля таблицы будут такие:

Стипендия

Признак ключа

Поле

Тип поля

Размер поля

Ключ

Результат

Текстовый

5

 

Стипендия

Числовое

Целое, формат - Процентный

8.    Сохранить таблицу под именем «Стипендия».

9.    Заполнить таблицу «Стипендия» в соответствии со следующей таблицей:

Результат

Стипендия

Неуд.

0,00%

Хор.

100,00%

Хор1.

200,00%

Отл.

300,00%

10.              Закрыть заполненную таблицу.

11.              В базе данных «Деканат» должны появиться имена трех таблиц: «Студенты», «Сессия», «Стипендия».

12.              Установить связи между таблицами. Связать между собой таблицы «Студенты» и «Сессия» по полю «Номер», а таблицы «Стипендия» и «Сессия» - по полю «Результат».

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

Рис.42. Добавление таблиц в схему

 

Добавив все таблицы, закрыть окно «Добавление таблицы».

14.              Установить связь между таблицами «Студенты» и «Сессия»: для этого протащить указатель мыши от поля «Номер»  таблицы «Студенты» к полю «Номер» таблицы «Сессия»  при нажатой клавише мыши.

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

Рис.43. Создание межтабличных связей

 

16.              Нажать кнопку Создать.

17.              Установить связь между таблицами «Сессия» и  «Стипендия». Для этого протащить указатель мыши от поля «Результат» таблицы «Сессия» к полю «Результат» таблицы «Стипендия».

Рис.44. Связи между таблицами в БД

 

18.              Закрыть окно «Схема данных», при выходе сохранить связи.

19.              Закрыть базу данных.

 

. Нормализация многотабличной базы данных

Задание. Спроектировать и нормализовать БД «Поликлиника», содержащую сведения о посещении пациентами врачей-терапевтов районной поликлиники.

1.    Выполнить проектирование БД «интуитивным» методом. Очевидно, в базу должны быть включены сведения о фамилии пациента и врача, дате посещения, поставленном диагнозе. Кроме того, обычно каждый врач работает на определенном участке, и каждый пациент прикреплен к одному участку. Помимо фамилии пациента врачу часто необходимы сведения о пациенте (адрес, место работы, должность и т. д.). Но в условии задания сказано, что мы хотим хранить только сведения о посещении пациентами поликлиники. Поэтому сведения об адресе проживания пациента не являются необходимыми (в базе не будут храниться сведения о вызовах врача на дом). Сведения о месте работы и должности обычно интересуют врачей ведомственных поликлиник, поэтому их тоже не будем включать в БД.

2.    Таким образом, получаем БД в виде одной таблицы, состоящей из шести полей: фамилия пациента, дата рождения, номер участка, фамилия врача, дата посещения, диагноз. Примерная таблица после заполнения может выглядеть так:

Фамилия пациента

Дата рождения

Номер участка

Фамилия врача

Дата посещения

Диагноз

 

Лосев О. И.

20.04.65

2

Петрова О.И.

11.03.04

грипп

Орлова Е. Ю.

25.01.47

1

Андреева Е.Н.

05.04.04

бронхит

Жукова Л. Г.

30.09.58

2

Петрова О.И.

22.04.04

ОРЗ

Лосев О. И.

20.04.65

2

Петрова О.И.

30.04.04

грипп

Дуров М. Т.

05.03.70

2

Петрова О.И.

06.05.04

ангина

Орлова Е. Ю.

25.01.47

1

Андреева Е.Н.

15.05.04

гастрит

Быкова А. А.

06.10.30

1

Андреева Е.Н.

17.05.04

ОРЗ

Дуров М. Т.

05.03.70

2

Петрова О.И.

21.05.05

ангина

3.    Очевидно, что полученная в этом примере база данных обладает рядом недостатков. Например, очевидна некоторая избыточность информации (повторение даты рождения одного и того же человека; повторение фамилии врача одного и того же участка). Для избавления от недостатков БД должна быть нормализованной. Обычно в результате нормализации получается многотабличная БД.

БД может считаться нормализованной, если выполнены следующие условия:

1) каждая таблица имеет главный ключ;

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

3) в таблицах отсутствуют группы повторяющихся значений.

4.    Полученная база данных еще не нормализована. В чем недостатки таких БД? Прежде всего - в возможности нарушения достоверности данных. Например, если на втором участке сменится врач, то придется просматривать всю БД и вносить соответствующие изменения во все записи с данным участком. При большом объеме ввода информации часто допускаются ошибки, и вполне возможно, что в каких-то записях фамилия врача будет искажена. Далее очевидно, что один и тот же пациент может посещать врача любое количество раз. И каждый раз нужно заново вводить его фамилию и дату рождения, что влечет за собой не только увеличение вероятности ошибок при вводе, но и требует дополнительного объема памяти при хранении.

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

6.    Прежде всего, определить главный ключ таблицы. Очевидно, что поле «Фамилия пациента» для этой цели не годится, так как один пациент может посещать врача несколько раз. Придется создавать составной ключ: «Фамилия пациента» + «Дата посещения». Очевидно, что в базе есть поле, которое вообще не зависит от главного ключа. Это поле «Фамилия врача», которое зависит от номера участка. Поэтому создадим новую таблицу, состоящую из полей «Номер участка»  и «Фамилия врача». Кроме этого видно, что значения полей «Дата рождения» и «Номер участка» зависят не от главного ключа целиком, а от его части (поля «Фамилия пациента»). Очевидно, что эти поля тоже нужно выделить в отдельную таблицу. Эта таблица будет состоять из трех полей: «Фамилия пациента», «Дата рождения», «Номер участка».

7.    Таким образом, в результате нормализации получаем БД, состоящую из трех таблиц:

Таблица «Посещения».

Фамилия пациента

Дата посещения

диагноз

Лосев О. И.

11.03.04

грипп

Орлова Е. Ю.

05.04.04

бронхит

Жукова Л. Г.

22.04.04

ОРЗ

Лосев О. И.

30.04.04

грипп

Дуров М. Т.

06.05.04

ангина

Орлова Е. Ю.

15.05.04

гастрит

Быкова А. А.

17.05.04

ОРЗ

Дуров М. Т.

21.05.05

ангина

 Таблица «Пациент».

Фамилия пациента

Дата рождения

Номер участка

Лосев О. И.

20.04.65

2

Орлова Е. Ю.

25.01.47

1

Жукова Л. Г.

30.09.58

2

Дуров М. Т.

05.03.70

2

Быкова А. А.

06.10.30

1

Таблица «Врач».

Номер участка

Фамилия врача

2

Петрова О.И.

1

Андреева Е.Н.

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

9.    Если связанное поле подчиненной таблицы содержит только уникальные значения, то создается связь «один-к-одному». Если это поле может содержать повторяющиеся значения, то создается связь «многие-ко-многим».  

 

6.3. Создание отчета и формы для многотабличной базы данных

Задание. Разработать отчет, содержащий по 2 поля из каждой таблицы БД «Деканат», и форму для ввода данных в таблицы «Сессия» и «Студенты». Отчет создавать на основе созданного запроса.

1.    Запустить ACCESS, и открыть базу данных «Деканат». Создать отчета, в котором используется информация из различных таблиц базы данных.

2.    Так как для создания отчета, включающего информацию из различных таблиц, необходимо использовать предварительно созданный запрос, создать простой запрос на основе трех таблиц базы данных, включив в него по 2 поля из каждой таблицы. Например, из таблицы «Студенты» включить поля «Фамилия» и «Имя», из таблицы «Сессия» - «Номер» и «Оценка1», из таблицы «Стипендия» - «Результат» и «Стипендия». Расположить эти поля в нужном порядке. В результате должен получиться следующий запрос:

1

Рис.45. Создание запроса

4.    В строке «Условие отбора» в поле «Стипендия» введем «>0».

5.    Сохранить запрос под именем «Приказ».

6.    В окне «База данных» активизировать вкладку Отчет и нажать кнопку Создать.

7.    В окне  «Новый отчет» выбрать Мастер отчетов и источник данных – запрос «Приказ».

1

Рис.46. Выбор полей для отчета

8.    Выбрать для отчета все поля запроса, используя кнопку , нажать кнопку Далее. Вид представления данных задать по таблице «Студенты» и нажать кнопку Далее.

9.    Уровни группировки не задавать, сортировка – вначале по полю «Процент» по возрастанию, затем по полю «Фамилия» также по возрастанию. Нажать на кнопку Далее.

10.              Выбрать макет Табличный, стиль Полужирный. В качестве имени отчета ввести «Приказ», выбрать пункт Просмотреть отчет и нажать на кнопку Готово. Просмотреть готовый отчет и закрыть его.

11.              Если необходимо сделать какие-либо изменения макета отчета, представить его в режиме Конструктора. Для этого использовать меню Вид, Конструктор или пиктограмму Вид.

12.              Теперь создать форму для ввода данных сразу в таблицы «Студенты» и «Сессия».

13.              Сначала создать форму на основе таблицы «Сессия» с использованием Мастера, включив в форму все поля таблицы (при необходимости повторите раздел 4.3 «Создание формы в режиме мастера»). При выборе внешнего вида формы использовать расположение В один столбец. Дать форме имя «Сессия». Должна получиться форма, примерно похожая на ту, которая изображена на рис.47.

Рис.47. Готовая форма

14.              Теперь создать форму на основе таблицы «Студенты», включив в нее все поля. Внешний вид формы - «Табличный вид». Дать имя форме «Итоги сессии» и закрыть форму.

15.              Форму «Сессия» открыть в режиме Конструктора. Для переключения между режимом просмотра формы и режимом просмотра конструктора формы можно использовать меню Вид или пиктограмму Вид на панели инструментов .

16.              Расширить область данных формы «Сессия». Перенести, удерживая левую кнопку мыши, из окна «База данных» пиктограмму формы «Итоги сессии» в нижнюю часть поля формы «Сессия».

Рис.48. Создание формы в конструкторе

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

18.              Добавить 5 записей, используя полученную составную форму: сначала заполнять поля из таблицы «Студенты», затем – поля из таблицы «Сессия». Закрыть форму.

 

Построение запросов к многотабличной базе данных

Задание. Создать запрос, включив в него поля из разных таблиц многотабличной базы данных «Деканат». Построить запрос, позволяющий выводить фамилию, имя, отчество и номер группы студентов, которым может быть назначена стипендия (то есть процент стипендии больше нуля), и размер стипендии в процентах. Информация для получения таких данных находится в трех таблицах «Студенты», «Сессия», «Стипендия».

1.    При необходимости повторить раздел 5.1 «Создание простого запроса» и раздел 5.3 «Формирование условий для отбора».

2.    В окне «База данных» создадим новый запрос на основе связанных таблиц. Для этого активизировать вкладку Запрос и нажать кнопку Создать.

3.    В появившемся окне «Новый запрос»  выбрать Простой запрос (с использованием Мастера запросов) и подтвердить выбор.

4.    В окне «Создание простых запросов» выбрать из таблицы «Студенты» поля: «Фамилия», «Имя», «Отчество», «Группа»; из таблицы «Стипендия» – поле «Стипендия». Нажать кнопку Далее.

5.    Выбрать пункт «Подробный отчет», нажать кнопку Далее. Дать запросу имя «Приказ», выбрать пункт «Изменить макет запроса» и нажать кнопку Готово.

6.    В полученной таблице в строке Условие отбора установить по полю «Процент» выражение «>0», т.е. вывод тех студентов, у которых сессия была сдана на положительные оценки.

Рис.49. Создание запроса с данными из разных таблиц

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

8.    Закрыть запрос, сохранив изменения макета.

 

Hosted by uCoz