Р ЕЛЯЦИОННАЯ АЛГЕБРА. Р ЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ Реляционная модель данных – самая распространенная из существующих сейчас моделей данных, основана на.

Презентация:



Advertisements
Похожие презентации
Р ЕЛЯЦИОННАЯ АЛГЕБРА И SQL. Рассмотрим, как связаны операции реляционной алгебры и язык SQL, т.е. приведем примеры запросов SQL, аналогичных операциям.
Advertisements

Базы данных Лекция 4 Базисные средства манипулирования реляционными данными: реляционная алгебра Кодда.
Базы данных Лекция 5 Базисные средства манипулирования реляционными данными: алгебра A Дейта и Дарвена.
Реляционная модель данных Определения Основные операции над отношениями (реляционная алгебра)
РЕЛЯЦИОННАЯ АЛГЕБРА. Элементы РМД и формы их представления Сущность – это объект любой природы. Данные о сущности хранятся в отношении (таблице). Атрибуты.
Основы реляционных баз данных Лекция 5. Реляционная модель. Основы реляционной алгебры Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н апреля.
Модуль 1. Математические основы баз данных и знаний 1.
Реляционная алгебра – механизм манипулирования реляционными данными Все операции производятся над отношениями, и результатом операции является отношение.
Определения Банк данных (БнД) это система специальным образом организованных дан­ных - баз данных, программных, технических, языковых, организационно-
ER- модель (entity-relationship). Модель « Сущность - связь ». Работа с базой данных начинается с построения модели предметной области. Наиболее распространенной.
Реляционное исчисление. Общая характеристика Запрос – формула некоторой формально-логической теории; описывает свойства желаемого результата. Ответ –
Язык SQL Вложенные запросы и внешние объединения.
Манипуляционная часть реляционной модели данных: реляционная алгебра.
Реляционная алгебра Презентация подготовлена зав. кафедрой ИБ, д.п.н., профессором З.В. Семеновой.
Виды моделей данных. Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности.
ВИДЫ МОДЕЛЕЙ ДАННЫХ. Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
Модуль 1. Математические основы баз данных и знаний 1.
ПОСТРОЕНИЕ ДЕКОМПОЗИЦИИ, УДОВЛЕТВОРЯЮЩЕЙ ТРЕБОВАНИЯМ 3НФ Синтетический подход. Часть 1.
Транксрипт:

Р ЕЛЯЦИОННАЯ АЛГЕБРА

Р ЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ Реляционная модель данных – самая распространенная из существующих сейчас моделей данных, основана на понятии таблицы (relation), эту модель предложил в 1970 г. Э.Ф.Кодд. Реляционная алгебра (РА). РА представляет собой математический аппарат для работы с объектами-таблицами. Кроме РА, существуют также теории реляционного исчисления на доменах и реляционного исчисления на кортежах, эквивалентные теории РА.

Р ЕЛЯЦИОННАЯ АЛГЕБРА Операндами и результатами операций в РА являются таблицы. Схема таблицы – список столбцов таблицы с их именами и типами. Пример реляционной модели Поставка деталей (подчеркнуты ключевые поля): ДЕТАЛЬ (ДИмя, ДНомер, ДМодель, ДЦена) ПОСТАВЩИК (ПИмя, ПНомер, Город) КЛИЕНТ (КИмя, КНомер, Город) ПОСТАВКА(ДНомер, ПНомер, КНомер, Дата, Колво)

У НАРНЫЕ ОПЕРАЦИИ : П РОЕКЦИЯ proj список_полей (Таблица) Выполняется в два этапа: сначала выбираются нужные столбцы, затем вычеркиваются повторяющиеся строки. Пример: найти все названия поставщиков и города, в которых они находятся proj ПИмя, Город (ПОСТАВЩИК)

У НАРНЫЕ ОПЕРАЦИИ : В ЫБОР sel условие (Таблица) Из таблицы выбираются только те строки, которые отвечают заданному условию. Для формирования сложных условий используются логические связки AND, OR, NOT. Строки- константы задаются в кавычках. Схема таблицы-результата совпадает со схемой исходной таблицы. Пример: найти все детали модели МС550: sel ДМодель=МС550(ДЕТАЛЬ)

Б ИНАРНЫЕ ОПЕРАЦИИ : С ОЕДИНЕНИЕ Таблица1 join Таблица2 Для того чтобы результат существовал, нужно, чтобы операнды имели одноименные поля. В схему таблицы-результата входят все поля из обеих таблиц, одноименные поля входят только один раз. Операция выполняется по следующим правилам: каждая строка первой таблицы соединяется с каждой строкой второй таблицы, если они имеют одинаковые значения в одноименных полях. Соединение может выполняться по одному полю или по нескольким полям.

