Образовательный материал

Тема: Создание базы данных в Access "Деятельность музея"

Цель урока: С помощью Access создать базу данных "Деятельность музея"

Задачи урока:

Обучающие: освоить технологию практического применения Access, повторить, закрепить и углубить знания учащихся в области создания SQL-запросов;
Развивающие: уметь создать базу данных из нескольких связных таблиц, уметь изменять данные с помощью SQL- запросов в MS Access: запрос на добавление данных в таблицу, запрос на удаление данных из таблицы, запрос на обновление данных, запрос на создание таблицы.
Воспитывающие: развитие самостоятельности, внимательности, аккуратности, умение работать индивидуально по заданной теме.

Оборудование: Компьютер преподавателя, проектор, рабочие станции учащихся, ОС Windows XP, Microsoft Office.

Задача:
Рассмотрим основное отношение, соответствующее теме «Деятельность музея»: Код экспоната, Наименование, Код зала, Дата поступления, Автор, Материал, Техника, Наименование зала, Код ответственного, Код сотрудника, ФИО, Оклад, Должность, Код экскурсии, Время проведения, График, Срок действия. Данное отношение находится в первой нормальной форме, поскольку все его атрибуты являются неделимыми и имеет составной ключ: Код экспоната, Код зала, Код сотрудника, Код экскурсии.
Приведение отношения к третьей нормальной форме
Некоторые атрибуты зависят только от части составного ключа. Устраним частичную зависимость и переведем это отношение во вторую нормальную форму путем декомпозиции основного отношения на следующие отношения: 1) Код экспоната, Наименование, Код зала, Дата поступления, Автор, Материал, Техника  2) Код зала, Наименование зала, Код ответственного  3) Код сотрудника, ФИО, Оклад, Должность  4) Код экскурсии, Время проведения, График, Срок действия, Код ответственного, Стоимость. Отношения 1,2,3 и 4 находятся в третьей нормальной форме, поскольку они находятся во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа. Итак, спроектировали 4 таблицы.
Определение ключей и создание связей схемы связей.
Определим первичные и внешние ключи в таблицах и необходимые связи между атрибутами таблиц для обеспечения целостности БД. В 1-ой таблице первичный ключ - Код экспоната. Атрибут Код зала является внешним ключом к таблице 2. Во 2-ой таблице первичный ключ- Код зала. Атрибут Код ответственного является внешним ключом по отношению к таблице 3. В 3-ей таблице первичный ключ- Код сотрудника. В 4-ой таблице первичный ключ - Код экскурсии, атрибут Код ответственного является внешним ключом по отношению к таблице 3. Создадим схему связей между атрибутами таблиц для обеспечения целостности БД.
[ Cкачайте файл, чтобы посмотреть картинку ]
Создание файла базы данных в СУБД Microsoft Access 2003.
Создадим файл спроектированной БД в СУБД Microsoft Access 2003. Для этого запустим программу Microsoft Access 2003, выберем в окне команду Создать файл, затем в окне Создание файла выберем пункт Новая база данных и укажем диск, каталог и имя «Деятельность музея».  Создадим таблицы, для этого выберем объект Таблицы и кнопку Создать. В режиме Конструктор создадим таблицы со следующей структурой:
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]

[ Cкачайте файл, чтобы посмотреть картинку ]




Изменение структуры таблиц с помощью SQL запроса
С помощью SQL-запроса изменим структуру таблицы Залы. Добавим атрибут Площадь, тип данных – числовой. ALTER TABLE Залы ADD COLUMN Площадь FLOAT;
Внесение данных в таблицы.
В окне базы данных выберем объект Таблицы, установим курсор на нужную таблицу и нажмем кнопку Открыть. В режиме Таблицы введем записи в таблицы:
13 INCLUDEPICTURE "htt
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Изменение данных с помощью SQL запросов в MS Access
Запрос на добавление данных в таблицу Залы: INSERT INTO Залы ( [Код зала], Наименование, [Код ответственного], Площадь ) VALUES (6, "Серебряный", 1, 145);
Запрос на удаление данных из таблицы Сотрудники Удалим записи с фамилией сотрудника, содержащей « Мечникова»: 
DELETE ФИО FROM Сотрудники WHERE ФИО LIKE “Мечникова”;
Запрос на обновление данных. В таблице Издания увеличим стоимость объявлений изданий с кодами 1711 и 1712.
UPDATE Сотрудники SET Оклад = Оклад*1.2 WHERE (Сотрудники.Должность Like "*контроллер");
Запрос на создание таблицы Расписание:
SELECT Экскурсии.[Время проведения], Экскурсии.График, Сотрудники.ФИО INTO Расписание FROM Сотрудники INNER JOIN Экскурсии ON Сотрудники.[Код сотрудника] = Экскурсии.[Код ответственного];
Получим:
Расписание

