Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_БД_Заказ.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.01 Mб
Скачать

2.2. Логическая и физическая модели данных средствами eRwin

Спроектируем описанную модель с помощью CASE-средства ERwin.

Преобразование логической модели в физическую в ERwin производится автоматически. Схема физической модели выглядит аналогично. Таблицам и колонкам физической модели по умолчанию присвоены те же имена, что и сущностям и атрибутам логического уровня. Эти таблицы и колонки полностью определяют будущие таблицы и поля базы данных в среде выбранной СУБД (в нашем случае Access).

2.3. Программная реализация задачи средствами субд Access

В базе данных Access основными объектами являются таблицы, запросы, формы, отчеты, макросы и модули. Таблица – это объект, который определяется и используется для хранения данных. Каждая таблица включает информацию об объекте определенного типа, например о клиентах. Таблица содержит поля (столбцы), в которых хранятся различного рода данные, например фамилия или адрес клиента, и записи (которые называются также строками). В записи собрана вся информация о некотором объекте (человеке, образце продукции и т.п.). Для каждой таблицы можно определить первичный ключ (одно или несколько полей, содержащих уникальные для каждой записи значения) и один или несколько индексов, помогающих ускорить доступ к данным.

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

Запрос – это объект, который позволяет пользователю получить нужные данные из одной или нескольких таблиц. Для создания запроса используются инструкции SQL (структурированный язык запросов). Можно создать запросы на выборку, обновление, удаление или добавление данных. С помощью запросов можно также создавать новые таблицы, используя данные из одной или нескольких существующих таблиц.

SQL-запросы:

  1. С использованием логических операторов, а так же операторов Like и Between. Выбрать из таблицы Товар диваны с ценой от 10 000 рублей:

SELECT TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE

FROM TOVAR

WHERE (((TOVAR.NAIMTOVAR) Like "Диван*") AND ((TOVAR.PRICE)>=10000));

  1. Параметрический запрос. Выбрать из таблицы Товар товары с ценой менее указанной:

SELECT TOVAR.KODTOV, TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE

FROM TOVAR

WHERE (((TOVAR.PRICE)<[Цена]));

  1. Вычисляемое текущее поле. Из таблицы Товар выбрать все поля и создать новое текущее поле Новая_цена, в котором вычисляется цена путем умножения старой цены на коэффициент 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 "Стол*"));

  1. Вычисляемые итоговые поля. Из таблицы Товар выбрать поле Код товара для подсчета числа записей и рассчитать среднюю цену по полю Цена:

SELECT Count([TOVAR].[KODTOV]) AS [Кол-во], Int(Avg([TOVAR].[PRICE])) AS Ср_цена

FROM TOVAR;

  1. Связанные таблицы. Из таблицы Производитель выбрать Наименование производителя, из таблицы Товар выбрать Наименование товара и Цену товара. Выбирать только те товары, у которых цена более 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));

  1. Подчиненный запрос. Из таблицы Товар выбрать только те товары, у которых цена больше средней цены всех товаров:

SELECT TOVAR.KODTOV, TOVAR.INN_PROIZ, TOVAR.NAIMTOVAR, TOVAR.EDIZM, TOVAR.PRICE

FROM TOVAR

WHERE (([TOVAR].[PRICE]>All (SELECT AVG([PRICE]) FROM [TOVAR])));

  1. Индивидуальное задание. Получить перечень товаров, количество которых в заказах заданного покупателя превысило заданное число. Выбор производить из заказов за последние шесть месяцев:

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])=[ЗАКАЗЧИК]));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]