Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб. раб_2.doc
Скачиваний:
9
Добавлен:
19.11.2018
Размер:
254.98 Кб
Скачать

Особенности многотабличных запросов

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

  • иногда в многотабличных запросах требуется использовать полные имена столбцов, чтобы исключить неоднозначные ссылки на столбцы;

  • в многотабличных запросах особый смысл имеет выбор всех столбцов (SELECT *);

  • для создания многотабличных запросов, связывающих таблицу саму с собой, создаются самообъединения;

  • в предложении FROM часто используются псевдонимы таблиц, чтобы упростить полные имена столбцов и обеспечить однозначность ссылок на столбцы в самообъединении.

Полные имена столбцов

В используемой базе данных имеется несколько случаев, когда две таблицы содержат столбцы с одинаковыми именами. Например, столбцы с именем City можно найти в таблицах Supplier, Product и Project. Так в примере 2.6 использовались полное имя города поставщика (Supplier. City) и полное имя нахождения комплектующего (Product. City).

Производительность при обработке многотабличных запросов

С увеличением количества таблиц в запросе резко возрастает объем работы, необходимой для выполнения запроса. В самом SQL нет ограничений на число таблиц, объединяемых в одном запросе. Но некоторые СУБД ограничивают число таблиц, чаще всего восемью. На практике высокие затраты на обработку многотабличных запросов во многих приложениях накладывают еще более сильные ограничения на количество таблиц.

В приложениях, предназначенных для оперативной обработки транзакций (OLTP), запрос обычно ссылается только на одну или две таблицы. В этих приложениях время ответа является критичной величиной − пользователь, как правило, вводит один или два элемента данных, и ему требуется получить ответ с базы данных в течение одной или двух секунд. Вот некоторые типичные OLTP запросы для базы данных:

  • пользователь вводит в какую-нибудь форму идентификатор поставщика, и СУБД выводит на экран наименование, статус и город поставщика (запрос к одной таблице);

  • пользователь вводит в какую-нибудь форму наименование комплектующего и СУБД выводит на экран список городов где имеются данные комплектующие;

  • пользователь вводит наименование поставщика и программа выдает список текущих поставок, которые выполняет поставщик (запрос к двум таблицам).

В отличие от OLTP-приложений, в приложениях, предназначенных для поддержки принятия решений, запрос, как правило, обращается ко многим таблицам и использует сложные отношения, существующие в базе данных. В этих приложениях результаты запроса часто нужны для принятия важных решений поэтому вполне приемлемыми считаются запросы, которые выполняются несколько минут или даже несколько часов. Вот типичные для базы данных запросы, связанные с принятием решений:

  • пользователь вводит город, и программа выдает список поставщиков, комплектующих и проектов, находящихся в этом городе (запрос к трем таблицам);

  • в отчете суммируются объемы поставок каждого поставщика по проектам (запрос к трем таблицам);

  • менеджер рассматривает возможность привлечения поставщика для проекта, для чего выполняет запрос для имевших место поставках поставщика, проектах, в которых он участвовал и комплектующих с которыми он имел дело (запрос к четырем таблицам).

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