Трехуровневая архитектура СБД
. Решение проблемы независимости ПП и данных обеспечивается использованием трехуровневой архитектуры системы (рис. 1.5).
Эта архитектурная концепция предлагает использовать три уровня представления данных:
· внешний уровень – представления данных для различных конечных пользователей.
· внутренний уровень – представление данных в памяти ЭВМ, но без конкретных технических деталей (схема хранения).
· концептуальный уровень – обобщенное логическое представление данных, не содержащее никаких ссылок на реализацию.
Рис. 1.5 Трехуровневая архитектура БД (общий вид)
Пример. Пусть в нашей ПО имеется объект СЛУЖАЩИЙ, характеризующийся свойствами
табельный номер | номер отдела | зарплата | . . . , |
и есть два конечных пользователя БД – КП1 и КП2. Для КП1 представляют интерес только табельный номер и номер отдела, для КП2 – табельный номер
и зарплата. Объект имеет три уровня представления или описания.
На внешнем уровне показаны два представления объекта СЛУЖАЩИЙ для различных конечных пользователей. Каждому из них обслуживающая его ПП предоставляет ту информацию о СЛУЖАЩем, в которой он заинтересован, скрывая другие характеристики.
Внешний уровень 1 (COBOL) Внешний уровень 2
(PL/1)
01 EMP# DCL 1 EMP
02 ЕМPNO PIC X (6) 2 EMP CHAR (6)
02 DEPNO PIC X (4) 3 SAL FIXED BIN (31);
Первые строчки этих текстов объявляют имена объекта. Вторые и третьи строчки указывают имена и типы характеристик объекта. Для КП1 – это табельный номер и номер отдела, а для КП2 – табельный номер
и зарплата. Отметим, что в разных представлениях имена объекта и его характеристик могут быть различными.
С точки зрения обобщенного пользователя БД содержит следующую информацию о служащих.
Концептуальный уровень
СЛУЖАЩИЙ
Номер служащего CHAR (6)
Номер отдела CHAR (4)
Зарплата NUMERIC (5)
Из приведенного описания совершенно не видно, как эта информация организована в памяти ЭВМ. Пользователю не нужно это знать. На внутреннем уровне
объект СЛУЖАЩИЙ представлен типом внутренней записи STORED_EMP.
Внутренний уровень
STORED_EMP |
LENGTH= 20 |
||
PREFIX |
TYPE = BYTE (6), |
OFFSET= 0 |
|
EMP# |
TYPE = BYTE (6), |
OFFSET= 6, |
INDEX = EmPX |
DEPT# |
TYPE = BYTE (4), |
OFFSET=12, |
|
PAY |
TYPE =FULLWORD, |
OFFSET=16 |
Рассмотрим детали трехуровневой архитектуры, представленные на рис. 1.6.
|
Базовый язык
(PL/1, COBOL, C,…) обеспечивает процедурные возможности, т.е. локальные переменные, арифметические и логические операции, циклы и т.п.
Подъязык данных
– подмножество операторов языка, связанных только с объектами и операциями БД. Он является комбинацией по крайней мере двух подчиненных языков – ЯОД и ЯМД. С помощью этих языковых средств пользователь получает доступ к части хранимых данных и возможность оперировать данными в этой части. Для этого пользователя эта часть и есть БД. Она называется внешним представлением
(внешней моделью).
Внешнее представление состоит из множеств экземпляров некоторых типов внешних записей. Эти внешние записи, как видно из примера, отнюдь не должны совпадать с хранимыми. Подъязык данных пользователя определен в терминах внешних записей. Значит, операции выборки/обновления будут определяться над множеством внешних записей.
Единицей доступа к данным для пользователя является внешняя запись.
Каждое внешнее представление задается внешней схемой – набором определений типов внешних записей. Схема описывается средствами пользовательского ЯОД. Система сохраняет это описание в словаре данных и может обратиться к нему. Изменения внешней схемы конкретного КП не видны прикладным программам других пользователей.