Б ИНАРНЫЕ ОПЕРАЦИИ : С ОЕДИНЕНИЕ Пример: напечатать, какие детали и когда поставлялись – названия деталей и даты поставок. proj ДИмя, Дата (ПОСТАВКА join ДЕТАЛЬ) Пример: напечатать, какие детали и куда поставлялись – названия деталей и города клиентов. proj ДИмя, Город (КЛИЕНТ join ПОСТАВКА join ДЕТАЛЬ)

Б ИНАРНЫЕ ОПЕРАЦИИ : С ОЕДИНЕНИЕ Пример: напечатать имена Поставщиков и их Клиентов (т.е., Поставщик связан с Клиентом через Поставку). proj ПИмя, КИмя ( proj ПНомер, ПИмя(ПОСТАВЩИК) join ПОСТАВКА join proj КНомер, КИмя(КЛИЕНТ) ) Пример: напечатать всевозможные пары Поставщик-Клиент, находящиеся в одном городе (не обязательно связанные поставками). proj ПИмя, КИмя (ПОСТАВЩИК join КЛИЕНТ)

О БЪЕДИНЕНИЕ, П ЕРЕСЕЧЕНИЕ, В ЫЧИТАНИЕ Следующие три операции аналогичны операциям над множествами. Поскольку в РА операндами являются таблицы, требуется, чтобы схемы обоих операндов были одинаковыми. Таблицы-результаты имеют те же схемы, что и операнды.

Б ИНАРНЫЕ ОПЕРАЦИИ : О БЪЕДИНЕНИЕ Таблица1 union Таблица2 Строка попадает в результирующую таблицу, если она присутствует или в первом, или во втором операнде. Дубликаты в результат не включаются. Пример: напечатать названия городов, в которых есть либо Поставщик, либо Клиент (хотя бы один). proj Город (ПОСТАВЩИК) union proj Город (КЛИЕНТ)

Б ИНАРНЫЕ ОПЕРАЦИИ : П ЕРЕСЕЧЕНИЕ Таблица1 intersection Таблица2 Строка попадает в результирующую таблицу, если она присутствует как в первом, так и во втором операнде. Пример: напечатать названия городов, в которых есть и Поставщик, и Клиент. proj Город (ПОСТАВЩИК) intersection proj Город (КЛИЕНТ)

Б ИНАРНЫЕ ОПЕРАЦИИ : В ЫЧИТАНИЕ Таблица1 difference Таблица2 Строка попадает в результирующую таблицу, если она присутствует в первом, но не присутствует во втором операнде. Пример: напечатать названия городов, в которых есть Поставщики, но нет Клиентов. proj Город (ПОСТАВЩИК) difference proj Город (КЛИЕНТ)

О БЪЕДИНЕНИЕ, П ЕРЕСЕЧЕНИЕ И В ЫЧИТАНИЕ Пример: напечатать названия городов, в которых есть или Поставщик, или Клиент, но не оба одновременно. (proj Город (ПОСТАВЩИК) union proj Город (КЛИЕНТ) ) difference (proj Город (ПОСТАВЩИК) intersection proj Город (КЛИЕНТ) )

Б ИНАРНЫЕ ОПЕРАЦИИ : Д ЕЛЕНИЕ Таблица1 division Таблица2 Для применения этой операции требуется, чтобы схема второго операнда была подмножеством схемы первого операнда. В схему результата попадают столбцы первой таблицы, которых нет во второй таблице. Результат формируется следующим образом: строка попадает в результат, если в первой таблице она сцеплена со всеми строками второй таблицы.

Б ИНАРНЫЕ ОПЕРАЦИИ : Д ЕЛЕНИЕ F1F2F3 A1z B1z C1z A2d B2d A5q C5q Таблица1 Таблица2 F1 A B C Таблица1 division Таблица2

Б ИНАРНЫЕ ОПЕРАЦИИ : Д ЕЛЕНИЕ Пример: получить номера Поставщиков, которые выполняли поставки всем Клиентам из Москвы. proj ПНомер, КНомер (ПОСТАВКА) division proj КНомер (sel Город= «Москва»(КЛИЕНТ))