Время проведения
График
ФИО

10:00:00
суббота
Лисина Л.Б.

11:30:00
ежедневно
Лисина Л.Б.

15:15:00
по четным
Коваленко Т.Ю.

12:00:00
выходные
Коваленко Т.Ю.

15:00:00
по нечетным
Лисина Л.Б.

11:00:00
ежедневно
Быков А.М..

17:00:00
с 1-3 каж. мес.
Быков А.М..

14:00:00
среда
Быков А.М..

12:45:00
среда
Лисина Л.Б.

16:00:00
вторник
Быков А.М..





SQL запросы в Access для выборки данных
Напишем запросы SQL для выборки данных. SELECT Сотрудники.ФИО, Залы.Наименование, Залы.Площадь FROM Сотрудники INNER JOIN Залы ON Сотрудники.[Код сотрудника] = Залы.[Код ответственного]; Получим:
Запрос4

ФИО
Наименование
Площадь

Мухина Д.Н.
Главный
185

Мухина Д.Н.
Современный
80

Бондаренко А.С.
Серебряный
145

Бондаренко А.С.
Золотой
68

Астахов Е.А.
Бронзовый
84

Лучко К.С.
Рубиновый
112

Выберем экскурсии, стоимость которых больше 100р и отсортируем по возрастанию цены:  SELECT [Код экскурсии], [Время проведения], График, [Срок действия], Стоимость FROM Экскурсии WHERE (Стоимость>100) ORDER BY Стоимость;
Получим:
Запрос5

Код экскурсии
Время проведения
График
Срок действия
Стоимость

10
16:00:00
вторник
01.08.2010
120,00р.

4
12:00:00
выходные
30.06.2010
120,00р.

7
17:00:00
с 1-3 каж. Мес.
01.08.2010
130,00р.

1
10:00:00
суббота
31.05.2010
150,00р.

Вычислим средний оклад сотрудников музея по должностям:
SELECT Должность, Avg(Оклад) AS [Средний оклад] FROM Сотрудники GROUP BY Должность;
Запрос6

Должность
Средний оклад

гл. контроллер
9 120,00р.

искусствовед
9 000,00р.

контроллер
8 040,00р.

тех. сотрудник
4 500,00р.

экскурсовод
9 266,67р.

Вычислим, сколько экскурсий закреплено за каждым экскурсоводом с помощью групповой операции Count: SELECT Сотрудники.ФИО, Count(Экскурсии.[Код ответственного]) AS [Количество экскурсий] FROM Сотрудники INNER JOIN Экскурсии ON Сотрудники.[Код сотрудника] = Экскурсии.[Код ответственного] GROUP BY Сотрудники.ФИО ORDER BY Count(Экскурсии.[Код ответственного]);



Запрос7

ФИО
Количество экскурсий

Коваленко Т.Ю.
2

Лисина Л.Б.
4

Быков А.М..
4

Создание однотабличного подзапроса:  SELECT Сотрудники.ФИО, Экскурсии.График, Экскурсии.Стоимость FROM Сотрудники INNER JOIN Экскурсии ON Сотрудники.[Код сотрудника] = Экскурсии.[Код ответственного] WHERE (Экскурсии.[Код экскурсии]) In (SELECT [Код экскурсии] FROM Экскурсии WHERE ([Время проведения]<#12:0:0#));
Запрос8

ФИО
График
Стоимость

Лисина Л.Б.
суббота
150,00р.

Лисина Л.Б.
ежедневно
60,00р.

Быков А.М..
ежедневно
60,00р.

Создание многотабличного подзапроса: Выберем тех сотрудников, которые ответственны за залы с площадью большей 100 м2: SELECT Сотрудники.[Код сотрудника], Сотрудники.ФИО, Сотрудники.Должность FROM Сотрудники WHERE (Сотрудники.[Код сотрудника]) In (SELECT Залы.[Код ответственного] FROM Залы WHERE (Залы.Площадь)>100);
Запрос9

Код сотрудника
ФИО
Должность

1
Мухина Д.Н.
контроллер

3
Бондаренко А.С.
гл. контроллер

7
Лучко К.С.
контроллер





Схема связей базы данныхСтруктура таблицы ЗалыСтруктура таблицы ЭкскурсииПример заполнения таблицы Сотрудники Заголовок 215