Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИАД-лекции.doc
Скачиваний:
7
Добавлен:
22.11.2019
Размер:
788.48 Кб
Скачать

Запрос на обновление

Таблица:

Товары

Товары

Поле:

Цена

Сорт

Обновление:

Цена/2

Усл. отбора:

3

или:

Рисунок 5.8. Пример описания запроса на языке QBE

Рассмотрим пример реляционной базы данных (Таблица 5 .2, Таблица 5 .3, Таблица 5 .4) по некоторой организации, торгующей по заказам, которые заранее делают ее клиенты, причем каждый заказ оформляется лишь на один товар. Запись БД - это любая строка любой такой таблицы, она содержит данные об одном объекте (клиенте, товаре, заказе). Поле БД - это любой столбец любой такой таблицы, он содержит данные обо всех значениях одного атрибута клиента, товара или заказа. Чтобы однозначно идентифицировать объекты при проектировании БД искусственно вводят ключевые поля, в нашем случае это поля КодКлиента, КодТовара, КодЗаказа. Действительно, значение поля ФИО, например, Николаев М.П. не может однозначно идентифицировать человека, среди клиентов может быть много таких людей.

Существует три типа реляционных связей между таблицами: один к одному; один ко многим; многие ко многим. Так в нашем примере таблица Клиенты и таблица Заказы имеют связь один ко многим по полю КодКлиента поскольку любое значение кода клиента (например, 6) может встречаться в таблице Клиенты только 1 раз (это Петров С.В., мужчина из Москвы, рождения 16.02.1953), а в таблице Заказы это значение может встречаться многократно (клиент с кодом 6 сделал 4 заказа). Аналогично таблица Товары и таблица Заказы имеют связь один ко многим по полю КодТовара.

При проектировании БД стараются исключить дублирование каких либо данных в таблицах. При наличии дублирования данных они могут стать противоречивыми в процессе работы с БД. Так, например, пусть женщина Иванова М.А. вышла замуж и стала Петровой М.А., в нашем случае дублирования нет и необходимо поменять фамилию лишь в одной клетке. А если бы Иванова М.А. была бы записана в трех местах разных таблиц? Предположим, работающий с БД менеджер в двух местах фамилию поменял, а в третьем - забыл. В результате мы имели бы в БД противоречивые данные. Проектируют и создают БД специалисты в области БД, а затем работают с этими БД обычные пользователи ЭВМ. Поэтому БД также считаются программным продуктом.

Если мы хотим выполнить над БД какие либо глобальные операции, например, снизить в 2 раза цену всех товаров 3 сорта, то для автоматизации выполнения таких операций нужно уметь писать запросы к БД. При большом объеме данных выполнение таких операций вручную слишком трудоемко для человека. Существует 2 языка описания запросов - язык SQL и язык QBE. Наш запрос на SQL выглядел бы так:

UPDATE Товары

SET Товары.Цена=Товары.Цена/2

WHERE Товары.Сорт=3;

Точка с запятой (;) в конце ставится потому, что наш запрос представляет собой лишь одну команду SQL, далее может идти еще одна команда и т.д. Всякая команда завершается точкой с запятой. Товары.Цена и Товары.Сорт означают соответственно поля Цена и Сорт из таблицы Товары. В переводе с английского языка на русский: UPDATE - ОБНОВИТЬ; SET - ПОЛОЖИТЬ; WHERE - ГДЕ. Итак, в переводе на русский язык запрос выглядел бы так:

ОБНОВИТЬ Товары

ПОЛОЖИТЬ Товары.Цена=Товары.Цена/2

ГДЕ Товары.Сорт=3;

Язык QBE более нагляден (Рисунок 5 .8), с его помощью наш запрос описывается путем заполнения специальной таблицы. В среде СУБД помимо языка запросов нужен также язык сценарного программирования для обеспечения возможности максимальной степени автоматизации работы пользователя по решению его прикладных задач.

Что касается конкретных СУБД, то для обеспечения одновременной работы с БД большого числа пользователей в масштабах крупного предприятия используются СУБД семейств Oracle, Progress, Sybase и др. Для работы одного пользователя либо небольшого числа их в масштабах подразделения используются так называемые настольные СУБД семейств MS Visual Fox Pro (входит в MS Visual Studio) и MS Access (входит в MS Office). Все эти СУБД поддерживают языки запросов SQL и QBE. Для обучения особенно подходит MS Access в силу максимальной степени ее дружественности, а также в силу поддержки VBA в качестве сценарного языка программирования. Каждая из других представленных здесь СУБД имеет свой собственный сценарный язык программирования.

Microsoft Assess - это современная реляционная и объектно-ориентированная СУБД. База данных Access хранится в MDB-файле (файле с расширением MDB), она может включать в себя несколько реляционных таблиц и запросов со связями один к одному (1 - 1) или один ко многим (1 - ), а также формы, отчеты, макросы, модули.

Таблица - это отношение, там реально хранятся данные. Запрос - это виртуальная таблица, полученная на основе данных из других таблиц. Пусть, например, имеются отношения Заказы (Клиент, Товар, Количество) и Товары (Товар, Цена), тогда Оплата (Клиент, Сумма) - это запрос. Assess поддерживает декларативные языки SQL и QBE, предназначенные для описания запросов. Виртуальная таблица “существует” лишь при выводе ее на экран ЭВМ, а в памяти реально хранится только описание запроса.

Формы - это созданные разработчиком конкретной информационной системы экранные шаблоны, делающие более удобной работу пользователя с таблицами и запросами. Отчеты - это созданные разработчиком конкретной информационной системы шаблоны, предназначенные для вывода необходимых документов на печать.

Access поддерживает два процедурных языка программирования - макроязык (язык, предназначенный для написания простых программ) и VBA (встроенный в СУБД язык, предназначенный для написания сложных программ). Макросы содержат программы на макроязыке. Модули содержат программы на VBA. Особенности Access как объектно-ориентированной БД позволяют также поддерживать особые модули - модули классов.

Access помимо баз данных (MDB-файлов) позволяет также создавать www-страницы доступа к данным (HTML-файлы). Наличие лишь страниц доступа к данным и баз данных делает возможной работу с данными при отсутствии на компьютере СУБД Access. Страницы доступа к данным позволяют в частности эффективно работать с базами данных в локальных сетях и сетях Интернет и Интранет.