Б ИНАРНЫЕ ОПЕРАЦИИ : У МНОЖЕНИЕ ( ДЕКАРТОВО ПРОИЗВЕДЕНИЕ ) Таблица1 product Таблица2 В схему результирующей таблицы входят все поля обоих операндов. Поскольку имена полей могут совпадать, используются составные имена полей: Имя_таблицы.Имя_поля. Результат формируется следующим образом: каждая строка первой таблицы сцепляется с каждой строкой второй таблицы. Пример: получить всевозможные пары Поставщик-Клиент. proj ПОСТАВЩИК.ПИмя, КЛИЕНТ.КИмя (ПОСТАВЩИК product КЛИЕНТ)

П РИМЕР ER- МОДЕЛИ : «М УЗЫКАНТЫ »

П РИМЕР РЕЛЯЦИОННОЙ МОДЕЛИ : «М УЗЫКАНТЫ » Музыканты (НомМуз, ИмяМуз, ДатаРожд, СтрРожд) Сочинения (НомСоч, НазСоч, ДатаСоч, НомМуз ) С толбец НомМуз представляет собой ссылку на таблицу «Музыканты» и содержит номера музыкантов- композиторов. Исполнители (НомИсп, Инструмент, Оценка, НомМуз ) Столбец НомМуз представляет собой ссылку на таблицу «Музыканты». Ансамбли (НомАнс, НазАнс, СтрАнс, НомМуз ) Столбец НомМуз представляет собой ссылку на таблицу «Музыканты» и содержит номера музыкантов-руководителей ансамблей. УчастникиАнсамблей( НомАнс, НомИсп ) Эта таблица содержит ссылки на таблицы «Ансамбли» и «Исполнители». Исполнения ( НомМуз, НомАнс, НомСоч, ДатаИсп, СтрИсп, ГорИсп) Таблица имеет составной первичный ключ, а также ссылки на таблицы «Сочинения», «Музыканты» (имеются в виду дирижеры) и «Ансамбли».

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ »: Получить имена музыкантов, которые играют или на кларнете, или на барабане. Получить имена музыкантов, которые играют и на кларнете, и на барабане. Получить имена музыкантов, которые играют на кларнете, но не играют на барабане. Получить имена музыкантов, которые играют или на кларнете, или на барабане, но не на обоих инструментах. Получить имена музыкантов, которые не играют ни на каких инструментах. Получить имена музыкантов, которые играют только на кларнете. Получить имена музыкантов, которые играют на всех инструментах, упомянутых в таблице «Исполнители». Получить названия ансамблей, которые исполняли Моцарта на саксофоне.

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ » 1 Получить имена музыкантов, которые играют или на кларнете, или на барабане. 1)proj ИмяМуз (Музыканты join proj НомМуз ( sel Инструмент=«Кларнет» (Исполнители)) union proj НомМуз ( sel Инструмент=«Барабан» (Исполнители))) 2)proj ИмяМуз (Музыканты join sel Инструмент=«Кларнет» OR Инструмент=«Барабан»(Исполнители))

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ » 2 Получить имена музыкантов, которые играют и на кларнете, и на барабане. proj ИмяМуз (Музыканты join proj НомМуз ( sel Инструмент=«Кларнет» (Исполнители)) intersection proj НомМуз ( sel Инструмент=«Барабан» (Исполнители)))

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ » 3 Получить имена музыкантов, которые играют на кларнете, но не играют на барабане. proj ИмяМуз (Музыканты join proj НомМуз ( sel Инструмент=«Кларнет» (Исполнители)) difference proj НомМуз ( sel Инструмент=«Барабан» (Исполнители)))

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ » 4 Получить имена музыкантов, которые играют или на кларнете, или на барабане, но не на обоих инструментах. proj ИмяМуз (Музыканты join ( (proj НомМуз (sel Инструмент=«Кларнет» (Исполнители)) union proj НомМуз (sel Инструмент=«Барабан» (Исполнители))) difference (proj НомМуз (sel Инструмент=«Кларнет» (Исполнители)) intersection proj НомМуз (sel Инструмент=«Барабан» (Исполнители))) )

З АДАНИЯ ПО МОДЕЛИ «М УЗЫКАНТЫ » 8 Получить названия ансамблей, которые исполняли Моцарта на саксофоне. proj(11) НазАнс ( proj(3) НомСоч (Сочинения join(2) sel(1) ИмяМуз='Моцарт' (Музыканты)) join(9) proj(8) НомСоч, НомАнс (proj(5) НомИсп (sel(4) Инструмент ='Саксофон' (Исполнители)) join(6) УчАнс join(7) Исполнения) join(10) Ансамбли)

Proj НазАнс Join Ансамбли Join Proj НомСоч Proj НомСоч,НомАнс Join Сочинения Sel ИмяМуз =«Моцарт» Sel Инструмент =«Саксофон» Исполнения Join Исполнители Музыканты УчАнс Proj НомИсп