- •1 Основные понятия и определения
- •1.1Информационные системы и банки данных
- •1.2Назначение и основные компоненты банка данных
- •1.3Трех уровневая архитектура абстракций базы данных.
- •1.4Физическая и логическая независимость данных
- •1.5Администратор базы данных
- •1.6Системы управления базами данных
- •1.7Схема обмена данными при работе с базой данных
- •1.8Локальные информационные системы
- •1.9Информационные системы в сетях
- •2Модели данных концептуального уровня
- •2.1Иерархическая модель данных
- •2.2Сетевая модель
- •2.3Реляционная модель
- •2.4Постреляционная модель
- •2.5Многомерная модель
- •2.6Объектно-ориентированная модель
- •3Физические модели баз данных
- •3.1Файловые структуры, используемые в базах данных
- •3.2 Хешированные файлы
- •3.2.1Стратегия разрешения коллизий с областью переполнения
- •3.2.2Организация стратегии свободного замещения
- •3.3Индексные файлы
- •3.3.1Файлы с плотным индексом, или индексно-прямые файлы
- •3.3.2Файлы с неплотным индексом, или индексно-последовательные файлы
- •3.3.3Организация индексов в виде b-tree (в-деревьев)
- •3.4Моделирование отношений «один-ко-многим» на файловых структурах
- •3.5Инвертированные списки
- •3.6Модели бесфайловой организации данных
- •4Реляционная модель данных
- •4.1Основные определения
- •4.2Соглашения об отношениях в реляционных системах
- •4.3Классы отношений
- •4.3.1Классы отношений с точки зрения способов создания и хранения
- •4.3.2Классификация отношений с точки зрения их содержания
- •4.4Операции реляционной алгебры
- •4.4.1Основные понятия
- •4.4.2Базовые теоретико-множественные операции
- •4.4.3Специальные операции реляционной алгебры
- •4.4.4Связи между отношениями (таблицами)
- •4.5Реляционное исчисление
- •4.6Язык запросов по образцу qbe
- •4.7Структурированный язык запросов sql
- •4.7.1История развития sql
- •4.7.2Общая характеристика языка
- •4.7.3Структура sql
- •4.7.4Оператор выбора select
- •4.7.5Применение агрегатных функций и группировки
- •4.7.6Раздел order by и ключевое слово top
- •4.7.7Вложенные запросы
- •4.7.8Внутренние и внешние объединения
- •4.7.9Перекрестные запросы
- •4.7.10Операторы манипулирования данными
- •4.7.11Запросы на создание таблиц
- •4.7.12Использование языка определения данных
- •4.8Правила Кодда (требования к реляционным бд)
- •5Проектирование баз данных
- •5.1Этапы проектирования бд
- •5.2Проблемы проектирования реляционных баз данных
- •5.3Нормализация отношений
- •5.4Метод сущность-связь
- •5.5Средства автоматизации проектирования
- •5.5.1Основные определения
- •5.5.2Модели жизненного цикла
- •5.5.3Модели структурного проектирования
- •5.5.4Объектно-ориентированные модели
- •5.5.5 Классификация case-средств
- •6Защита информации в базах данных
- •6.1Общие подходы к обеспечению безопасности данных
- •6.2Назначение и проверка полномочий, проверка подлинности
- •6.3Средства защиты базы данных
- •7Базы данных в сетях
- •7.1Организация базы данных в локальной сети
- •7.2Модели архитектуры клиент-сервер
- •7.3Управление распределенными данными
- •8История развития баз данных
4.5Реляционное исчисление
Принципиальное различие между реляционной алгеброй и реляционным исчислением состоит в том, что в первом случае процесс получения искомого результата описывается явным образом путем указания набора операций, которые надо выполнить для получения результата, а во втором – указываются свойства искомого отношения без конкретизации процедуры его получения.
Преимуществом реляционного исчисления перед реляционной алгеброй можно считать то, что пользователю не требуется самому строить алгоритм выполнения запроса. Программа СУБД сама строит эффективный алгоритм.
Математической основой реляционного исчисления является исчисление предикатов – один из разделов математической логики. Понятие реляционного исчисления как языка работы с базами данных впервые предложено Коддом. Им же был разработан язык ALPHA – прототип программно реализованного языка QUEL, который некоторое время конкурировал с языком SQL.
Существует два варианта исчислений: исчисление кортежей и исчисление доменов. В первом случае для описания отношений используются переменные, допустимыми значениями которых являются кортежи отношения, а во втором случае – элементы домена.
Реляционное исчисление, основанное на кортежах (исчисление кортежей), предложено и реализовано при разработке языка ALPHA. В нем, как и в процедурных языках программирования, сначала нужно описать используемые переменные, а затем записывать выражения.
Описательную часть исчисления можно представить в виде
RANGE OF <переменная> IS <список>,
где прописными буквами записаны ключевые слова языка, <переменная > - идентификатор переменной кортежа (области значений), а <список> - последовательность одного или более элементов, разделенных запятыми, т.е. конструкции вида Х1[, X2[…,Xn]…].
Конструкция RANGE указывает идентификатор переменной и область ее допустимых значений. Список элементов Х1[, X2[…,Xn]…] содержит элементы, каждый из которых является либо отношением, либо выражением над отношением. Все элементы списка должны быть совместимы по типу, т.е. соответствующие элементам отношения должны иметь идентичные заголовки. Область допустимых значений <переменной> образуется путем объединения значений всех элементов списка. Так, запись вида RANGE OF T IS X1,X2 означает, что область определения переменной Т включает в себя все значения из отношения, которое является объединением отношений Х1 и Х2.
Пример 1. Варианты описаний.
RANGE OF D IS R9;
RANGE OF DC IS R10;
RANGE OF SD IS (R12) WHERE R12.Материал = ‘Сталь-ст1’;
Переменные D, DC в первых двух примерах определены соответственно на отношениях R9 и R10. Переменная SD может принимать значения из множества кортежей отношения R12, где материал совпадает с материалом Сталь-ст1.
Запись выражения, формирующего запрос на языке исчисления кортежей с помощью формы Бэкуса-Наура, упрощенно можно представить следующим образом:
<выражение> ::= (y1[,y2[…,ym]…]) [ WHERE wff ]
yi ::= {<переменная> | <переменная>, <атрибут> } [AS <атрибут>] wff ::= <условие>| NOT wff |
<условие> AND wff | <условие> OR wff |
IF <условие> THEN wff | EXISTS <переменная> (wff) |
FORALL <переменная> (wff) | (wff)
Общий смысл записи выражения состоит в перечислении атрибутов результирующего (целевого) отношения, атрибуты которого должны удовлетворять условию истинности формулы wff (well formulated formula – правильно построенная формула). Список атрибутов целевого отношения, или целевой список, в терминах реляционной алгебры по существу определяет операцию проекции, а формула wff – селекцию кортежей.
В паре <переменная>, <атрибут> первая составляющая служит для указания переменной кортежа (определенной конструкцией RANGE), а вторая – для определения атрибута отношения, на котором изменяется переменная кортежа. Необязательная часть AS <атрибут> используется для переименования целевого отношения. Если она отсутствует, то имя атрибута целевого отношения наследуется от соответствующего имени атрибута исходного отношения.
Употребление в качестве элемента целевого отношения Т равносильно перечислению в списке всех соответствующих атрибутов, т.е. Т.А1, Т.А2,…, ТАn, где А1, А2,…, Аn – атрибуты отношения, сопоставляемого с переменной Т.
Пример 2. Варианты записи пары <переменная>.<атрибут>.
SD.[Шифр детали]
DC.[Цех] AS Цех_изготовитель
В приведенном определении wff <условие> представляет собой либо формулу wff, заключенную в скобки, либо простое сравнение вида
<операнд1> <операнд2>,
где в качестве любого операнда выступает переменная или скалярная константа, а символ обозначает операцию сравнения =, , >, , , и т.д.
Ключевые слова NOT, AND, OR обозначают логические операции соответственно: Не, И, ИЛИ. Ключевые слова IF и THEN позволяют задать условие. Ключевые слова EXISTS и FORALL называются кванторами. Первый из них – квантор существования, а второй – квантор всеобщности.
Формула wff вида: EXISTS x (f) означает: «Существует по крайней мере одно такое значение переменной х, что вычисление формулы f дает значение истина».
Выражение вида: FORALL x (f) интерпретируется как высказывание: «Для всех значений переменной х вычисление формулы f дает значение истина».
В общем случае переменные кортежей в формулах могут быть свободными или связанными. В формулах EXISTS x(f) и FORALL x(f) переменные кортежей х всегда являются связанными.
Пример 3. Запись выражения.
Приведем запись выражения, соответствующего запросу: «Получить названия цехов, где производится деталь «Гайка М1».
D.[Цех] WHERE EXISTS R9 (D.[Название детали]=’Гайка М1’ )
Вариант реляционного исчисления, основанного на доменах (исчисление доменов), предложен Лакроиксом и Пиротте (Lacroix and Pirotte), которые также разработали на его основе соответствующий язык ILL. Другими языками, основанными на исчислении доменов, являются: FQL, DEDUCE, QBE. По утверждению Дейта, язык QBE включает элементы исчисления кортежей и исчисления доменов, но более близок ко второму. Он не является реляционно полным, так как не поддерживает операцию отрицания квантора существования (NOT EXISTS).
Исчисление доменов имеет много сходства с исчислением кортежей. В отличие от исчисления кортежей, в исчислении доменов основой любого выражения запроса выступают переменные доменов. Переменная домена – это скалярная переменная, значения которой охватывают элементы некоторого домена.
Большая часть различий рассматриваемых исчислений заключается в том, что исчисление доменов поддерживает дополнительную форму условия, называемую условием принадлежности. В общем виде условие принадлежности записывается следующим образом:
R(A1:1, A2:2,…),
где Ai – атрибут отношения R, а i – переменная домена или литерал. Проверяемое условие истинно, если и только если существует кортеж в отношении R, имеющий атрибуты А, равные заданным в выражении соответствующим значениям .
Например, выражение R12 ([Шифр детали] : ‘003412’, Материал :’Сталь-ст1’) истинно, если в отношении R12 существует хотя бы один кортеж со значением ‘003412’ атрибута Шифр детали и значением ‘Сталь-ст1’ атрибута Материал. Аналогично, выражение R12 ([Шифр детали] : SHD, Материал : M) истинно, если в отношении R12 существует кортеж, в котором значение атрибута [Шифр детали] эквивалентно текущему значению переменной домена SHD, а значение атрибута Материал эквивалентно текущему значению переменной домена М.
В следующих примерах будем подразумевать существование (объявленное каким-либо образом, подобно оператору RANGE исчисления кортежей) следующих переменных доменов: SHD (домен атрибута Шифр детали), HD (домен атрибута Название детали), M (домен атрибута Материал).
Пример 4. Выражения исчисления доменов.
(SHD) WHERE R12 ([Шифр детали] : SHD)
(SHD) WHERE R12 ([Шифр детали] : SHD, Материал : ‘Сталь-ст1’)
Первое выражение означает множество всех шифров деталей отношения R12, второе – множество шифров деталей, изготовленных из материала “Сталь-ст1”.
