- •Кафедра «Информационные системы в экономике и менеджменте» отчет о лабораторных работах по дисциплине базы данных
- •1. Постановка задачи 3
- •Введение.
- •1. Постановка задачи
- •1.1. Формулировка задания.
- •1.2. Обзор предметной области
- •2. Выполнение работы
- •2.1. Этапы построения логической модели предметной области
- •2.2. Логическая и физическая модели данных средствами eRwin
- •2.3. Программная реализация задачи средствами субд Access
- •Список использованной литературы
2.2. Логическая и физическая модели данных средствами eRwin
Спроектируем описанную модель с помощью CASE-средства ERwin.
Преобразование
логической модели в физическую в ERwin
производится автоматически. Схема
физической модели выглядит аналогично.
Таблицам и колонкам физической модели
по умолчанию присвоены те же имена, что
и сущностям и атрибутам логического
уровня. Эти таблицы и колонки полностью
определяют будущие таблицы и поля базы
данных в среде выбранной СУБД (в нашем
случае Access).
2.3. Программная реализация задачи средствами субд Access
В базе данных Access основными объектами являются таблицы, запросы, формы, отчеты, макросы и модули. Таблица – это объект, который определяется и используется для хранения данных. Каждая таблица включает информацию об объекте определенного типа, например о клиентах. Таблица содержит поля (столбцы), в которых хранятся различного рода данные, например фамилия или адрес клиента, и записи (которые называются также строками). В записи собрана вся информация о некотором объекте (человеке, образце продукции и т.п.). Для каждой таблицы можно определить первичный ключ (одно или несколько полей, содержащих уникальные для каждой записи значения) и один или несколько индексов, помогающих ускорить доступ к данным.
Была осуществлена генерация спроектированной ранее базы данных в СУБД Access, внесены соответствующие корректировки. Были заполнены данными все таблицы.
Запрос – это объект, который позволяет пользователю получить нужные данные из одной или нескольких таблиц. Для создания запроса используются инструкции SQL (структурированный язык запросов). Можно создать запросы на выборку, обновление, удаление или добавление данных. С помощью запросов можно также создавать новые таблицы, используя данные из одной или нескольких существующих таблиц.
SQL-запросы:
С использованием логических операторов, а так же операторов Like и Between. Выбрать из таблицы Товар диваны с ценой от 10 000 рублей:
SELECT TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE
FROM TOVAR
WHERE (((TOVAR.NAIMTOVAR) Like "Диван*") AND ((TOVAR.PRICE)>=10000));
Параметрический запрос. Выбрать из таблицы Товар товары с ценой менее указанной:
SELECT TOVAR.KODTOV, TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE
FROM TOVAR
WHERE (((TOVAR.PRICE)<[Цена]));
Вычисляемое текущее поле. Из таблицы Товар выбрать все поля и создать новое текущее поле Новая_цена, в котором вычисляется цена путем умножения старой цены на коэффициент 1,1:
SELECT TOVAR.KODTOV, TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE, [TOVAR].[PRICE]*1.1 AS NEW_PRICE
FROM TOVAR
WHERE (((TOVAR.NAIMTOVAR) Like "Стол*"));
Вычисляемые итоговые поля. Из таблицы Товар выбрать поле Код товара для подсчета числа записей и рассчитать среднюю цену по полю Цена:
SELECT Count([TOVAR].[KODTOV]) AS [Кол-во], Int(Avg([TOVAR].[PRICE])) AS Ср_цена
FROM TOVAR;
Связанные таблицы. Из таблицы Производитель выбрать Наименование производителя, из таблицы Товар выбрать Наименование товара и Цену товара. Выбирать только те товары, у которых цена более 10 000 рублей:
SELECT PROIZV.NAIMPROIZ, TOVAR.NAIMTOVAR, TOVAR.PRICE
FROM PROIZV INNER JOIN TOVAR ON PROIZV.INN_PROIZ = TOVAR.INN_PROIZ
WHERE (((TOVAR.PRICE)>10000));
Подчиненный запрос. Из таблицы Товар выбрать только те товары, у которых цена больше средней цены всех товаров:
SELECT TOVAR.KODTOV, TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE
FROM TOVAR
WHERE (([TOVAR].[PRICE]>All (SELECT AVG([PRICE]) FROM [TOVAR])));
Индивидуальное задание. Получить перечень товаров, количество которых в заказах заданного покупателя превысило заданное число. Выбор производить из заказов за последние шесть месяцев:
SELECT TOVAR.NAIMTOVAR, ZAKAZ.KOL, TOVAR.PRICE, [TOVAR]![PRICE]*[ZAKAZ]![KOL] AS Сумма, ZAKAZ.DATAZAK
FROM TOVAR INNER JOIN ZAKAZ ON TOVAR.KODTOV = ZAKAZ.KODTOV
WHERE (([KOL]>[Limit kol]) AND ((ZAKAZ.DATAZAK) Between DateAdd("m",-6,Now()) And Now()) AND (([ZAKAZ]![INN_ZAK])=[ЗАКАЗЧИК]));
