Пример создания базы данных в Access "Деятельность cпортивного клуба"
Рассмотрим
основное отношение, соответствующее варианту задания «Деятельность
спортивного клуба»:
Код клиента, фамилия имя, телефон, код абонемента, описание, цена, код зала,
наименование, код тренера, фамилия имя тренера, оклад, месяц, произведена
оплата. Спроектируем базу данных.
Скачать базу данных "Спортивный клуб" в Access
Определим атрибуты и их типы значений
Данное отношение находится в первой нормальной форме, поскольку все его атрибуты являются неделимыми, и имеет составной ключ: Код клиента, код зала, код тренера, код абонемента.
Некоторые атрибуты зависят только от части составного ключа. Устраним частичную зависимость и переведем это отношение во вторую нормальную форму путем декомпозиции основного отношения на следующие отношения:
1) код
клиента, фамилия имя, телефон, код тренера;
2) код абонемента, описание, цена, код зала;
3) код зала, наименование;
4) код тренера, фамилия имя тренера, оклад;
5) код клиента, код абонемента, месяц, произведена оплата.
Отношения 1,2,3,4,5 находятся в третьей нормальной форме, поскольку они находятся во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Определение ключей и создание связей схемы связей.
В 1-ой таблице
первичный ключ – код клиента, атрибут код тренера является
внешним ключом к таблице 4.
Во 2-ой таблице первичный ключ- код абонемента.
Атрибут код зала является внешним ключом по отношению к
таблице 3.
В 3-ей таблице первичный ключ- код зала.
В 4-ой таблице первичный ключ – код тренера.
В 5-ой таблице составной первичный ключ - код клиента, код
абонемента, месяц.
Создадим схему связей между атрибутами таблиц для обеспечения целостности БД.
Создание файла базы данных в СУБД Microsoft Access 2003.
Создадим файл
спроектированной БД в СУБД Microsoft Access 2003. Для этого запустим программу
Microsoft Access 2003, выберем в окне команду Создать файл, затем в окне
Создание файла выберем пункт Новая база данных и укажем диск, каталог и имя
«Деятельность музея».
Создадим таблицы, для этого выберем объект Таблицы и кнопку Создать. В режиме
Конструктор создадим таблицы.
С помощью
запроса изменим структуру таблицы: В таблицу Тренеры добавим атрибут
Телефон:
ALTER TABLE Тренеры ADD COLUMN Телефон CHAR(10);
В окне базы данных выберем объект Таблицы, установим курсор на нужную таблицу и нажмем кнопку Открыть. В режиме Таблицы введем записи в таблицы. Получим:
Изменение структуры таблиц с помощью SQL запроса
С помощью
SQL-запроса изменим структуру таблицы Залы. Добавим атрибут Площадь, тип данных
– числовой.
ALTER TABLE Залы ADD COLUMN Площадь FLOAT;
Создание SQL запросов в MS Access для манипулирования данными
Запрос на создание таблицы Тренеры:
CREATE TABLE Тренеры (Код_тренера INT NOT NULL PRIMARY KEY, Фамилия_имя_тренера CHAR (40) NOT NULL, Оклад MONEY NOT NULL);
Запрос на добавление данных в таблицу Залы:
INSERT INTO
Залы ( Код_зала, Наименование )
VALUES (1001, 'Бассейн 25м');
Запрос на обновление данных в таблице Абонементы – ежемесячную цену поднимем на 10%
UPDATE Абонементы SET Абонементы.Цена = "Цена*1,1";
Запрос на удаление данных из таблицы Учет – удалим записи января месяца:
DELETE
Учет.Месяц
FROM Учет
WHERE Учет.Месяц="январь";
SQL запросы в Access для выборки данных
Напишем запросы SQL для выборки данных.
Выберем
клиентов, занимающихся в бассейне 25м:
SELECT Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Залы.Код_зала
FROM Клиенты INNER JOIN (Залы INNER JOIN (Абонементы INNER JOIN Учет ON
Абонементы.Код_абонемента=Учет.Код_абонемента) ON
Залы.Код_зала=Абонементы.Код_зала) ON Клиенты.Код_клиента=Учет.Код_клиента
GROUP BY Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Залы.Код_зала
HAVING (((Залы.Код_зала)=1001));
Получим:
Подсчитаем
количество человек, занимающихся у каждого тренера:
SELECT Тренеры.Код_тренера, Тренеры.Фамилия_имя_тренера,
Count(Клиенты.Код_клиента) AS Количество
FROM Тренеры INNER JOIN Клиенты ON Тренеры.Код_тренера = Клиенты.Код_тренера
GROUP BY Тренеры.Код_тренера, Тренеры.Фамилия_имя_тренера;
Получим:
Вычислим
премию для тренеров с больше чем одним клиентом в виде 40% от оклада:
SELECT Тренеры.Код_тренера, Тренеры.Фамилия_имя_тренера,
Count(Клиенты.Код_клиента) AS Количество, [Оклад]*0.4 AS Премия
FROM Тренеры INNER JOIN Клиенты ON Тренеры.Код_тренера=Клиенты.Код_тренера
GROUP BY Тренеры.Код_тренера, Тренеры.Фамилия_имя_тренера, [Оклад]*0.4
HAVING (((Count(Клиенты.Код_клиента))>1));
Выберем клиентов-должников
SELECT
Клиенты.Код_клиента, Учет.Произведена_оплата
FROM Клиенты INNER JOIN Учет ON Клиенты.Код_клиента = Учет.Код_клиента
WHERE (((Учет.Произведена_оплата)=No));
Создание однотабличного подзапроса:
SELECT
Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя
FROM Клиенты
WHERE (((Клиенты.Код_клиента) In (SELECT Учет.Код_клиента FROM Учет
WHERE (Учет.Месяц)="июнь")));
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.