Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Средства реализации запросовСодержание книги Поиск на нашем сайте
Реализацию запросов в обоих формах рассмотрим на примере базы данных построенной на практических занятиях. Пусть нужно реализовать запрос: Какие организации не оплатили заказы? Из текста запроса ясно, что для ответа на него нужно выбрать данные атрибутов: наименование организации, номер заказа и сумма оплаты. Получить эти данные можно из отношений «Клиенты», «Заказы» и «Оплата». В соответствии с моделью данных базы между этими отношениями установлены следующие связи.
В форме QBE запрос примет вид показанный на рисунке. В соответствии с требованием запроса из базы нужно выбрать значения указанных атрибутов, для которых вообще не введена оплата, т.е. значение соответствующего атрибута «Сумма оплаты» пусто (Null). В организации связей этого запроса есть одна особенность. Связь 1:М между отношениями «Заказы» и «Оплата» подразумевает выборку только существующих кортежей. Однако, если для какого либо заказа оплата не введена, то не будет кортежа в отношении «Оплата», соответствующего кортежу отношения «Заказы», т.е. условие «Сумма оплаты» = Null не будет работать. Для того, чтобы данное условие заработало нужно модифицировать связь, наложив на нее требование показывать все кортежи отношения «Заказы», а если им не соответствует не одного кортежа в отношении «Оплата», то ставить вместо него кортеж со значениями атрибутов Null. Таким образом условие запроса приобретает смысл. В форме SQL данный запрос приобретает следующий вид. SELECT Клиенты.Организация, Заказы.[Номер заказа], Оплата.[Сумма оплаты] FROM Клиенты INNER JOIN (Заказы LEFT JOIN Оплата ON Заказы.[Номер заказа] = Оплата.[Номер заказа]) ON Клиенты.[Код клиента] = Заказы.[Код клиента] WHERE (((Оплата.[Сумма оплаты]) Is Null)); В этом запросе использованы следующие операторы языка SQL: SELECT – выбрать FROM - из INNER JOIN –соединить один ко многим LEFT JOIN – соединить слева WHERE – где ON - по В соответствии со смыслом операторов данный запрос на языке SQL можно прочитать как: ВЫБРАТЬ Клиенты.Организация, Заказы.[Номер заказа], Оплата.[Сумма оплаты] ИЗ Клиенты СОЕДИНЕННЫЙ 1:М (Заказы СОЕДИНЕННЫЙ СЛЕВА Оплата ПО Заказы.[Номер заказа] = Оплата.[Номер заказа]) ПО Клиенты.[Код клиента] = Заказы.[Код клиента] ГДЕ (((Оплата.[Сумма оплаты]) Is Null)); Данный пример показывает использование операции соединения. Теоретические основы проектирования БД. Основные понятия. Поскольку рассматриваемый подход к разработке реляционной модели базируется на формальной логике, то в его основе должны лежать некоторые фундаментальные формализации. В теории реляционных баз данных к ним относятся понятия атрибута, отношения, ключа и функциональной зависимости. Атрибутом будем называть поименованное свойство объекта и обозначать Аi, где . Домен атрибута Аi обозначим dom(Аi). Тогда отношением R называется конечное множество атрибутов . Ключ отношения R является подмножеством К = со следующим свойством. Для любых двух различных кортежей t1 и t2 в R существует такое , что t1(B) t2(B). Другими словами, не существует двух кортежей, имеющих одно и то же значение на всех атрибутах из К. Таким образом, достаточно знать К - значение кортежа, чтобы идентифицировать кортеж однозначно. Пример. СТУДЕНТ[ НОМЕР_ЗАЧЕТКИ,ИМЯ,КУРС,ГРУППА] Ключи, явно указанные в модели называются выделенными. Могут быть ключи отличные от выделенных и называемые неявными ключами. Например ИМЯ в предыдущем прмере. Под функциональной зависимостью атрибутов или F-зависимостью понимают такую связь между атрибутами, когда значения кортежа на одном множестве атрибутов единственным образом определяют эти значения на другом множестве атрибутов. Так в отношении: ГРАФИК[ПИЛОТ,РЕЙС,ДАТА,ВРЕМЯ] ПИЛОТ функционально зависит от {РЕЙС,ДАТА} F-зависимости принято обозначать {РЕЙС,ДАТА}-> ПИЛОТ и говорят, что РЕЙС и ДАТА функционально определяют ПИЛОТ. В терминах теории множеств и реляционной алгебры F-зависимость определяется так. Пусть R отношение и X, Y подмножества атрибутов в R. Отношение R удовлетворяет функциональной зависимости X -> Y, если pY(sX-x®) имеет не более чем один кортеж для каждого Х - значения х. В F-зависимости X->Y подмножество X называется левой частью, а Y - правой частью. Такая интерпретация функциональной зависимости является основой алгоритма SATISFIES, приводимого ниже. SATISFIES Вход: Отншение R и F-зависимость X->Y. Выход: истина, если R удовлетворяет X->Y, ложь - в противном случае. SATISFIES(R,X->Y) Отсортировать отношение R по Х-столбцам так, чтобы собрать кортежи с равными Х-значениями вмести. Если каждая совокупность кортежей с равными Х-значениями имеет также равные Y-значения, то на выходе получаем истину, а в противном случае - ложь. Этот алгоритм проверяет, удовлетворяет ли отношение R F-зависимости X -> Y. Пример. В результате выполнения алгоритма SATISFIES выясним удовлетворяет ли F-зависимость РЕЙС -> ВРЕМЯ_ВЫЛЕТА следующему отношению ГРАФИК
Однако F-зависимость ВРЕМЯ_ВЫЛЕТА -> РЕЙС согласно этому алгоритму не выполняется для этого отношения ГРАФИК
Для разработки модели базы данных необходимо знать полное множество F-зависимостей. Чтобы найти их, необходимы семантические знания об исходном отношении R. Поэтому можно считать семейство F-завсимостей заданным. Обозначим его F. Однако при таком подходе нельзя быть уверенным, что найдены все F-зависимости отношения R. Для того, чтобы найти все F-зависимости, если известны некоторые из них, можно воспользоваться аксиомами вывода. Возможность получения новых F-зависимостей с помощью аксиом вывода базируется на следующем правиле. Мнжество F-зависимостей F влечет за собой F-зависимость X -> Y (обозначение: F = X -> Y), если каждое отношение удовлетворяющее всем зависимостям в F, удовлетворяет также зависимости X -> Y. Аксиома вывода - это правило, устанавливающее, что если отношение удовлетворяет определенным F-зависимостям, то оно должно удовлетворять и некоторым другим F-зависимостям. Существует шесть аксиом вывода: Рефлексивность: X -> X. Пополнение: X -> Y влечет за собой XZ -> y. Аддитивность: X -> Y и X -> Z влечет за собой X -> YZ. Проективность: X -> YZ влечет за собой X -> Z. Транзитивность: X -> Y и Y -> Z влечет за собой X -> Z. Псевдотранзитивность: X -> Y и YZ -> W влечет за собой XZ -> W. Пример. Пусть дано отношение R, а X, Y и Z подмножества R. Предположим, что отношению удовлетворяет XY -> Z и X -> Y. Согласно аксиоме псевдотранзитивности получим XX -> Z или X -> Z. Если даны аксиомы рефлексивности, пополнения и псевдотранзитивности, то из них можно вывести все остальные. Иногда их называют аксиомами Армстронга. Пусть F-множество F-зависимостей для отношения R. Замыкание F, обозначаемое F+ , - это наименьшее содержащее F множество, такое что при применении к нему аксиом Армстронга нельзя получить ни одной F - зависимости, не принадлежащей F. Пример. Пусть F = {AB -> C, C -> B } - множество F-зависимостей на R(ABC). F+ = {A -> A, AB -> A, AC -> A, ABC -> A, B -> B, AB -> B, BC -> B, ABC -> B, C -> C, AC -> C, BC -> C, ABC -> C, AB -> AB, ABC -> AB, AC -> AC, ABC -> AC, BC -> BC, ABC -> BC, ABC -> ABC, AB -> C, AB -> AC, AB -> BC, AB -> ABC, C -> B, C -> BC, AC -> B, AC -> AB} Таким образом, если известно множество F-зависимостей удовлетворяющих отношению R, можно найти все F- зависимости, удовлетворяющие этому отношению. Говорят, что F = X -> Y,если X -> Y F+. Лекция 3 Получение замыкания F+ не обязательно для установления F = X -> Y. Для этого достаточно воспользоваться алгоритмом MEMBER. Алгоритм MEMBER. Вход: Множество F-зависимостей F и F-зависимость X -> Y. Выход: истина, если F = X -> Y, ложь в противном случае. MEMBER(F, X -> Y) begin if Y CLOSURE(X,F) then return (истина) else return(ложь) end
Здесь CLOSURE алгоритм, позволяющий выявить список атрибутов входящих в множество F, который имеет вид. Алгоритм CLOSURE. Вход: Множество атрибутов Х и множество F-зависимостей F. Выход: Замыкание Х над F. CLOSURE(X,F) begin OLDDEP = 0; NEWDEP = X while NEWDEP OLDDEP do begin OLDDEP = NEWDEP for каждая F- зависимость W -> Z в F do if NEWDEP W then NEWDEP = NEWDEP Z end return(NEWDEP) end
Пример работы алгоритма MEMBER Пусть F = {НОМЕР_РЕЙСА, ДАТА_ВЫЛЕТА -> КОЛИЧЕСТВО_МЕСТ, НОМЕР_РЕЙСА -> ПУНКТ_ОТПРАВЛЕНИЯ, НОМЕР_РЕЙСА, ДАТА_ВЫЛЕТА -> ПИЛОТ} и необходимо установить F |= НОМЕР_РЕЙСА -> ПИЛОТ Используем для этого алгоритм MEMBER Обращение к нему будет выглядеть так: MEMBER (F,НОМЕР_РЕЙСА -> ПИЛОТ). Результатом работы алгоритма будет истина, если будет истинным выражение Y CLOSURE(X,F), или с учетом данных примера ПИЛОТ CLOSURE(НОМЕР_РЕЙСА,F). Выполним поэтапно работу алгоритма CLOSURE как показано в таблице. В результате будет возвращено значение НОМЕР_РЕЙСА. ПУНКТ_ОТПРАВЛЕНИЯ. Атрибут ПИЛОТ не является подмножеством результата работы CLOSURE, поэтому F не влечет за собой НОМЕР_РЕЙСА -> ПИЛОТ, т.е. эту функциональную зависимость нельзя вывести из F.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-05; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.42.140 (0.008 с.) |