- •3. Назначение, основные функции и понятие субд.
- •4. Трёхуровневая архитектура бд.
- •5. Жизненный цикл базы данных.
- •6. Иерархическая и сетевая модели данных.
- •7. Реляционная модель данных. Общие представления.
- •8. Понятие домена.
- •8. Отношения, атрибуты и кортежи.
- •9. Формализация отношений в виде таблиц.
- •11. Потенциальные ключи. Первичные и альтернативные ключи.
- •12. Null-значения. Правило целостности объектов.
- •14. Внешние ключи. Ссылочная целостность.
- •15. Индексные файлы. Сортировка файлов бд.
- •16. Поиск записей в файле бд.
- •17. Стратегии ссылочной целостности.
- •18. Основные операции над реляционными базами данных.
- •18. Основы реляционной алгебры. Операции "Объединение", "Разность", "Декартово произведение". Примеры.
- •19. Специальные реляционные операции: "Выборка", "Проекция", "Соединение", "Деление". Примеры.
4. Трёхуровневая архитектура бд.
Архитектура ANSI/SPARC включает три уровня: внутренний, внешний и концептуальный. В общих чертах они представляют собой следующее.
Рис. 2.1. Три уровня архитектуры ANSI/SPARC
■ Внутренний уровень (называемый также физическим) наиболее близок к физическому хранилищу информации, т.е. связан со способами сохранения информации на физических устройствах.
■ Внешний уровень (называемый также пользовательским логическим) наиболее близок к пользователям, т.е. связан со способами представления данных для отдельных пользователей.
■ Концептуальный уровень (называемый также общим логическим или просто логическим, без дополнительного определения) является "промежуточным" уровнем между двумя первыми.
Если внешний уровень связан с индивидуальными представлениями пользователей, то концептуальный уровень связан с обобщенным представлением пользователей. Большинству пользователей нужна не вся база данных, а только ее небольшая часть, поэтому может существовать несколько внешних представлений, каждое из которых состоит из более или менее абстрактного представления определенной части базы данных, и только одно концептуальное представление, состоящее из абстрактного представления базы данных в целом. Кроме того, и внешний, и концептуальный уровни представляют собой уровни моделирования, а внутренний служит в качестве уровня реализации; иными словами, первые два уровня определены в терминах таких пользовательских информационных конструкций, как записи и поля, а последний — в терминах машинно-ориентированных конструкций наподобие битов и байтов.
Теперь
перейдем к более детальному исследованию
трех уровней архитектуры, начиная с
внешнего уровня. На рисунке показаны
основные компоненты архитектуры и их
взаимосвязь.
Рис. Подробная схема архитектуры системы баз данных
ВНЕШНИЙ УРОВЕНЬ
Внешний уровень — это индивидуальный уровень пользователя. Пользователь может быть прикладным программистом или конечным пользователем с любым уровнем профессиональной подготовки. Особое место среди пользователей занимает администратор базы данных (АБД). В отличие от остальных пользователей,
АБД интересуют также концептуальный и внутренний уровни.
У каждого пользователя есть свой язык для работы с СУБД.
Для прикладного программиста это либо один из распространенных языков программирования (например, PL/I, C++ или Java), либо специальный язык рассматриваемой системы. Для конечного пользователя это или специальный язык запросов, или язык специального назначения, который может быть основан на использовании
форм и меню, разработан специально с учетом требований пользователя и может интерактивно поддерживаться некоторым оперативным приложением.
Все эти языки включают подъязык данных, т.е. подмножество операторов всего языка, связанное только с объектами баз данных и операциями с ними. Иначе говоря, подъязык данных встроен в базовый язык, который дополнительно предоставляет различные не связанные с базами данных средства, такие как локальные (временные) переменные, вычислительные операции, логические операции и т.д. Система может поддерживать любое количество базовых языков и любое количество подъязыков данных. Однако существует один язык, который поддерживается практически всеми сегодняшними системами. Это язык SQL.
Хотя с точки зрения архитектуры удобно различать подъязык данных и включающий его базовый язык, на практике они могут быть неразличимы настолько, насколько это имеет отношение к пользователю. Любой подъязык данных является на самом деле комбинацией по крайней мере двух подчиненных языков — языка определения данных (Data Definition Language —DDL), который позволяет формулировать определения или объявления объектов базы данных, и языка манипулирования данными (Data Manipulation Language — DML),
который поддерживает операции с такими объектами или их обработку. Например, рас-
смотрим пользователя языка PL/I.
■ Язык определения данных включает некоторые описательные структуры языка PL/I, необходимые для объявления объектов базы данных. Это сам оператор DECLARE (или DCL), определенные типы данных языка PL/I, а также возможные специальные дополнения для языка PL/I, предназначенные для поддержки новых
объектов, которые не предусмотрены в существующей версии языка PL/I.
■ Язык обработки данных состоит из тех выполняемых операторов языка PL/I, которые передают информацию в базу данных и из нее; опять же, возможно, включая новые специальные операторы.
Отдельного пользователя интересует лишь некоторая часть всей базы данных. Кроме того, представление пользователя об этой части будет, безусловно, более абстрактным по сравнению с выбранным способом
физического хранения данных. В соответствии с терминологией ANSI/SPARC, представление отдельного пользователя называется внешним представлением. Таким образом, внешнее представление — это содержимое базы данных, каким его видит определенный пользователь (т.е. для каждого пользователя внешнее представление и есть та база данных, с которой он работает). Например, пользователь из отдела кадров может рассматривать базу данных как набор записей с информацией об отделах плюс набор записей с информацией о служащих, и ничего не знать о записях с информацией о материалах и их поставщиках, с которыми работают пользователи в отделе снабжения. В общем случае внешнее представление состоит из некоторого множества экземпляров каждого из многих типов внешних записей (которые вовсе не обязательно должны совпадать с хранимыми записями).
Каждое внешнее представление определяется посредством внешней схемы, которая в основном состоит из определений записей каждого из типов, присутствующих в этом внешнем представлении. Внешняя схема записывается с помощью языка определения данных, являющегося подмножеством подъязыка данных пользователя. Например, тип внешней записи о работнике можно определить как шестисимвольное поле с номером работника, как поле из пяти десятичных цифр, предназначенное для хранения данных о его зарплате, и т.д.
КОНЦЕПТУАЛЬНЫЙ УРОВЕНЬ
Концептуальное представление — это представление всей информации базы данных
в несколько более абстрактной форме по сравнению с описанием физического способа хранения данных. Однако концептуальное представление существенно отличается от представления данных какого-либо от-
дельного пользователя. Концептуальное представление — это представление данных в том виде, какими они являются на самом деле, а не в том, какими их вынужден рассматривать пользователь в рамках, например, определенного языка или используемого аппаратного обеспечения.
Концептуальное представление состоит из некоторого множества экземпляров каждого из существующих типов концептуальных записей. Например, оно может состоять из набора экземпляров записей, содержащих информацию об отделах, набора экземпляров записей, содержащих информацию о поставщиках, набора экземпляров записей, содержащих информацию о материалах и т.д. Концептуальная запись вовсе не обязательно должна совпадать с внешней записью, с одной стороны, и с хранимой записью — с другой.
Концептуальное представление определяется с помощью концептуальной схемы, включающей определения для каждого существующего типа концептуальных записей. Концептуальная схема использует другой язык определения данных — концептуальный. Определения концептуального языка должны относиться только к
содержанию информации. Это означает, что в концептуальной схеме не должно быть никакого упоминания о представлении хранимого файла, упорядоченности хранимых записей, индексировании, кэш-адресации, указателях или других подробностях хранения данных или доступа к ним.
Концептуальное представление — это представление всего содержимого базы данных, а концептуальная схема — это определение такого представления. Предлагают в качестве конечной цели создания концептуальной схемы, рассматривать описание всего предприятия — не только самих его данных, но и того, как эти данные используются, как они перемещаются внутри предприятия, для чего используются в каждом конкретном месте и т.д.
ВНУТРЕННИЙ УРОВЕНЬ
Третьим уровнем архитектуры является внутренний уровень. Внутреннее представление — это низкоуровневое представление всей базы данных как базы, состоящей из некоторого множества экземпляров каждого из существующих типов внутренних записей.
Термин внутренняя запись относится к терминологии ANSI/SPARC и означает конструкцию, иначе называемую хранимой записью. Внутреннее представление, так же как внешнее и концептуальное, отделе-
но от физического уровня, поскольку в нем не рассматриваются физические записи, обычно называемые блоками или страницами, и физические области устройства хранения, такие как цилиндры и дорожки. Другими словами, внутреннее представление предполагает наличие бесконечного линейного адресного пространства. Следует отметить, что блоки (или страницы) устройства ввода—вывода — это количество данных, передаваемых из вторичной памяти (памяти накопителя) в основную (оперативную) память за одну операцию ввода-вывода. Обычно, страницы имеют размер от 1 Кбайт и выше, но не больше 64 Кбайт (1 Кбайт = 1024 байт).
Внутреннее представление описывается с помощью внутренней схемы, которая определяет не только различные типы хранимых записей, но также существующие индексы, способы представления хранимых полей, физическую упорядоченность хранимых записей и т.д. Внутренняя схема формируется с использованием еще одного языка определения данных — внутреннего.
В заключение отметим, что в некоторых исключительных ситуациях прикладные программы, в частности те из них, которые называются утилитами, могут выполнять операции непосредственно на внутреннем, а не на внешнем уровне.
