Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Аксиомы функциональных зависимостей



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

 

Аксиома транзитивности

 

Введем обозначения: X, Y, Z – атрибуты (А); R - отношение; QА - множество атрибутов отношения R; QF - множество функциональных зависимостей из R.

Аксиома.

Если атрибуты X, Y и Z принадлежат множеству QA и заданы зависимости

F1: X ® Y,

F2: Y ® Z,

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

X ®Z

или                           ( x ® y ) & ( y ® z )

                                                 x ® z.

  

Пример.

В отношении

Служащие(ФИО, ЗПлата, Задание Задание, ВремяВыполнения)

 

атрибут ВремяВыполнения зависит от атрибута Задание, который в свою очередь зависит от атрибута ФИО. Следовательно, атрибут ВремяВыполнения транзитивно зависит от атрибута ФИО.

Это можно представить схемой:

 

Задание à ВремяВыполнения, ФИО à Задание

ФИО à ВремяВыполнения

Многозначные зависимости

В отношении R имеет место многозначная зависимость, если при заданном значении атрибута типа X существует множество взаимосвязанных значений атрибута типа Y.

Для обозначения многозначной зависимости обычно используется символика:

X ®® Y.

Пример.

В отношении

Поставки(Завод, Изделие, Цена)

 

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

 

Завод à à Изделие

 

4.4. Уровни автоматизации манипулирования данными в реляционных БД

В соответствии с лингвистическим обеспечением, используемым пользователями при работе с БД, предусмотрено три уровня манипулирования данными:

· низший уровень - это уровень, при котором пользователь БД оперирует непосредственно с записями;

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

· высшим уровнем автоматизации в БД является применение исчисления отношений. При этом пользователь непосредственно обращается к СУБД на ПЭВМ, используя объектный язык. В результате решение сформулированной задачи по манипулированию данными осуществляется самостоятельно программой СУБД. При таком методе пользователь не интересуется, как ЭВМ получает результат, и она, в свою очередь, имеет свободу для оптимизации запросов. В подобных системах удобнее и проще реализуется засекречивание данных.

Контрольные вопросы

1. Перечислите свойства реляционных таблиц.

2. Что называется первичным ключом?

3. Что называется вторичным ключом?

4. Приведите пример функциональной зависимости.

5. Что понимается под многозначной зависимостью?

 



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

5.1. Операции над отношениями

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

Для реализации операций над отношениями Коддом было предложено три абстрактных теоретических языка:

· реляционная алгебра;

· реляционное исчисление с переменными - кортежами;

· реляционное исчисление с переменными - доменами.

Эти языки по своей выразительности эквивалентны.

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

Языки второго и третьего типов являются языками исчисления. Они выражают запросы на основе спецификации предикатов. Предикаты - это логические высказывания, принимающие значения «истинно» или «ложно», в результате чего выделяются требуемые кортежи или домены.

Современные языки манипулирования данными SEQUEL (SQL), QBE, ISBL и др., используемые в СУБД, реализуют широкий набор операций:

· операции с данными: включение, модификация, удаление данных;

· операции обработки данных:

· арифметические выражения (вычисления, сравнения);

· команды присваивания и печати;

· агрегатные функции.

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

Пример.

· определение максимального или минимального значения домена

· определение суммы домена

· определение среднего домена и т.п.

Гибкость реляционных БД определяется легкостью манипулирования, т.е. простотой модификации реляционных таблиц (РТ). Это означает, что исходя из РТ, сформированных при разработке концептуальной схемы БД, пользователь или прикладной программист могут легко создавать и далее использовать свои РТ. Для этих целей используются процедурные и непроцедурные языки.

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

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

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

Для удобства изучения операторов реляционной алгебры будем рассматривать БД “Разработчики ПП”, представленную шестью таблицами на Рис. 0.1.

5.2. Оператор " объединение" (union)

Функция: для двух РТ R1 и R2 одинаковой арности и с совпадающими типами полей формируется РТ R с записями, входящими хотя бы в одну исходную РТ.

Синтаксис: R = R1 union R2

Пример.

Объединить две РТ: R1 и R2 в одну РТ R.

R1: A B    R2: A B Ответ: R: A B
  a 4   c 4   a 4
  b 6   d 8   b 6
              c 4
              d 8

5.3. Оператор " вычитание" (difference)

Функция: для двух РТ R1 и R2 одинаковой арности и с совпадающими типами полей формируется РТ R c записями, содержащимися " Разработчики ПП"  в уменьшаемом - таблице R1, но отсутствующими в вычитаемом - таблице R2.

Синтаксис: R = R1 difference R2.

Таблица R1. Разработчики

 

 

