
- •Содержание
- •Список сокращений
- •Введение
- •Основные понятия теории баз данных
- •Понятие системы баз данных
- •Базы данных и их назначение
- •Данные и модели данных
- •Типы систем баз данных
- •Архитектура системы баз данных
- •Уровни архитектуры
- •Система управления базами данных
- •Система управления передачей данных
- •Архитектура «клиент-сервер»
- •Утилиты
- •Распределенная обработка
- •Семантическое моделирование
- •Общий подход
- •Модель «сущность/связь»
- •Введение в реляционные базы данных
- •Реляционная модель
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог в sql
- •Представления
- •Транзакции в sql
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
- •Реляционная алгебра
- •Введение в реляционную алгебру
- •Реляционная замкнутость
- •Синтаксис
- •Семантика
- •Примеры
- •Назначение реляционной алгебры
- •Реляционное исчисление
- •Введение в реляционное исчисление
- •Исчисление кортежей
- •Примеры для исчисления кортежей
- •Средства языка sql
- •Целостность данных
- •Введение в целостность данных
- •Ограничения типа
- •Ограничения атрибута
- •Ограничения переменной-отношения
- •Ограничения баз данных
- •«Золотое правило»
- •Ограничения состояния и ограничения перехода
- •Средства языка sql
- •Функциональные зависимости
- •Введение
- •Основные определения
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей
- •Замыкание множества атрибутов
- •Неприводимые множества зависимостей
- •Нормализация: формы 1нф, 2нф, 3нф и нфбк
- •Введение
- •Декомпозиция без потерь и функциональные зависимости
- •Первая, вторая и третья нормальные формы
- •Нормальная форма Бойса-Кодда
- •Нормализация: более высокие нормальные формы
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Общая схема процедуры нормализации
- •Вопросы для самопроверки
- •Дополнительная литература
Архитектура системы баз данных
В данном разделе рассмотрим типичную архитектуру СБД. Однако, это не означает, что любая конкретная реализация СБД будет полностью соответствовать и поддерживать все аспекты предложенной архитектуры. Тем не менее, архитектура, которая будет рассмотрена, с достаточной точностью описывает большинство систем (и не только реляционных). Более того, она будет практически полностью согласовываться с архитектурой, предложенной исследовательской группой ANSI/SPARC (Study Group on Data Management Systems) – так называемой архитектурой ANSI/SPARC.
Замечание: Материал этого раздела аналогичен материалу предыдущего раздела в том смысле, что является основой для полного понимания структуры и возможностей современных СБД.
Уровни архитектуры
Архитектура ANSI/SPARC включает три уровня: внутренний, внешний и концептуальный (рис. 2.1). В общих чертах они представляют собой следующее:
Внутренний уровень (также называемый физический) наиболее близок к физическому хранилищу информации, т.е. связан со способами хранения информации на физических устройствах.
Внешний уровень (также называемый пользовательским логическим) наиболее близок к пользователям, т.е. связан со способами представления данных для отдельных пользователей.
Концептуальный уровень (также называемый общим логическим или просто логическим) является «промежуточным» уровнем между первыми двумя.
Рис. 2.1 Три уровня архитектуры ANSI/SPARC
Может существовать несколько внешних представлений, каждое из которых состоит из более или менее абстрактного представления определенной части базы данных, и только одно концептуальное представление, состоящее из абстрактного представления базы данных в целом. Это отражает тот факт, что большинство пользователей интересует только часть всей базы данных. Также существует одно внутренне представление, отражающее способ физического хранения всей базы данных.
Рассмотрим подробнее каждый из представленных уровней в отдельности.
Внешний уровень. Данный уровень является индивидуальным уровнем пользователя (прикладной программист или конечный пользователь). Администратора базы данных интересует не только данный уровень, но и два других. У каждого пользователя есть свой язык общения.
Для прикладного программиста это либо один из распространенных языков программирования (C#, С++, Java и др.), либо специальный язык рассматриваемой системы. Для конечного пользователя это либо специальный язык запросов, или язык специального назначения, который может быть основан на использовании форм и меню, разработанный с учетом требований пользователя и интерактивно поддерживаемый некоторым приложением (приложением доступа к базе данных). Все эти языки включают подъязык данных, т.е. подмножество операторов всего языка, связанное только с объектами баз данных и операций с ними. Иначе говоря, подъязык данных встроен в базовый язык, который дополнительно обеспечивает различные не связанные с базами данных возможности (такие как, локальные переменные, логические и вычислительные операции и др.). Однако существует один язык, который поддерживается практически всеми сегодняшними реляционными системами – SQL.
В соответствии с терминологией ANSI/SPARC представление отдельного пользователя называется внешним представлением. Таким образом, внешнее представление – это содержимое базы данных, каким его видит определенный пользователь. Каждое внешнее представление определяется посредством внешней схемы, которая, в основном, состоит из определения записей каждого из типов, присутствующих в этом представлении. Внешняя схема записывается с помощью языка определения данных (часть подъязыка данных, наравне с языком обработки данных).
Концептуальный уровень. Концептуальное представление – это представление всей информации базы данных в несколько более абстрактной форме (как и в случае внешнего представления) по сравнению с физическим способом хранения данных. Иначе говоря, концептуальное представление – это представление данных такими, какими они являются на самом деле, а не такими, какими их вынужден видеть отдельный пользователь в рамках используемого языка или аппаратного обеспечения. Концептуальное представление определяется с помощью концептуальной схемы. Описание концептуальной схемы должно относиться только к содержанию информации (т.е. не должно быть никаких подробностей хранения данных, что обеспечивает независимость данных). Концептуальная схема должна содержать не только описание структур хранимых данных и их спецификации, но также и все ограничения целостности, защиты и т.д.
Внутренний уровень. Внутреннее представление – это низкоуровневое представление всей базы данных как базы, состоящей из некоторого множества экземпляров каждого из существующих типов внутренних записей. Внутреннее представление также отделено от физического уровня, так как на нем не рассматриваются физические записи (блоки или страницы) и физические области устройства хранения, такие как цилиндры и дорожки. Внутренне представление описывается с помощью внутренней схемы, которая определяет не только типы хранимых записей, но и существующие индексы, способы представления хранимых полей, физическую упорядоченность хранимых записей и т.д.