
- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
39
5.Модели данных. Ранние подходы к организации баз данных
После этапа инфологического проектирования базы данных, на котором фактически определяется ее семантическое содержание в терминах сущностей, их свойств, и связей, наступает этап проектирования датологической концептуальной модели данных. Теперь речь пойдет уже собственно о моделях данных, в которых в качестве объекта исследования выступают сами данные, их структурная организация, правила построения.
Говоря о моделях данных обычно рассматривают три взаимосвязанные компоненты модели:
o структуры данных, o операции над данными,
o ограничения целостности данных.
При рассмотрении различных моделей данных их сравнение между собой обычно проводят по тому, как в них реализованы эти три позиции.
В данном пособии основное внимание уделяется рассмотрению систем основанных на реляционной модели данных. В настоящее время эти системы являются доминирующими на рынке систем с базами данных, практически вытеснив системы, основанные на других подходах. Тем не менее, имеет смысл хотя бы коротко рассмотреть особенности систем, предшествующих реляционным, для правильного понимания причин перехода к реляционным системам. Кроме того, на использовании ранних подходов основаны многие низкоуровневые механизмы функционирования реляционных СУБД. Наиболее известными из таких дореляционных систем являются системы, основанные на
инвертированных списках, иерархические и сетевые системы [1, 4].
Относительно этих систем можно отметить следующее.
База данных, организованная с помощью инвертированных списков, в определенной мере похожа на реляционную, с тем существенным отличием, что хранимые таблицы данных и пути доступа к ним видны и доступны пользователю. При этом строки (записи) таблиц являются упорядоченными; для манипулирования данными используются прямые поисковые операторы по местоположению строки-записи в таблице (например, найти первую запись в таблице, следующую запись, предыдущую и т.д.); общие правила и средства определения целостности базы данных отсутствуют, эта задача возлагается на прикладную программу. Представляет интерес сравнение свойств таблиц в СУБД на инвертированных списках со свойствами таблиц-отношений в реляционной модели, рассматриваемые ниже. В современных реляционных СУБД доступ к данным, аналогичный используемому в системах, основанных
40
на инвертированных списках, используется при построении индексных структур и от пользователя скрыт.
Иерархические базы данных используют упорядоченные структуры данных, организованные в виде «деревьев». Такая древовидная структура состоит из одной корневой записи и упорядоченного набора подчиненных записей-потомков (ветвей дерева). Каждая запись-потомок имеет ссылку (указатель) на соответствующую родительскую запись, образуя иерархию подчинения от самого нижнего уровня записей – «листьев дерева» до верхнего уровня, образуемого корневой записью. Операторы манипулирования данными используют навигацию по иерархическим структурам, использующую ссылки (указатели) для перехода от записей одного уровня к другому. Из ограничений целостности автоматически поддерживается только целостность ссылок между записями-предками и записями-потомками (основное правило – никакой
«потомок» не может существовать без своего «родителя»).
Сетевые базы данных являлись в определенном смысле развитием иерархических систем. Если в иерархических структурах запись-потомок должна иметь в точности одного предка, в сетевых же структурах данных потомок может иметь любое число предков. Термины потомок и предок в отношении записей данных в иерархических и сетевых системах отражают тот факт, что в этих системах записи данных связываются между собой с помощью ссылок, то есть по адресу, а не по значению данных. Операторы манипулирования данными используют низкоуровневую навигацию по сетевой структуре, использующую ссылки для перехода от одной записи к другой. Ограничения целостности в общем виде не поддерживаются за исключением целостности по ссылкам.
Общим для всех ранних дореляционных систем является то, что в их основе не лежат какие-либо абстрактные модели данных, подкрепленные соответствующим математическим аппаратом. Более того, само понятие модели данных применительно к системам с базами данных стало использоваться именно с появлением реляционного подхода, который во многом родился в результате анализа особенностей, достоинств и в большей степени недостатков существовавших систем управления данными.
В ранних системах доступ к данным в базе данных осуществлялся непосредственно на уровне записей. Навигация по базе данных, поиск, выборка и запись данных в этих системах осуществлялись пользователем с использованием обычных процедурных языков программирования, расширенных функциями работы с СУБД, требуя от пользователя при работе с данными понимания низкоуровневых особенностей хранения данных и связей между ними. Возможность интерактивного доступа к данным реализовывалась гораздо более ограничено, только путем создания соответствующих прикладных программных средств. Как уже говорилось, ранние системы имели достаточно слабые средства поддержания целостности данных.
41
Низкоуровневые средства навигации и манипулирования данными позволяли, тем не менее, в ранних системах обеспечивать высокую эффективность реализации этих функций прикладными программами, экономное использование памяти вычислительной системы. Это можно отнести к достоинствам этих систем, особенно учитывая уровень вычислительных систем того времени (60-е – 70-е годы). Одним из следствий низкого уровня языковых средств, используемых в этих моделях для работы с данными, являлась сложность создания прикладных программных систем, необходимость знания при этом особенностей физического представления и хранения данных. В конечном итоге это приводило к большей сложности или даже невозможность выполнения комплекса требований к информационным системам с базами данных, рассмотренного в предыдущих разделах, например реализации требований многоаспектного использования данных, обеспечения независимости данных от логики использующих их программ и др.
6.Реляционная модель данных. Основные понятия. Структуры данных
6.1.Основные понятия реляционной модели данных
Воснове реляционных систем лежит реляционная модель данных. Принципы реляционной модели были заложены в 1969–70-х годах американским ученым Е.Ф. Коддом (E.F.Codd), в то время работавшим в корпорации IBM. Являясь математиком по образованию, он привнес в область управления базами данных строгие математические принципы и точность, которых не хватало ранним системам. Хотя реляционный подход утвердился не сразу, можно отметить, что почти все созданные с конца 70-х годов продукты баз данных основаны именно на реляционном подходе. Подавляющее большинство научных исследований в области баз данных в течение последних 35 лет также проводились именно в этом направлении.
Рассматривая и постепенно уточняя основные понятия реляционной модели, будем иметь в виду три компоненты модели данных:
•структуры данных,
•операции, которые можно выполнять над данными, и
•ограничения, связанные с обеспечением целостности данных. Основной структурой данных в реляционной модели являются таблицы,
называемые в реляционной теории отношениями. Собственно от термина отношение (по-английски relation) и произошло само название модели – реляционная. На рисунке 6.1 приведен пример такой таблицы-отношения и пояснение основных терминов реляционной модели – кортеж, кардинальное число, атрибут, степень, домен, первичный ключ.
Коротко, пока не очень строго, основные понятия реляционной модели можно определить следующим образом.

