psÎPsts)(( ps.KPst=do.KPst)&(ps.AdrPst¹’Казань’)) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

psÎPsts)(( ps.KPst=do.KPst)&(ps.AdrPst¹’Казань’))

Поиск

 

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

Языки запросов первого типа – алгебраические языки, основаные на классической теории множеств (с некоторыми уточнениями), которые позволяют выражать запросы средствами специализированных операторов, применяемых к отношениям. Языки запросов второго и третьего типов – языки исчисления, которые основаны на классическом логическом аппарате исчисления предикатов первого порядка и позволяют выражать свойства желаемого результата, фактически не указывая, как его получить. Оба механизма (алгебра и исчисление) обладают важным свойством: они замкнуты относительно понятия отношения. Это означает, что выражения реляционной алгебры и формулы реляционного исчисления определяются над отношениями реляционных БД и результатом таких вычислений также являются отношения. В результате любое выражение или формула могут пониматься как отношения. Языки этих трех типов были предложены Е.Ф. Коддом и служат теоретической основой для описания действий, выполняемых над отношениями. Определенные в них элементарные операции реализуются в любом реальном языке запросов независимо от его внешнего оформления.

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

Рассмотрим реаллизацию запросов с использованием языков реляционного исчисления кортежей и реляционной алгебры на конкретном примере:

БАЗА ДАННЫХ.

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

Таблица ПОСТАВКИ (PST) содержит сведения о партиях поставленных деталей: «кто» (KPst: код поставщика)

«что» (KDet: код детали)

«в каком количестве» (Kol: количество)

«когда» поставил (DtP: дата поставки).

Таблица ПОСТАВЩИКИ (PSTS):

код поставщика (KPst - уникальный ключ),

наименование поставщика (ImPst),

адрес поставщика (AdrPst).

Таблица ДЕТАЛИ (DET):

код детали (KDet - уникальный ключ),

наименование детали (ImDet),

цвет детали (Cvet).

Таблица ДОГОВОРА (DOG) содержит сведения о том «кто» - «что» - «в каком количестве» обязался поставить, и имеет поля

код поставщика (KPst),

код детали (KDet),

количество (Kol),

дата начала договора (DtN),

дата завершения договора (DtK).

(KPst, KDet) – уникальный (составной) ключ этой таблицы.

 

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

 

1. Дан запрос в реляционном исчислении кортежей:

 

НАЙТИ{(de.ImDet)/deÎDet}:

("doÎDog)((do.DtN<=’10.10.2006’ Ú do.KDet¹de.KDet)Ú

($psÎPsts)((ps.KPst=do.KPst)&(ps.AdrPst¹’Казань’))Ú

($pvÎPst)((pv.KPst=do.KPst)&(pv.KDet=do.KDet)))

 

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

Ø Составить две программы решения этой задачи:

¨ SELECT-оператором на языке SQL.

¨ PASCAL(С++)-программу с использованием средств обработки баз данных.

 

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

Найти все наименования деталей, что для каждого договора выполняются условия: или договор датирован до 10.10.2006, или предметом договора является другая деталь, или в договоре прописан не Казанский поставщик, или существуют поставки деталей по договору.

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

Введем следующие обозначения:

(do.DtN<=’10.10.2006’)

=(do.KDet¹de.KDet)



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 49; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.006 с.)