- •Методическая разработка
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог
- •Представления
- •Транзакции
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
Отношения и переменные-отношения
Термин «relation» (отношение) - это математическое название таблицы. Тогда можно сказать, что база данных отделов и служащих, представленная на рис. 2.1 содержит два отношения. На практике, неформально термины «таблица» и «отношение» используются как синонимы. Введение нового понятия было необходимо основателю реляционной модели данных Е.Ф. Кодду для того, чтобы отделить свою теорию и ее термины от тех неформально используемых терминов, которые были в то время (конец 1960-х годов) часто используемыми специалистами из различных областей знаний и вкладывавших в них несколько различное содержание. Кодд ввел свой словарь терминов и на его основе построил математизированную модель данных – реляционную модель данных.
В связи с указанным обстоятельством, таблицы «Отделы» и «Служащие» фактически являются переменными отношений (relation variable), т.е. их значения – это значения отношений.
Пример 2.2. Предположим, что таблица «Служащие» в данный момент имеет значение (значение отношения), которое представлено на рис. 2.1 и далее предположим, что мы удалили строку о сотруднике с фамилией «Буденко» (его номер «С4»):
DELETE Служащие WHERE НомСлужащего=«С4».
Результат выполнения этой операции представлен на рис. 2.3.
Служащие |
|
Рис. 2.3 Переменная-отношение «Служащие» после удаления строки сотрудника с кодом «С4»
Концептуально это можно описать следующим образом: Старое значение отношения Служащие было заменено в целом совершенно другим, новым значением отношения. Т.е. приведенная операция удаления строки, по сути, - это просто другой, упрощенный способ записи операции реляционного присвоения:
Служащие := Служащие MINUS ( Служащие WHERE НомСлужащего=«С4»)
Ключевое слово MINUS используется для описания оператора реляционной разности.
Соответственно INSERT и UPDATE являются также иными формами записи соответствующих операций реляционного присвоения.
Каждый столбец в отношении связан с типом данных. Кроме того реляционная модель имеет неограниченный набор типов, т.е. это означает, что пользователи могут определять собственные типы.
Рассмотрим важный, хотя и не столь распространенный, способ представления смысла отношений:
Во-первых, данное отношение r и заголовок отношения r представляют определенный предикат или логическую функцию.
Во-вторых, каждая строка в теле отношения r представляет собой определенное истинное высказывание, полученное из предиката путем подстановки определенных значений аргументов соответствующего типа вместо местодержателей или параметров этого предиката.
Например, в случае, показанном на рис. 2.1, предикат будет следующим:
Служащий с номером НомСлужащего по фамилии ИмяСлужащего работает в отделе с номером НомОтдела и получает зарплату Зарплата.
Здесь параметрами являются НомСлужащего, ИмяСлужащего, НомОтдела и Зарплата, которые соответствуют 4-м столбцам переменной-отношения Служащие. Примером соответствующего истинного высказывания может быть:
Служащий с номером ‘C1’ по фамилии ‘Иванов’ работает в отделе с номером ‘Отд1’ и получает зарплату ’21 тыс. ден. ед.’.
Иначе можно сказать, что:
типы- объекты (множества объектов), которые можно обсуждать;
отношения – факты (множества фактов), касающиеся объектов, которые можно обсуждать.
Важно понимать, что каждое отношение имеет связанный с ним предикат, включая отношения, полученные с помощью реляционных операторов, например оператора соединения.
Пример 2.3. Отношение «Отделы», представленное на рис. 2.1 и три результирующих отношения, представленные на рис. 2.2, имеют следующие предикаты:
«Отделы»: «Отдел с номером НомОтдела называется НазваниеОтд и имеет бюджет Бюджет».
Выборка строк из «Отделы», где Бюджет > 8M: «Отдел с номером НомОтдела называется НазваниеОтд и имеет бюджет Бюджет, который больше 8 миллионов денежных единиц».
Извлечение столбцов НомОтдела и Бюджет из «Отделы»: «Отдел с номером НомОтдела имеет какое-то название и бюджет Бюджет».
Соединение переменных-отношений «Отделы» и «Служащие» на основе столбца НомОтдела: «Отдел с номером НомОтдела называется НазваниеОтд и имеет бюджет Бюджет, а служащий с номером НомСлужащего по фамилии ИмяСлужащего работает в отделе с номером НомОтдела и получает зарплату Зарплата».
Таким образом, можно дать следующее определение:
Реляционная БД – это такая БД, которая воспринимается ее пользователями как множество переменных, значениями которых являются отношения.