Таблица R2. Программисты

№ Раз-ка ФИО Разр-ка Год Рож-я Стаж   № Пр-та №Раз-ка Пр-та Язык Прог-я Кат-я Пр-та
R1 Белов А. 1940 21   А1 R4 Pas 1
R2 КрыловГ 1962 17   А2 R2 C 2
R3 Фатов Р. 1964 11   А3 R5 Pas 3
R4 Белов А. 1953 21   А4 R4 C 1
R5 КрыловГ 1964 10   А5 R2 Pas 2

 

Таблица R3. Разработанные ПП

 

Таблица R4. Временные трудовые

 коллективы (ВТК)

 
№ПП Наз-еПП №Разр-ка

ГСозд-я

  №ВТК Назв-е ВТК №ком-ты

№рук-ляОТК

P1 ПР-1 R5

1982

  B1 Луч 12

R5

P2 ПР-2 R2

1984

  B2 Стрела 18

R3

P3 ПР-1 R1

1960

  B3 Взлет 12

R2

P4 ПР-3 R2

1987

P5 ПР-4 R3

1985

                     

 

Таблица R5. Составы ВТК

 

Таблица R6. Использование ПП.

 

№ВТК

№Прог-та  

№ПП

№Проекта

№Разр-каГИПа №ВТК  
 

B1

A1  

P5

TR1

R1 B3  
 

B1

A3  

P3

TR2

R4 B1  
 

B1

A4  

P5

TR5

R3 B3  
 

B2

A2  

P2

TR1

R1 B2  
 

B2

A5  

P4

TR2

R4 B1  
  B3

A1

  B3

A5

                       

Рис. 0.1

Пример.

Вычесть из РТ R1 таблицу R2, результат записать в РТ R.

 

R1: A B R2: A B Ответ: R: A B
  a 4   a 3   a 4
  b 6   b 6

        c 6

5.4. Оператор " пересечение" (intersection)

Функция: для двух РТ R1 и R2 одинаковой арности и с совпадающими типами полей формируется РТ R с записями, входящими в обе РТ.

Синтаксис:    R = R1 intersection R2.

Пример.

Выполнить пересечение таблиц R1 и R2, результат записать в таблицу R.

 

R1: A B R2: A B Ответ: R:

A

B

  a 4   a 5  

b

6

  b 6   b 6    

 

 
                     

5.5. Оператор " проектирование" (proj)

Функция: из РТ R1 оператор выбирает заданные типы полей и размещает в указанном порядке в таблице R.

Синтаксис: R = proj a1,..., ar(R1)

Пример.

Из РТ " Разработчики" (R1 на рис.5.1) выбрать поле ФИО и поле ГодРождения.

 

R = proj ФИО, ГодРожд-я(Разработчики)

 

Ответ: R:    ФИО ГодРожд-я
  Белов А. 1940
  Крылов Г. 1962
  Фатов Р. 1964
  Белов А. 1953
  Крылов Г. 1964

5.6. Оператор " выбор" (sel)

Функция: из РТ R1 по заданному критерию выбирается требуемая совокупность записей. В частном случае результатом выборки может быть и пустое множество.

Синтаксис:                           R= sel < F> (R1),

где F - критерий выбора.

Критерии выбора могут формулироваться на основе операторов двух типов:

· операторы сравнения: =, < >, <, < =, >, > =;

· логические операторы: И (AND), ИЛИ (OR), НЕ (NOT).

Пример 1.

В БД на Рис. 0.1 выбрать данные разработчика Белова А.

Для решения надо использовать РТ " Разработчики" и выбрать данные Белова А.:

 

R= sel < ФИО = 'Белов А.'> (Разработчики)

 

Ответ: R: №Разр-ка ФИО ГодРожд-я Стаж
  R1 Белов А. 1940 21
  R4 Белов А. 1953 21

Пример 2.

В БД на Рис. 0.1 выбрать программистов выше третьей категории, работающих на Pascal'e.

Для решения воспользуемся РТ " Программисты" и критерием выбора:

 

< F> = < (ЯзыкПрогр-я = 'Pas') and (Катег-яПрогр-та < 3)>.

 

Тогда оператор примет вид:

 

R=sel< (ЯзыкПр-я='Pas')and(Катег-яПр-та< 3)> (Программисты).

 

Ответ: R: №Пр-та №Разр-каПр-та ЯзыкПр-я Катег-яПр-та
  A1 R4 Pas 1
  A2 R2 Pas 2

 


Поделиться:



Последнее изменение этой страницы: 2019-06-08; Просмотров: 203; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.041 с.)
Главная | Случайная страница | Обратная связь