Просмотр содержимого документа
«MS Access. Лабораторная работа. Создание многотабличной базы данных. (Учитель информатики Дряева М.Г.)»
Лабораторная работа
Организация работы с данными в СУБД MS Access
Проектирование и нормализация БД
Цель работы: освоение основных приёмов работы с базой данных в среде СУБД MS Access:
нормализация БД;
создание многотабличной БД;
создание структуры БД в режиме «Конструктор» или в режиме «Мастер»;
создание БД, ввод и редактирование данных;
самостоятельное определение ключевого поля таблицы;
установка связей между таблицами;
поиск данных с помощью Запросов;
создание подчиненной Формы.
Ход выполнения работы:
Спроектировать БД «Поликлиника», в которой будут храниться сведения о посещении пациентами врачей-терапевтов районной поликлиники.
Выполнив проектирование БД «интуитивным» методом мы получим следующую таблицу:
БД «Поликлиника»
Фамилия пациента | дата рожден. | № уч. | фамилия врача | дата посещения | диагноз |
Лосев О.И. | 13.04.1959 | 1 | Андреева И.В. | 11.04.2004 | грипп |
Орлова Е.Ю. | 25.01.1955 | 1 | Андреева И.В. | 11.07.2004 | гастрит |
Лосев О.И. | 13.04.1959 | 1 | Андреева И.В. | 26.07.2004 | бронхит |
Дуров М.Т. | 05.03.1948 | 2 | Петрова О.И. | 14.03.2004 | стенокардия |
Жукова Л.Г. | 30.01.1970 | 2 | Петрова О.И. | 11.04.2004 | ангина |
Орлова Е.Ю. | 25.01.1955 | 1 | Андреева И.В. | 05.05.2004 | ОРЗ |
Быкова А.А. | 01.04.1975 | 1 | Андреева И.В. | 15.06.2004 | ОРЗ |
Дуров М.Т. | 05.03.1948 | 2 | Петрова О.И. | 26.07.2004 | ОРЗ |
Ерёмин К.Д. | 03.09.1951 | 3 | Селезнёва Т.М. | 03.10.2004 | грипп |
Ларина Н.К. | 14.03.1967 | 3 | Селезнёва Т.М. | 20.11.2004 | ларингит |
Полученная БД обладает рядом недостатков. Например, очевидна некоторая избыточность информации (повторение даты рождения одного и того же человека; повторение фамилии врача одного и того же участка). Для избавления от недостатков БД должна быть нормализованной. Обычно в результате нормализации получается многотабличная БД.
В результате нормализации данной БД получим БД, состоящую из трёх таблиц.
Загрузите СУБД Access.
Создайте три таблицы: Таблица – Посещения, Таблица –Пациент и Таблица – Врач. Структуру каждой таблицы задайте самостоятельно, определив типы данных. Следует определить главные ключи таблиц:
для Таблицы –Пациент – главный ключ Фамилия пациента.
для Таблицы – Врач– главный ключ Номер участка
для Таблицы – Посещения придётся создавать составной главный ключ: Фамилия пациента + Дата посещения (т.к. один пациент может посещать врача несколько раз)
Для определения ключевого поля необходимо выделить в режиме конструктора строку, определяющую это поле, вызвать контекстное меню (правой клавишей мыши) и выбрать команду Ключевое поле или выполнить команду Правка - Ключевое поле, а если мы создаём составной главный ключ, то соответственно, выделить оба поля одновременно.
Пациент |
Фамилия пациента | Дата рождения | Номер участка |
Быкова А.А. | 01.04.1975 | 1 |
Дуров М.Т. | 05.03.1948 | 2 |
Ерёмин К.Д. | 03.09.1951 | 3 |
Жукова Л.Г. | 30.01.1970 | 2 |
Ларина Н.К. | 14.03.1967 | 3 |
Лосев О.И. | 13.04.1959 | 1 |
Орлова Е.Ю. | 25.01.1955 | 1 |
Посещения |
Фамилия пациента | Дата посещения | Диагноз |
Быкова А.А. | 15.06.2004 | ОРЗ |
Дуров М.Т. | 14.03.2004 | стенокардия |
Дуров М.Т. | 26.07.2004 | ОРЗ |
Жукова Л.Г. | 11.04.2004 | ангина |
Ларина Н.К. | 20.11.2004 | ларингит |
Лосев О.И | 11.04.2004 | грипп |
Лосев О.И. | 26.07.2004 | бронхит |
Орлова Е.Ю. | 05.05.2004 | ОРЗ |
Орлова Е.Ю. | 11.07.2004 | гастрит |
Врач | |
Номер участка | Фамилия врача | |
1 | Андреева И.В. | |
2 | Петрова О.И. | |
3 | Селезнёва Т.М. | |
Для успешной работы с многотабличными базами данных обычно требуется установить между ними связи. При установке связей обычно пользуются терминами базовая таблица и подчиненная таблица. Связь создаётся парой полей, одно из которых находится в базовой таблице, а другое – в подчиненной.
Свяжем между собой таблицы БД «Поликлиника». В качестве базовой таблицы возьмём таблицу «Пациент». С таблицей «Посещения» свяжем её через поле Фамилия пациента, а с таблицей «Врач» - через поле Номер участка.
При формировании запросов к многотабличным базам данных нужно указывать, к какой таблице относится то или иное поле. Обычно название таблицы отделяется от названия поля точкой. Конечно, формирование запросов с использованием полей из различных БД имеет смысл только в том случае, если между таблицами установлены связи.
Какие сведения о посещении пациентами поликлиники будут выведены на экран, если в запросе к БД «Поликлиника» указано следующее условие поиска:
все пациенты первого участка, посетившие поликлинику во второй половине 2004 года (после 1 июля)
Очевидно, что для получения ответа на этот запрос потребуется информация из двух таблиц – «Посещения» и «Пациент».
Попробуйте создать подчинённую Форму «Врач», содержащую сведения: Фамилия пациента и Номер участка (из таблицы «Пациент») и Фамилию врача (из таблицы «Врач»).
БД «Поликлиника»
Фамилия пациента | дата рожден. | № уч. | фамилия врача | дата посещения | диагноз |
Лосев О.И. | 13.04.1959 | 1 | Андреева И.В. | 11.04.2004 | грипп |
Орлова Е.Ю. | 25.01.1955 | 1 | Андреева И.В. | 11.07.2004 | гастрит |
Лосев О.И. | 13.04.1959 | 1 | Андреева И.В. | 26.07.2004 | бронхит |
Дуров М.Т. | 05.03.1948 | 2 | Петрова О.И. | 14.03.2004 | стенокардия |
Жукова Л.Г. | 30.01.1970 | 2 | Петрова О.И. | 11.04.2004 | ангина |
Орлова Е.Ю. | 25.01.1955 | 1 | Андреева И.В. | 05.05.2004 | ОРЗ |
Быкова А.А. | 01.04.1975 | 1 | Андреева И.В. | 15.06.2004 | ОРЗ |
Дуров М.Т. | 05.03.1948 | 2 | Петрова О.И. | 26.07.2004 | ОРЗ |
Ерёмин К.Д. | 03.09.1951 | 3 | Селезнёва Т.М. | 03.10.2004 | грипп |
Ларина Н.К. | 14.03.1967 | 3 | Селезнёва Т.М. | 20.11.2004 | ларингит |
4