Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Базы принятия решений

Содержание

Место БД в вычислительной среде можно отразить следующей схемой:
Базы принятия решений Место БД в вычислительной среде можно отразить следующей схемой: Понятия и терминология баз данныхОбществом была осознана необходимость централизованного управления данными и С точки зрения структуры база данных представляет собой совокупность элементов данных, объединенных Уровни представления данныхКонцептуальный уровень. Концептуальный уровень предполагает изображение модели в виде поименованных Связи в моделяхМежду элементами А и В определена связь один к одному, Построение логических записейЛогическая запись описывает объект и его свойства и состоит из Построение логических записей Пояснения к примеруПоскольку все элементы данных в примере относятся к рейсам самолетов, Итоговая модель Иерархические модели данных Функциональные возможности иерархической модели Основное назначение модели данных это описание структуры базы Сетевые модели данныхВ сетевых моделях связи могут устанавливаться произвольным образом. Кроме того Пример сетевой моделиРядом со связями указаны данные пересечения Решение задачи по устранению в модели  связей типа М:МИзделияУзлыДеталиИзделия-УзлыУзлы-Детали Реляционные модели данных Основу реляционной модели составляют таблицы или отношения. Под отношением Особенности связей в реляционных моделяхЗАКАЗ(№ заказа, Поставщик, Дата)ТОВАРЫ(№ заказа, Товар, Характеристики, Цена) Преобразование сетевых моделей в реляционные(сетевая модель) Преобразование сетевых моделей в реляционные(реляционная модель) Стандарт описания реляционной моделиОТДЕЛЕНИЯ(Код отделения, Наименование, Руководитель, Город)ЗДАНИЯ(Номер здания, Адрес)ОТДЕЛЫ(Код отдела, Код Функциональная зависимость атрибутовВ функционально зависит от атрибута А, если в каждый момент Вторая нормальная формаОтношения , в которых каждый атрибут не являющийся ключом функционально Модель во второй нормальной формеПОСТАВЩИКИ(Код поставщика, Наименование поставщика, Адрес)ТОВАРЫ(Код товара, Наименование товара, Третья нормальная формаОтношение задано в третьей нормальной форме, если оно представлено во Схема проектирования реляционной модели данных (эмпирический подход)Для создания реляционной модели данных при Основы реляционной алгебрыРеляционной алгеброй или алгеброй отношений называют систему операций манипулирования отношениями, Операция проекцииОбозначение πR(A).Представляет собой выборку кортежей отношения с неповторяющимися значениями домена А. Операция объединенияОбозначение операции R U S . Объединение отношений R и S Операция разностиМатематическое обозначение R – S .Разностью отношений называется множество кортежей входящих Операция декартово произведениеМатематическое обозначение R x S.Декартово произведение на двух отношениях определяет Операция селекцииМатематическое обозначение σ(А θ В) или σ(А θ V) .Здесь А Операция пересеченияОперация обозначается R ∩ S и может быть выражена через операцию Операция соединенияМатематическое обозначение R [σ (A θ B) ]SОперация соединения представляет собой Тэта соединениеНаряд [Код = Код And Объем < Норма] НормыВ результирующее отношение Естественное соединениеЕсли для указанного примера необходимо получить отношение, в котором определены объемы Реляционное исчислениеНаряду с реляционной алгеброй является способом получения результирующего отношения в реляционной модели Исчисление кортежей  - направление реляционного исчисления, где областями определения переменных (операндов) являются отношения базы данных, то Описательную часть исчисления можно представить в виде: RANGE OF IS . Конструкция Схемы отношений списка должны быть эквивалентными. Область допустимых значений образуется путем объединения Выражением реляционного исчисления кортежей называется конструкция вида WHERE Значением выражения является отношение, В паре . первая составляющая служит для указания переменной кортежа (определенной конструкцией WFF служат для выражения условий, накладываемых на кортежные переменные. Основой WFF являются Более сложные варианты WFF строятся с помощью логических связок NOT, AND, OR Допускается построение WFF с помощью кванторов. Если - это WFF, в которой Пример. Пусть СОТР1 и СОТР2 - две кортежные переменные, определенные на отношении Тогда, WFF - EXISTS СОТР2 (СОТР1. ЗАРПЛАТА > СОТР2. ЗАРПЛАТА ) для Описанное исчисление не обладает вычислительной полнотой, так как не позволяет выполнять вычисления. Для данных элементов целесообразно использовать спецификацию вида В исчислении доменов областью определения переменных являются не отношения, а домены. Применительно Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного набора Для примера сформулируем с использованием исчисления доменов запрос Реализация запросов с использованием языка SQLТекущая версия стандарта языка SQL принята в Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например, вместо Операторы SQLОператоры DDL (Data Definition Language) - операторы определения объектов базы данныхCREATE Операторы DML (Data Manipulation Language) - операторы манипулирования даннымиSELECT - отобрать строки Операторы защиты и управления даннымиCREATE ASSERTION - создать ограничение DROP ASSERTION - Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота SQL)Оператор декартового произведенияРеляционная алгебра: Оператор проекцииРеляционная алгебра: Оператор SQL: SELECT DISTINCT X, Y, …, Z Оператор объединенияРеляционная алгебра: Оператор SQL: SELECT *  FROM A Оператор соединенияРеляционная алгебра: Оператор SQL: SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … Примеры использования операторов манипулирования даннымиINSERT - вставка строк в таблицуПример 1. Вставка UPDATE - обновление строк в таблицеПример 3. Обновление нескольких строк в таблице: Примеры использования оператора SELECTОператор SELECT является фактически самым важным для пользователя и С точки зрения оператора SELECT и постоянно хранимые таблицы, и временные таблицы Отбор данных из одной таблицыПример 6. Выбрать все данные из таблицы поставщиков Пример 8. Выбрать некоторые колонки из исходной таблицы (указание списка отбираемых колонок): Пример 10. Использование скалярных выражений и переименований колонок в запросах (ключевое слово Пример 11.Упорядочение результатов запроса (ключевое слово ORDER BY…): SELECT  PD.PNUM, Пример 12. Упорядочение результатов запроса по нескольким полям с возрастанием или убыванием Отбор данных из нескольких таблицПример 13. Естественное соединение таблиц (способ 1 - Использование имен корреляции (алиасов, псевдонимов)Иногда приходится выполнять запросы, в которых таблица соединяется Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре имел Использование агрегатных функций в запросахПример 21. Получить общее количество поставщиков (ключевое слово Использование агрегатных функций с группировкамиПример 23. Для каждой детали получить суммарное поставляемое Использование подзапросовОчень удобным средством, позволяющим формулировать запросы более понятным образом, является возможность Пример 26. Использование предиката IN. Получить список поставщиков, поставляющих деталь номер 2: Пример 27. Использование предиката EXIST. Получить список поставщиков, поставляющих деталь номер 2: Использование объединения, пересечения и разностиПример 30. Получить имена поставщиков, имеющих статус, больший Пример 31. Получить имена поставщиков, имеющих статус, больший 3 и одновременно поставляющих Порядок выполнения оператора SELECTДля того чтобы понять, как получается результат выполнения оператора Шаг 3 (GROUP BY). Если в операторе SELECT присутствует раздел GROUP BY, Стадия 2. Выполнение операций UNION, EXCEPT, INTERSECTЕсли в операторе SELECT присутствовали ключевые Как на самом деле выполняется оператор SELECTЕсли внимательно рассмотреть приведенный выше концептуальный Шаг 2 (Преобразование в каноническую форму). Запрос во внутреннем представлении подвергается преобразованию Шаг 4. (Выполнение плана запроса). На этом шаге план, выбранный на предыдущем
Слайды презентации

Слайд 2 Место БД в вычислительной среде можно отразить следующей

Место БД в вычислительной среде можно отразить следующей схемой:

схемой:


Слайд 3 Понятия и терминология баз данных
Обществом была осознана необходимость

Понятия и терминология баз данныхОбществом была осознана необходимость централизованного управления данными

централизованного управления данными и появилось понятие банка или базы

данных (БД). БД можно определить как взаимосвязанную совокупность данных, хранящуюся в электронном виде и предназначенную для коллективного использования. Появление БД привело к возникновению новых следующих понятий:
Системы управления базами данных (СУБД);
Администратор данных (АД) и администратор базы данных (АБД);
 СУБД представляет собой совокупность программных средств, предназначенных для организации хранения данных в электронном виде и доступа к ним.
Администратор данных – это человек, отвечающий за стратегию и политику принятия решений, связанных с данными объекта управления.
Администратор базы данных – это человек или группа людей, обеспечивающих проектирование структуры БД, управление созданием базы и поддержанием ее работоспособности, обучение и консультации пользователей.

Слайд 4 С точки зрения структуры база данных представляет собой

С точки зрения структуры база данных представляет собой совокупность элементов данных,

совокупность элементов данных, объединенных в логические записи, и связей

между ними.
Связи между элементами данных или логическими записями отражают обязательные соответствия между ними.
Для отображения состава логических записей базы данных и связей между ними используют схемы различных видов, которые принято называть моделями данных.

Слайд 5 Уровни представления данных
Концептуальный уровень. Концептуальный уровень предполагает изображение

Уровни представления данныхКонцептуальный уровень. Концептуальный уровень предполагает изображение модели в виде

модели в виде поименованных объектов и связей между ними.
Логический

уровень. Логический уровень состоит из логических записей, составляющих их атрибутов и связей между ними.

Физический уровень или физическое представление так же характеризуется записями и связями между ними. Однако записи организованы в соответствии с физическими особенностями носителей, на которых они хранятся


Слайд 6 Связи в моделях
Между элементами А и В определена

Связи в моделяхМежду элементами А и В определена связь один к

связь один к одному, если в каждый момент времени

каждому элементу А соответствует только один ассоциированный с ним элемент В.
Между элементами А и В определена связь один ко многим, если в каждый момент времени каждому элементу А соответствует ноль, один или несколько ассоциированных с ним элементов В.
Связи между объектами (атрибутами) могут существовать в обоих направлениях, т.е. возможны четыре варианта связей: 1:1, 1:М, М:1, М:М.

Слайд 7 Построение логических записей
Логическая запись описывает объект и его

Построение логических записейЛогическая запись описывает объект и его свойства и состоит

свойства и состоит из совокупности взаимосвязанных атрибутов. Причем один

или несколько атрибутов отражают суть объекта, отличающую один экземпляр объекта от другого. Эти атрибуты называются ключом. Значения ключа являются уникальными для каждого типа записей. Все остальные атрибуты логической записи связаны с ключом. Причем допускаются связи 1:1 или М:1 со стороны ключа. Данные принципы создают формальную основу для образования логической записи.

Слайд 8 Построение логических записей

Построение логических записей

Слайд 9 Пояснения к примеру
Поскольку все элементы данных в примере

Пояснения к примеруПоскольку все элементы данных в примере относятся к рейсам

относятся к рейсам самолетов, то ключом логической записи логично

было бы выбрать номер рейса. Действительно этот атрибут обладает основным свойством ключа – каждый рейс имеет свой уникальный номер. Связи между элементами определяются ролью каждого из них по отношению к ключу. Так, из пункта отправления могут отправляться много рейсов, но каждый рейс имеет только один пункт отправления, поэтому связь между ними со стороны ключа будет М:1. Следовательно, эти атрибуты можно объединить в логическую запись. То же касается атрибутов «Пункт назначения», «Тип самолета». Между ключом и атрибутом «Дата вылета» существует связь М:М, так как один и тот рейс может вылетать в разные даты, а в одну и ту же дату могут вылетать разные рейсы, то есть эти атрибуты нельзя объединить в логическую запись. То же касается и атрибута «Количество свободных мест». Однако эти два атрибута несут существенную информационную нагрузку и должны быть включены в модель. Чтобы решить эту проблему, можно преобразовать схему так

Слайд 10 Итоговая модель

Итоговая модель

Слайд 11 Иерархические модели данных

Иерархические модели данных

Слайд 12 Функциональные возможности иерархической модели
Основное назначение модели данных

Функциональные возможности иерархической модели Основное назначение модели данных это описание структуры

это описание структуры базы данных. При этом БД используется

для получения ответов на запросы. Критерием качества модели может служить ее возможность получать выборки данных в ответ на различные запросы. Под запросом понимается описание требований к выбираемым из базы данным. Рассмотрим реализацию трех запросов с использованием модели данных приведенного примера.
Найти группу, где учится студент А.
Найти факультет, где учится студент А.
Найти дисциплины, которые изучает студент А.

Слайд 13 Сетевые модели данных
В сетевых моделях связи могут устанавливаться

Сетевые модели данныхВ сетевых моделях связи могут устанавливаться произвольным образом. Кроме

произвольным образом. Кроме того в них допускаются связи М:М.

Однако этот тип связей несет неопределенность соответствия записей. Этот тип связей показывает только характер соответствия записей, но не может быть использован для получения ответов на запросы. Проблемы, связанные с применением этого типа связей рассмотрим на следующем примере.

Слайд 14 Пример сетевой модели
Рядом со связями указаны данные пересечения

Пример сетевой моделиРядом со связями указаны данные пересечения

Слайд 15 Решение задачи по устранению в модели связей типа

Решение задачи по устранению в модели связей типа М:МИзделияУзлыДеталиИзделия-УзлыУзлы-Детали

М:М
Изделия
Узлы
Детали
Изделия-Узлы
Узлы-Детали


Слайд 16 Реляционные модели данных
Основу реляционной модели составляют таблицы или

Реляционные модели данных Основу реляционной модели составляют таблицы или отношения. Под

отношения. Под отношением понимают совокупность логически связанных между собой

данных структурированных по строкам и столбцам. Строки отношения принято называть кортежами, а столбцы доменами. Под связью между таблицами (отношениями) понимается соответствие между значениями доменов отношений. В реляционных моделях допускаются связи 1:М, М:1 и 1:1.

Слайд 17 Особенности связей в реляционных моделях
ЗАКАЗ(№ заказа, Поставщик, Дата)
ТОВАРЫ(№

Особенности связей в реляционных моделяхЗАКАЗ(№ заказа, Поставщик, Дата)ТОВАРЫ(№ заказа, Товар, Характеристики, Цена)

заказа, Товар, Характеристики, Цена)


Слайд 18 Преобразование сетевых моделей в реляционные(сетевая модель)

Преобразование сетевых моделей в реляционные(сетевая модель)

Слайд 19 Преобразование сетевых моделей в реляционные(реляционная модель)

Преобразование сетевых моделей в реляционные(реляционная модель)

Слайд 20 Стандарт описания реляционной модели
ОТДЕЛЕНИЯ(Код отделения, Наименование, Руководитель, Город)
ЗДАНИЯ(Номер

Стандарт описания реляционной моделиОТДЕЛЕНИЯ(Код отделения, Наименование, Руководитель, Город)ЗДАНИЯ(Номер здания, Адрес)ОТДЕЛЫ(Код отдела,

здания, Адрес)
ОТДЕЛЫ(Код отдела, Код отделения, Наименование, Начальник, Телефон)
РАЗМЕЩЕНИЕ(Номер здания,

Код отдела, Количество персонала)
ПРОЕКТ(Номер проекта, Код отдела, Содержание, Дата окончания)
ПЕРСОНАЛ(Табельный номер, Код отдела, Номер проекта, Имя, Должность, Дата рождения)

Слайд 21 Функциональная зависимость атрибутов
В функционально зависит от атрибута А,

Функциональная зависимость атрибутовВ функционально зависит от атрибута А, если в каждый

если в каждый момент времени каждому значению атрибута А

соответствует только одно, связанное с ним значение атрибута В и обозначают А В. Это же выражение можно прочитать как А функционально определяет В.
Например, пусть имеется множество атрибутов А, В, С и их значения, собранные в отношении R.

Попытаемся установить следующие зависимости А В и А С . Для этого отсортируем отношение по домену А:

Из таблицы видно, что каждому значению атрибута А соответствует только одно значение атрибута В и разные значения атрибута С. Следовательно А функционально определяет В, а С не зависит от А.


Слайд 22 Вторая нормальная форма
Отношения , в которых каждый атрибут

Вторая нормальная формаОтношения , в которых каждый атрибут не являющийся ключом

не являющийся ключом функционально зависит только от одного возможного

ключа представлены во второй нормальной форме. Пример.

ЗАКАЗ(Код поставщика, Код товара, Наименование поставщика, Адрес, Наименование товара, Характеристики товара, Цена)

В этом отношении ключ состоит из пары атрибутов Код поставщика, Код товара . При этом Наименование поставщика, Адрес функционально зависят от атрибута Код поставщика , Наименование товара, Характеристики товара зависят от Код товара , а Цена от ключа отношения. Такое разнообразие функциональных зависимостей приводит к следующим проблемам.
При появлении нового поставщика необходимо добавлять строчку в отношение. Если он еще не начал поставлять товар, то все остальные атрибуты остаются не заполненными.
Если из отношения удаляются сведения о поставщике, то удалятся и сведения о товарах.
Для изменения адреса поставщика, наименование товара нужно проделывать это в нескольких строках отношения.
Для изменения адреса поставщика, наименование товара нужно проделывать это в нескольких строках отношения.


Слайд 23 Модель во второй нормальной форме
ПОСТАВЩИКИ(Код поставщика, Наименование поставщика,

Модель во второй нормальной формеПОСТАВЩИКИ(Код поставщика, Наименование поставщика, Адрес)ТОВАРЫ(Код товара, Наименование

Адрес)
ТОВАРЫ(Код товара, Наименование товара, Характеристики товара)
ЗАКАЗ(Код поставщика, Код товара,

Цена)

Слайд 24 Третья нормальная форма
Отношение задано в третьей нормальной форме,

Третья нормальная формаОтношение задано в третьей нормальной форме, если оно представлено

если оно представлено во второй нормальной форме и каждый

атрибут не являющийся ключом не транзитивно зависит от ключа. Пример

ПЕРСОНАЛ(Табельный номер, ФИО, Должность, Номер проекта, Дата окончания)

ПЕРСОНАЛ(Табельный номер, ФИО, Должность, Номер проекта)
ПРОЕКТЫ(Номер проекта, Дата окончания)

Наличие транзитивной зависимости в примере приводит к следующим проблемам:

при известных номере проекта и дате окончания их негде разместить пока не появятся сведения хотя бы об одном исполнителе;
Если изменилась дата окончания проекта, ее надо менять в стольких кортежах, сколько людей работает над данным проектом.

Устранение этих проблем можно сделать, преобразовав исходное отношение к третьей нормальной форме:


Слайд 25 Схема проектирования реляционной модели данных (эмпирический подход)
Для создания

Схема проектирования реляционной модели данных (эмпирический подход)Для создания реляционной модели данных

реляционной модели данных при разработке базы данных для заданного

объекта – предприятия необходимо выполнить следующие действия:
Обследование информационной деятельности предприятия;
Анализ информационных потоков и интеграция требований;
Проектирование сетевой модели, отражающей структуру и информационные связи предприятия;
Преобразование сетевой модели к реляционной;
Нормализация отношений реляционной модели

Слайд 26 Основы реляционной алгебры
Реляционной алгеброй или алгеброй отношений называют

Основы реляционной алгебрыРеляционной алгеброй или алгеброй отношений называют систему операций манипулирования

систему операций манипулирования отношениями, каждый оператор которой в качестве

операнда (операндов) имеет одно или несколько отношений, образуя новое отношение по заранее обусловленному правилу. Основными операциями реляционной алгебры являются:
Операция проекции;
Операция объединения;
Операция разности;
Операция декартова произведения;
Операция селекции.

Слайд 27 Операция проекции
Обозначение πR(A).
Представляет собой выборку кортежей отношения с

Операция проекцииОбозначение πR(A).Представляет собой выборку кортежей отношения с неповторяющимися значениями домена

неповторяющимися значениями домена А. Значения остальных доменов не играет

роли.
Пример.

Сессия

Проекция отношения πСессия(Студент)


Слайд 28 Операция объединения
Обозначение операции R U S .
Объединение

Операция объединенияОбозначение операции R U S . Объединение отношений R и

отношений R и S представляет собой множество кортежей, которые

принадлежат отношениям либо R, либо S , либо им обоим.

Сессия 1

Сессия 2

Сессия1 U Сессия2


Слайд 29 Операция разности
Математическое обозначение R – S .
Разностью отношений

Операция разностиМатематическое обозначение R – S .Разностью отношений называется множество кортежей

называется множество кортежей входящих в R , но не

входящих в S. Замечание по совместимости отношений справедливо и для разности.

Зачет Экзамен Зачет – Экзамен


Слайд 30 Операция декартово произведение
Математическое обозначение R x S.
Декартово произведение

Операция декартово произведениеМатематическое обозначение R x S.Декартово произведение на двух отношениях

на двух отношениях определяет новое отношение, у которого число

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

R S R x S


Слайд 31 Операция селекции
Математическое обозначение σ(А θ В) или σ(А

Операция селекцииМатематическое обозначение σ(А θ В) или σ(А θ V) .Здесь

θ V) .
Здесь А и В обозначения доменов, V

– числовая или символьная константа, θ – знак логической операции (<,>,<>,<=,>=).
Операция селекции, это выборка кортежей со значениями доменов, удовлетворяющих заданному условию.

селекция σ(Оценка > 3)


Слайд 32 Операция пересечения
Операция обозначается R ∩ S и может

Операция пересеченияОперация обозначается R ∩ S и может быть выражена через

быть выражена через операцию вычитания следующим образом: R –

(R – S). По смыслу операция образует из двух отношений новое, которое включает совпадающие кортежи исходных отношений. Для примера рассмотрим исходные отношения операции вычитания. Если необходимо выяснить какие студенты сдали и зачет и экзамен, то результат будет получен при выполнении операции
Зачет –(Зачет –Экзамен)

Слайд 33 Операция соединения
Математическое обозначение R [σ (A θ B)

Операция соединенияМатематическое обозначение R [σ (A θ B) ]SОперация соединения представляет

]S
Операция соединения представляет собой селекцию из декартова произведения.
Различают

θ – соединение и естественное соединения.

Наряд Нормы


Слайд 34 Тэта соединение
Наряд [Код = Код And Объем

Тэта соединениеНаряд [Код = Код And Объем < Норма] НормыВ результирующее

Норма] Нормы
В результирующее отношение попадут помеченные галочкой два кортежа


Слайд 35 Естественное соединение
Если для указанного примера необходимо получить отношение,

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

в котором
определены объемы и нормы по каждому работнику,

то выражение операции
и результат должны выглядеть так: Наряд [Код = Код] Нормы

Галочкой помечены кортежи составляющие результат


Слайд 36 Реляционное исчисление
Наряду с реляционной алгеброй является способом получения результирующего

Реляционное исчислениеНаряду с реляционной алгеброй является способом получения результирующего отношения в реляционной

отношения в реляционной модели данных. В реляционном исчислении различают:
Исчисление

кортежей
Исчисление доменов


Слайд 37 Исчисление кортежей  - направление реляционного исчисления, где областями определения переменных

Исчисление кортежей  - направление реляционного исчисления, где областями определения переменных (операндов) являются отношения базы данных,

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

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

Слайд 38 Описательную часть исчисления можно представить в виде: RANGE

Описательную часть исчисления можно представить в виде: RANGE OF IS .

OF IS . Конструкция RANGE указывает идентификатор переменной

кортежа <переменная> и область ее допустимых значений - <список> - последовательность одного или более элементов: x1, ..., xn, каждый из которых является либо отношением, либо выражением над отношением При этом в любой момент <переменная> принимает в качестве значения только один из кортежей <списка> отношений.

Слайд 39 Схемы отношений списка должны быть эквивалентными. Область допустимых

Схемы отношений списка должны быть эквивалентными. Область допустимых значений образуется путем

значений образуется путем объединения значений всех элементов списка.
Пример:


RANGE OF Студент IS Очный_студент,Заочный_студент
Область определения переменной Студент включает в себя все значения из отношения, которое является объединением отношений Очный_студент и Заочный_студент.


Слайд 40 Выражением реляционного исчисления кортежей называется конструкция вида

Выражением реляционного исчисления кортежей называется конструкция вида WHERE Значением выражения является

> WHERE
Значением выражения является отношение, тело (множество кортежей)

которого должно удовлетворять WFF (well formulated formula — правильно построенная формула), а схема (набор атрибутов и их имена) определяется целевым списком. Целевой список по существу определяет операцию проекции, а формула WFF - селекцию кортежей.


Слайд 41 В паре . первая составляющая служит для указания

В паре . первая составляющая служит для указания переменной кортежа (определенной

переменной кортежа (определенной конструкцией RANGE), а вторая — для

определения атрибута отношения, на котором изменяется переменная кортежа. Необязательная часть «AS <атрибут>» используется для переименования атрибута целевого отношения. Если она отсутствует, то имя атрибута целевого отношения наследуется от соответствующего имени атрибута исходного отношения.


Слайд 42 WFF служат для выражения условий, накладываемых на кортежные

WFF служат для выражения условий, накладываемых на кортежные переменные. Основой WFF

переменные. Основой WFF являются простые сравнения, представляющие собой операции

сравнения скалярных значений (значений атрибутов переменных или констант). Например, конструкция "СТУДЕНТ.НОМЕР_ЗАЧЕТНОЙ_КНИЖКИ = 625432" является простым сравнением. По определению, простое сравнение является WFF, а WFF, заключенная в круглые скобки, является простым сравнением.


Слайд 43 Более сложные варианты WFF строятся с помощью логических

Более сложные варианты WFF строятся с помощью логических связок NOT, AND,

связок NOT, AND, OR и IF ... THEN. Так,

если <формула> - WFF, а <сравнение> - простое сравнение, то  NOT <формула> <сравнение> AND <формула> <сравнение> OR <формула> IF <сравнение> THEN <формула>  являются WFF.


Слайд 44 Допускается построение WFF с помощью кванторов. Если

Допускается построение WFF с помощью кванторов. Если - это WFF, в

- это WFF, в которой участвует , то конструкции  EXISTS

<переменная> (<формула>) FORALL <переменная> (<формула>) являются WFF.
В первом случае WFF означает: "Существует по крайней мере одно такое значение <переменной>, что вычисление <формулы> дает значение ИСТИНА".
Во втором случае WFF означает: "Для всех значений переменной <переменной> вычисление <формулы> дает значение ИСТИНА".


Слайд 45 Пример. Пусть СОТР1 и СОТР2 - две кортежные

Пример. Пусть СОТР1 и СОТР2 - две кортежные переменные, определенные на

переменные, определенные на отношении СОТРУДНИКИ.

СОТРУДНИКИ

СОТР2
(FORALL)СОТР1 true

(EXISTS)СОТР1 true


Слайд 46 Тогда, WFF - EXISTS СОТР2 (СОТР1. ЗАРПЛАТА >

Тогда, WFF - EXISTS СОТР2 (СОТР1. ЗАРПЛАТА > СОТР2. ЗАРПЛАТА )

СОТР2. ЗАРПЛАТА ) для текущего кортежа переменной СОТР1 принимает

значение true в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж (связанный с переменной СОТР2) такой, что значение его атрибута . ЗАРПЛАТА удовлетворяет внутреннему условию сравнения.
WFF FORALL СОТР2 (СОТР1. ЗАРПЛАТА > СОТР2. ЗАРПЛАТА ) для текущего кортежа переменной СОТР1 принимает значение true в том и только в том случае, если для всех кортежей отношения СОТРУДНИКИ (связанных с переменной СОТР2) значения атрибута ЗАРПЛАТА удовлетворяют условию сравнения.


Слайд 47 Описанное исчисление не обладает вычислительной полнотой, так как

Описанное исчисление не обладает вычислительной полнотой, так как не позволяет выполнять

не позволяет выполнять вычисления. Добавление вычислительных функций в исчисление

можно реализовать путем расширения определения операндов сравнения и элементов целевого списка таким образом, чтобы они допускали использование скалярных выражений с литералами, ссылками на атрибуты и итоговыми функциями.
качестве итоговых могут выступать следующие функции: COUNT (количество), SUMM (сумма), АVG (среднее), МАХ (максимальное), MIN (минимальное).


Слайд 48 Для данных элементов целесообразно использовать спецификацию вида "AS

Для данных элементов целесообразно использовать спецификацию вида

, где можно явно задать имя результирующему атрибуту.
Пример.  Определить

студента с максимальным рейтингом Студент.ФИО, MAX(Рейтинг) AS Максимальный_Рейтинг  WHERE Студент.Номер_зачетной_книжки=Рейтинг.Номер_ зачетной_книжки _


Слайд 49 В исчислении доменов областью определения переменных являются не

В исчислении доменов областью определения переменных являются не отношения, а домены.

отношения, а домены. Применительно к базе данных Рейтинг студентов

можно говорить, например, о доменных переменных ИМЯ (значения - допустимые имена) или Номер_зачетной_книжки (значения - допустимые номера зачетных книжек студентов).


Слайд 50 Основным формальным отличием исчисления доменов от исчисления кортежей

Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного

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

условия членства. Если R - это n-арное отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид R(a1i:v1i...aim:vim)(m <= n)  где vij - это либо литерально задаваемая константа, либо имя кортежной переменной. Условие членства принимает значение true в том и только в том случае, если в отношении R существует кортеж, содержащий указанные значения указанных атрибутов.
Если vij - константа, то на атрибут aij задается жесткое условие, не зависящее от текущих значений доменных переменных; если же - имя доменной переменной, то условие членства может принимать разные значения при разных значениях этой переменной.


Слайд 51 Для примера сформулируем с использованием исчисления доменов запрос

"Выдать номера и имена сотрудников, не получающих минимальную заработную

плату" (будем считать для простоты, что мы определили доменные переменные, имена которых совпадают с именами атрибутов отношения СОТРУДНИКИ, а в случае, когда требуется несколько доменных переменных, определенных на одном домене, мы будем добавлять в конце имени цифры):  СОТР_НОМ, СОТР_ИМЯ  WHERE EXISTS СОТР_ЗАРП1 (СОТРУДНИКИ (СОТР_ЗАРП1) AND СОТРУДНИКИ (СОТР_НОМ, СОТР_ИМЯ, СОТР_ЗАРП) AND СОТР_ЗАРП > СОТР_ЗАРП1)


Слайд 52 Реализация запросов с использованием языка SQL
Текущая версия стандарта

Реализация запросов с использованием языка SQLТекущая версия стандарта языка SQL принята

языка SQL принята в 1992 г. (Официальное название стандарта

- Международный стандарт языка баз данных SQL (1992) (International Standart Database Language SQL), неофициальное название - SQL/92, или SQL-92, или SQL2).
Язык SQL стал фактически стандартным языком доступа к базам данных. Все СУБД, претендующие на название "реляционные", реализуют тот или иной диалект SQL. Многие нереляционные системы также имеют в настоящее время средства доступа к реляционным данным. Целью стандартизации является переносимость приложений между различными СУБД.

Слайд 53 Язык SQL оперирует терминами, несколько отличающимися от терминов

Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например,

реляционной теории, например, вместо "отношений" используются "таблицы", вместо "кортежей"

- "строки", вместо "атрибутов" - "колонки" или "столбцы".
Язык SQL является реляционно полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL.


Слайд 54 Операторы SQL
Операторы DDL (Data Definition Language) - операторы

Операторы SQLОператоры DDL (Data Definition Language) - операторы определения объектов базы

определения объектов базы данных
CREATE SCHEMA - создать схему базы

данных
DROP SHEMA - удалить схему базы данных
CREATE TABLE - создать таблицу
ALTER TABLE - изменить таблицу
DROP TABLE - удалить таблицу
CREATE DOMAIN - создать домен
ALTER DOMAIN - изменить домен
DROP DOMAIN - удалить домен
CREATE COLLATION - создать последовательность
DROP COLLATION - удалить последовательность
CREATE VIEW - создать представление
DROP VIEW - удалить представление


Слайд 55 Операторы DML (Data Manipulation Language) - операторы манипулирования

Операторы DML (Data Manipulation Language) - операторы манипулирования даннымиSELECT - отобрать

данными
SELECT - отобрать строки из таблиц
INSERT - добавить

строки в таблицу
UPDATE - изменить строки в таблице
DELETE - удалить строки в таблице
COMMIT - зафиксировать внесенные изменения
ROLLBACK - откатить внесенные изменения


Слайд 56 Операторы защиты и управления данными
CREATE ASSERTION - создать

Операторы защиты и управления даннымиCREATE ASSERTION - создать ограничение DROP ASSERTION

ограничение
DROP ASSERTION - удалить ограничение
GRANT - предоставить

привилегии пользователю или приложению на манипулирование объектами
REVOKE - отменить привилегии пользователя или приложения
Кроме того, есть группы операторов установки параметров сеанса, получения информации о базе данных, операторы статического SQL, операторы динамического SQL.


Слайд 57 Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота

Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота SQL)Оператор декартового произведенияРеляционная

SQL)
Оператор декартового произведения
Реляционная алгебра:
Оператор SQL:
SELECT A.Поле1, A.Поле2,

…, B.Поле1, B.Поле2, …
FROM A, B;
или
SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, …
FROM A CROSS JOIN B;


Слайд 58 Оператор проекции
Реляционная алгебра:
Оператор SQL:
SELECT DISTINCT X,

Оператор проекцииРеляционная алгебра: Оператор SQL: SELECT DISTINCT X, Y, …, Z

Y, …, Z
FROM A;
Оператор выборки
Реляционная алгебра: ,


Оператор SQL:
SELECT *
FROM A
WHERE c;


Слайд 59 Оператор объединения
Реляционная алгебра:
Оператор SQL:
SELECT *

Оператор объединенияРеляционная алгебра: Оператор SQL: SELECT * FROM A  UNION

FROM A
UNION
SELECT * FROM

B;
Оператор вычитания
Реляционная алгебра:
Оператор SQL:
SELECT * FROM A
EXCEPT
SELECT * FROM B
Реляционный оператор переименования RENAME выражается при помощи ключевого слова AS в списке отбираемых полей оператора SELECT.

Слайд 60 Оператор соединения
Реляционная алгебра:
Оператор SQL:
SELECT A.Поле1, A.Поле2,

Оператор соединенияРеляционная алгебра: Оператор SQL: SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2,

…, B.Поле1, B.Поле2, …
FROM A, B

WHERE c;
или
SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, …
FROM A CROSS JOIN B
WHERE c;


Слайд 61 Примеры использования операторов манипулирования данными
INSERT - вставка строк

в таблицу
Пример 1. Вставка одной строки в таблицу:
INSERT

INTO
P (PNUM, PNAME)
VALUES (4, "Иванов");
Пример 2. Вставка в таблицу нескольких строк, выбранных из другой таблицы (в таблицу TMP_TABLE вставляются данные о поставщиках из таблицы P, имеющие номера, большие 2):
INSERT INTO
TMP_TABLE (PNUM, PNAME)
SELECT PNUM, PNAME
FROM P
WHERE P.PNUM>2;


Слайд 62 UPDATE - обновление строк в таблице
Пример 3. Обновление

UPDATE - обновление строк в таблицеПример 3. Обновление нескольких строк в

нескольких строк в таблице:
UPDATE P
SET PNAME =

"Пушников"
WHERE P.PNUM = 1;
DELETE - удаление строк в таблице
Пример 4. Удаление нескольких строк в таблице:
DELETE FROM P
WHERE P.PNUM = 1;
Пример 5. Удаление всех строк в таблице:
DELETE* FROM P;


Слайд 63 Примеры использования оператора SELECT
Оператор SELECT является фактически самым

Примеры использования оператора SELECTОператор SELECT является фактически самым важным для пользователя

важным для пользователя и самым сложным оператором SQL. Он

предназначен для выборки данных из таблиц, т.е. он, собственно, и реализует одно их основных назначение базы данных - предоставлять информацию пользователю.
Оператор SELECT всегда выполняется над некоторыми таблицами, входящими в базу данных.
Замечание. На самом деле в базах данных могут быть не только постоянно хранимые таблицы, а также временные таблицы и так называемые представления. Представления - это просто хранящиеся в базе данные SELECT-выражения. С точки зрения пользователей представления - это таблица, которая не хранится постоянно в базе данных, а "возникает" в момент обращения к ней.

Слайд 64 С точки зрения оператора SELECT и постоянно хранимые

С точки зрения оператора SELECT и постоянно хранимые таблицы, и временные

таблицы, и временные таблицы и представления выглядят совершенно одинаково.

Конечно, при реальном выполнении оператора SELECT системой учитываются различия между хранимыми таблицами и представлениями, но эти различия скрыты от пользователя.
Результатом выполнения оператора SELECT всегда является таблица. Таким образом, по результатам действий оператор SELECT похож на операторы реляционной алгебры. Любой оператор реляционной алгебры может быть выражен подходящим образом сформулированным оператором SELECT. Сложность оператора SELECT определяется тем, что он содержит в себе все возможности реляционной алгебры, а также дополнительные возможности, которых в реляционной алгебре нет.

Слайд 65 Отбор данных из одной таблицы
Пример 6. Выбрать все

Отбор данных из одной таблицыПример 6. Выбрать все данные из таблицы

данные из таблицы поставщиков (ключевые слова SELECT… FROM…):
SELECT

*
FROM P;
Замечание. В результате получим новую таблицу, содержащую полную копию данных из исходной таблицы P.
Пример 7. Выбрать все строки из таблицы поставщиков, удовлетворяющих некоторому условию (ключевое слово WHERE…):
SELECT *
FROM P
WHERE P.PNUM > 2;
Замечание. В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, сравнения (>, <, = и т.д.), скобки, союзы AND и OR, отрицание NOT.


Слайд 66 Пример 8. Выбрать некоторые колонки из исходной таблицы

Пример 8. Выбрать некоторые колонки из исходной таблицы (указание списка отбираемых

(указание списка отбираемых колонок):
SELECT P.NAME
FROM P;
Замечание. В

результате получим таблицу с одной колонкой, содержащую все наименования поставщиков.
Замечание. Если в исходной таблице присутствовало несколько поставщиков с разными номерами, но одинаковыми наименованиями, то в результатирующей таблице будут строки с повторениями - дубликаты строк автоматически не отбрасываются.
Пример 9. Выбрать некоторые колонки из исходной таблицы, удалив из результата повторяющиеся строки (ключевое слово DISTINCT):
SELECT DISTINCT P.NAME
FROM P;
Замечание. Использование ключевого слова DISTINCT приводит к тому, что в результатирующей таблице будут удалены все повторяющиеся строки.


Слайд 67 Пример 10. Использование скалярных выражений и переименований колонок

Пример 10. Использование скалярных выражений и переименований колонок в запросах (ключевое

в запросах (ключевое слово AS…):
SELECT
TOVAR.TNAME,

TOVAR.KOL,
TOVAR.PRICE,
"=" AS EQU,
TOVAR.KOL*TOVAR.PRICE AS SUMMA
FROM TOVAR;
В результате получим таблицу с колонками, которых не было в исходной таблице TOVAR:


Слайд 68 Пример 11.Упорядочение результатов запроса (ключевое слово ORDER BY…):

Пример 11.Упорядочение результатов запроса (ключевое слово ORDER BY…): SELECT PD.PNUM, PD.DNUM,


SELECT
PD.PNUM,
PD.DNUM,
PD.VOLUME
FROM PD

ORDER BY DNUM;
В результате получим следующую таблицу, упорядоченную по полю DNUM:


Слайд 69 Пример 12. Упорядочение результатов запроса по нескольким полям

Пример 12. Упорядочение результатов запроса по нескольким полям с возрастанием или

с возрастанием или убыванием (ключевые слова ASC, DESC):
SELECT

PD.PNUM, PD.DNUM, PD.VOLUME
FROM PD
ORDER BY DNUM ASC, VOLUME DESC;
В результате получим таблицу, в которой строки идут в порядке возрастания значения поля DNUM, а строки, с одинаковым значением DNUM идут в порядке убывания значения поля VOLUME:

Замечание. Если явно не указаны ключевые слова ASC или DESC, то по умолчанию принимается упорядочение по возрастанию (ASC).


Слайд 70 Отбор данных из нескольких таблиц
Пример 13. Естественное соединение

Отбор данных из нескольких таблицПример 13. Естественное соединение таблиц (способ 1

таблиц (способ 1 - явное указание условий соединения):
SELECT

P.PNUM, P.PNAME, PD.DNUM, PD.VOLUME
FROM P, PD
WHERE P.PNUM = PD.PNUM;


В результате получим новую таблицу, в которой строки с данными о поставщиках соединены со строками с данными о поставках деталей:
Замечание. Соединяемые таблицы перечислены в разделе FROM оператора, условие соединения приведено в разделе WHERE. Раздел WHERE, помимо условия соединения таблиц, может также содержать и условия отбора строк.


Слайд 71 Использование имен корреляции (алиасов, псевдонимов)
Иногда приходится выполнять запросы,

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

в которых таблица соединяется сама с собой, или одна

таблица соединяется дважды с другой таблицей. При этом используются имена корреляции (алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц. Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы. Имена корреляции должны использоваться в качестве префикса перед именем столбца и отделяются от имени столбца точкой. Если в запросе указываются одни и те же поля из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в именованиях колонок результатирующей таблицы. Определение имени корреляции действует только во время выполнения запроса.


Слайд 72 Отобрать все пары поставщиков таким образом, чтобы первый

Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре

поставщик в паре имел статус, больший статуса второго поставщика:


SELECT P1.PNAME AS PNAME1, P1.PSTATUS AS PSTATUS1, P2.PNAME AS PNAME2,
P2.PSTATUS AS PSTATUS2
FROM P P1, P P2
WHERE P1.PSTATUS1 > P2.PSTATUS2;
В результате получим следующую таблицу:

Пусть дана следующая таблица Р


Слайд 73 Использование агрегатных функций в запросах
Пример 21. Получить общее

Использование агрегатных функций в запросахПример 21. Получить общее количество поставщиков (ключевое

количество поставщиков (ключевое слово COUNT):
SELECT COUNT(*) AS N

FROM P;
В результате получим таблицу с одним столбцом и одной строкой, содержащей количество строк из таблицы P:
N
3
Пример 22. Получить общее, максимальное, минимальное и среднее количества поставляемых деталей (ключевые слова SUM, MAX, MIN, AVG):
SELECT SUM(PD.VOLUME) AS SM, MAX(PD.VOLUME) AS MX, MIN(PD.VOLUME) AS MN,
AVG(PD.VOLUME) AS AV
FROM PD;
В результате получим следующую таблицу с одной строкой:

Слайд 74 Использование агрегатных функций с группировками
Пример 23. Для каждой

Использование агрегатных функций с группировкамиПример 23. Для каждой детали получить суммарное

детали получить суммарное поставляемое количество (ключевое слово GROUP BY…):


SELECT PD.DNUM, SUM(PD.VOLUME) AS SM
GROUP BY PD.DNUM;
Этот запрос будет выполняться следующим образом. Сначала строки исходной таблицы будут сгруппированы так, чтобы в каждую группу попали строки с одинаковыми значениями DNUM. Потом внутри каждой группы будет просуммировано поле VOLUME. От каждой группы в результатирующую таблицу будет включена одна строка:

Замечание. В списке отбираемых полей оператора SELECT, содержащего раздел GROUP BY можно включать только агрегатные функции и поля, которые входят в условие группировки. Следующий запрос выдаст синтаксическую ошибку:
SELECT PD.PNUM, PD.DNUM, SUM(PD.VOLUME) AS SM GROUP BY PD.DNUM;
Причина ошибки в том, что в список отбираемых полей включено поле PNUM, которое не входит в раздел GROUP BY. И действительно, в каждую полученную группу строк может входить несколько строк с различными значениями поля PNUM. Из каждой группы строк будет сформировано по одной итоговой строке. При этом нет однозначного ответа на вопрос, какое значение выбрать для поля PNUM в итоговой строке.


Слайд 75 Использование подзапросов
Очень удобным средством, позволяющим формулировать запросы более

Использование подзапросовОчень удобным средством, позволяющим формулировать запросы более понятным образом, является

понятным образом, является возможность использования подзапросов, вложенных в основной

запрос.
Пример 25. Получить список поставщиков, статус которых меньше максимального статуса в таблице поставщиков (сравнение с подзапросом):
SELECT *
FROM P
WHERE P.STATYS <
(SELECT MAX(P.STATUS)
FROM P);
Замечание. Т.к. поле P.STATUS сравнивается с результатом подзапроса, то подзапрос должен быть сформулирован так, чтобы возвращать таблицу, состоящую ровно из одной строки и одной колонки.
Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Выполнить один раз вложенный подзапрос и получить максимальное значение статуса.
Просканировать таблицу поставщиков P, каждый раз сравнивая значение статуса поставщика с результатом подзапроса, и отобрать только те строки, в которых статус меньше максимального.


Слайд 76 Пример 26. Использование предиката IN. Получить список поставщиков,

Пример 26. Использование предиката IN. Получить список поставщиков, поставляющих деталь номер

поставляющих деталь номер 2:
SELECT *
FROM P
WHERE

P.PNUM IN
(SELECT DISTINCT PD.PNUM
FROM PD
WHERE PD.DNUM = 2);
Замечание. В данном случае вложенный подзапрос может возвращать таблицу, содержащую несколько строк.
Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Выполнить один раз вложенный подзапрос и получить список номеров поставщиков, поставляющих деталь номер 2.
Просканировать таблицу поставщиков P, каждый раз проверяя, содержится ли номер поставщика в результате подзапроса.


Слайд 77 Пример 27. Использование предиката EXIST. Получить список поставщиков,

Пример 27. Использование предиката EXIST. Получить список поставщиков, поставляющих деталь номер

поставляющих деталь номер 2:
SELECT * FROM P
WHERE

EXIST
(SELECT * FROM PD
WHERE
PD.PNUM = P.PNUM AND
PD.DNUM = 2);
Замечание. Результат выполнения запроса будет эквивалентен результату следующей последовательности действий:
Просканировать таблицу поставщиков P, каждый раз выполняя подзапрос с новым значением номера поставщика, взятым из таблицы P.
В результат запроса включить только те строки из таблицы поставщиков, для которых вложенный подзапрос вернул непустое множество строк.
Замечание. В отличие от двух предыдущих примеров, вложенный подзапрос содержит параметр (внешнюю ссылку), передаваемый из основного запроса - номер поставщика P.PNUM. Такие подзапросы называются коррелируемыми (correlated). Внешняя ссылка может принимать различные значения для каждой строки-кандидата, оцениваемого с помощью подзапроса, поэтому подзапрос должен выполняться заново для каждой строки, отбираемой в основном запросе. Такие подзапросы характерны для предиката EXIST, но могут быть использованы и в других подзапросах.

Слайд 78 Использование объединения, пересечения и разности
Пример 30. Получить имена

Использование объединения, пересечения и разностиПример 30. Получить имена поставщиков, имеющих статус,

поставщиков, имеющих статус, больший 3 или поставляющих хотя бы

одну деталь номер 2 (объединение двух подзапросов - ключевое слово UNION):
SELECT P.PNAME
FROM P
WHERE P.STATUS > 3
UNION
SELECT P.PNAME
FROM P, PD
WHERE P.PNUM = PD.PNUM AND
PD.DNUM = 2;
Замечание. Результатирующие таблицы объединяемых запросов должны быть совместимы, т.е. иметь одинаковое количество столбцов и одинаковые типы столбцов в порядке их перечисления. Не требуется, чтобы объединяемые таблицы имели бы одинаковые имена колонок. Это отличает операцию объединения запросов в SQL от операции объединения в реляционной алгебре. Наименования колонок в результатирующем запросе будут автоматически взяты из результата первого запроса в объединении.


Слайд 79 Пример 31. Получить имена поставщиков, имеющих статус, больший

Пример 31. Получить имена поставщиков, имеющих статус, больший 3 и одновременно

3 и одновременно поставляющих хотя бы одну деталь номер

2 (пересечение двух подзапросов - ключевое слово INTERSECT):
SELECT P.PNAME
FROM P
WHERE P.STATUS > 3
INTERSECT
SELECT P.PNAME
FROM P, PD
WHERE P.PNUM = PD.PNUM AND
PD.DNUM = 2;
Пример 32. Получить имена поставщиков, имеющих статус, больший 3, за исключением тех, кто поставляет хотя бы одну деталь номер 2 (разность двух подзапросов - ключевое слово EXCEPT):
SELECT P.PNAME
FROM P
WHERE P.STATUS > 3
EXCEPT
SELECT P.PNAME
FROM P, PD
WHERE P.PNUM = PD.PNUM AND
PD.DNUM = 2;


Слайд 80 Порядок выполнения оператора SELECT
Для того чтобы понять, как

Порядок выполнения оператора SELECTДля того чтобы понять, как получается результат выполнения

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

выполнения. Эта схема является именно концептуальной, т.к. гарантируется, что результат будет таким, как если бы он выполнялся шаг за шагом в соответствии с этой схемой. На самом деле, реально результат получается более изощренными алгоритмами, которыми "владеет" конкретная СУБД.

Стадия 1. Выполнение одиночного оператора SELECT
Если в операторе присутствуют ключевые слова UNION, EXCEPT и INTERSECT, то запрос разбивается на несколько независимых запросов, каждый из которых выполняется отдельно:
Шаг 1 (FROM). Вычисляется прямое декартовое произведение всех таблиц, указанных в обязательном разделе FROM. В результате шага 1 получаем таблицу A.
Шаг 2 (WHERE). Если в операторе SELECT присутствует раздел WHERE, то сканируется таблица A, полученная при выполнении шага 1. При этом для каждой строки из таблицы A вычисляется условное выражение, приведенное в разделе WHERE. Только те строки, для которых условное выражение возвращает значение TRUE, включаются в результат. Если раздел WHERE опущен, то сразу переходим к шагу 3. Если в условном выражении участвуют вложенные подзапросы, то они вычисляются в соответствии с данной концептуальной схемой. В результате шага 2 получаем таблицу B.



Слайд 81 Шаг 3 (GROUP BY). Если в операторе SELECT

Шаг 3 (GROUP BY). Если в операторе SELECT присутствует раздел GROUP

присутствует раздел GROUP BY, то строки таблицы B, полученной

на втором шаге, группируются в соответствии со списком группировки, приведенным в разделе GROUP BY. Если раздел GROUP BY опущен, то сразу переходим к шагу 4. В результате шага 3 получаем таблицу С.
Шаг 4 (HAVING). Если в операторе SELECT присутствует раздел HAVING, то группы, не удовлетворяющие условному выражению, приведенному в разделе HAVING, исключаются. Если раздел HAVING опущен, то сразу переходим к шагу 5. В результате шага 4 получаем таблицу D.
Шаг 5 (SELECT). Каждая группа, полученная на шаге 4, генерирует одну строку результата следующим образом. Вычисляются все скалярные выражения, указанные в разделе SELECT. По правилам использования раздела GROUP BY, такие скалярные выражения должны быть одинаковыми для всех строк внутри каждой группы. Для каждой группы вычисляются значения агрегатных функций, приведенных в разделе SELECT. Если раздел GROUP BY отсутствовал, но в разделе SELECT есть агрегатные функции, то считается, что имеется всего одна группа. Если нет ни раздела GROUP BY, ни агрегатных функций, то считается, что имеется столько групп, сколько строк отобрано к данному моменту. В результате шага 5 получаем таблицу E, содержащую столько колонок, сколько элементов приведено в разделе SELECT и столько строк, сколько отобрано групп.


Слайд 82 Стадия 2. Выполнение операций UNION, EXCEPT, INTERSECT
Если в

Стадия 2. Выполнение операций UNION, EXCEPT, INTERSECTЕсли в операторе SELECT присутствовали

операторе SELECT присутствовали ключевые слова UNION, EXCEPT и INTERSECT,

то таблицы, полученные в результате выполнения 1-й стадии, объединяются, вычитаются или пересекаются.
Стадия 3. Упорядочение результата
Если в операторе SELECT присутствует раздел ORDER BY, то строки полученной на предыдущих шагах таблицы упорядочиваются в соответствии со списком упорядочения, приведенном в разделе ORDER BY.


Слайд 83 Как на самом деле выполняется оператор SELECT
Если внимательно

Как на самом деле выполняется оператор SELECTЕсли внимательно рассмотреть приведенный выше

рассмотреть приведенный выше концептуальный алгоритм вычисления результата оператора SELECT,

то сразу понятно, что выполнять его непосредственно в таком виде чрезвычайно накладно. Даже на самом первом шаге, когда вычисляется декартово произведение таблиц, приведенных в разделе FROM, может получиться таблица огромных размеров, причем практически большинство строк и колонок из нее будет отброшено на следующих шагах.
На самом деле в РСУБД имеется оптимизатор, функцией которого является нахождение такого оптимального алгоритма выполнения запроса, который гарантирует получение правильного результата.
Схематично работу оптимизатора можно представить в виде последовательности нескольких шагов:
Шаг 1 (Синтаксический анализ). Поступивший запрос подвергается синтаксическому анализу. На этом шаге определяется, правильно ли вообще (с точки зрения синтаксиса SQL) сформулирован запрос. В ходе синтаксического анализа вырабатывается некоторое внутренне представление запроса, используемое на последующих шагах.


Слайд 84 Шаг 2 (Преобразование в каноническую форму). Запрос во

Шаг 2 (Преобразование в каноническую форму). Запрос во внутреннем представлении подвергается

внутреннем представлении подвергается преобразованию в некоторую каноническую форму. При

преобразовании к канонической форме используются как синтаксические, так и семантические преобразования. Синтаксические преобразования (например, приведения логических выражений к конъюнктивной или дизъюнктивной нормальной форме, замена выражений "x AND NOT x" на "FALSE", и т.п.) позволяют получить новое внутренне представление запроса, синтаксически эквивалентное исходному, но стандартное в некотором смысле. Семантические преобразования используют дополнительные знания, которыми владеет система, например, ограничения целостности. В результате семантических преобразований получается запрос, синтаксически не эквивалентный исходному, но дающий тот же самый результат.
Шаг 3 (Генерация планов выполнения запроса и выбор оптимального плана). На этом шаге оптимизатор генерирует множество возможных планов выполнения запроса. Каждый план строится как комбинация низкоуровневых процедур доступа к данным из таблиц, методам соединения таблиц. Из всех сгенерированных планов выбирается план, обладающий минимальной стоимостью. При этом анализируются данные о наличии индексов у таблиц, статистических данных о распределении значений в таблицах, и т.п. Стоимость плана это, как правило, сумма стоимостей выполнения отдельных низкоуровневых процедур, которые используются для его выполнения. В стоимость выполнения отдельной процедуры могут входить оценки количества обращений к дискам, степень загруженности процессора и другие параметры.

  • Имя файла: bazy-prinyatiya-resheniy.pptx
  • Количество просмотров: 111
  • Количество скачиваний: 0