43
Код_студента
С2 |
С5 |
С1 |
С4 |
С7 |
|
|
С8 С3 |
|
|
С9 |
|
|
С10 |
|
Ключ
Заголовок
отношения
Код
Кортеж С2
С4
С6 С1 С7
Факультет
Физический Имя_студента Химический Биологический
Иванов |
Исторический |
||
Математический |
|||
Петрова |
Орлов |
||
|
|||
Сидоров |
Смирнов |
2 |
|
Попова |
Кузнецов |
1 |
|
4 |
Романов |
5 |
|
Потапов |
||
|
Курс
3
6
Домены
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Наименование |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
атрибута |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Имя |
|
|
|
|
|
|
|
|
|
|
|
Факультет |
|
|
|
|
|
|
Курс |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Физический |
1 |
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Иванов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Петрова |
|
|
|
|
|
|
|
|
|
|
|
|
Химический |
2 |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сидоров |
|
|
|
|
|
|
|
|
|
|
|
|
Физический |
2 |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Орлов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Химический |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Смирнов |
|
|
|
|
|
|
|
|
|
|
|
|
Физический |
3 |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Попова |
|
|
|
|
|
|
|
|
|
|
|
|
Исторический |
4 |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Кузнецов |
|
|
|
|
|
|
|
|
|
|
|
|
Физический |
1 |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Отношение |
Атрибут |
|
Значение атрибута |
||
|
Рис. 6.1 Отношение и его компоненты
•Отношение это таблица, подобная приведенной на рисунке 6.1, состоящая из строк и столбцов и имеющая вверху строку, называемую
заголовок отношения.
•Строки таблицы-отношения называются кортежами (tuple), а столбцы
атрибутами (attribute).
•Количество кортежей в отношении называется кардинальным числом отношения, а количество атрибутов называется степенью отношения.
•Каждый атрибут в отношении имеет наименование, которое указывается в заголовочной части отношения.
•Ключ отношения – это атрибут или набор атрибутов отношения такие, что в любой момент времени в отношении не существует строк, для которых значение или комбинация значений ключевых атрибутов являются одинаковыми. Ключ, таким образом, является уникальным идентификатором кортежей отношения (на рисунке 6.1 ключевой атрибут выделен жирным шрифтом).
•Домен отношения – это множество значений, из которого могут браться
значения конкретного атрибута. То есть конкретный набор значений