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