Лекция №4

 

Название лекции: Внутренняя (физическая) схема БД.

План:

1. Внутренняя (физическая) схема БД.

2. Соотношение внутреннего и внешнего языка определения данных. Язык SQL. Сильно

связанные и слабо связанные языки.

 

1. Внутренняя (физическая) схема БД.

Третьим уровнем архитектуры ANSI/SPARC является внутренний уровень. Внутренний (физический) уровень (внутреннее представление) описывает размещение БД на устройствах внешней памяти. Сама по себе физическая БД может быть представлена на нескольких уровнях абстракции от записей и файлов в языках программирования до уровня цилиндров, дорожек, блоков, байтов и бит, хранимых на внешних устройствах. Заметим, что физическая организация файлов определена файловой системой OS, под управлением которой работает СУБД и в настоящем курсе не рассматривается, но полное игнорирование при проектировании БД физической организации файлов может существенно снизить производительность и эффективность СУБД. Поэтому мы будем рассматривать физическую организацию файла на уровне некоторой модели (абстракции) реальной реализации, предполагая внешнюю память как бесконечное линейное адресное пространство. Линейное в том смысле, что для указания адреса внешней памяти достаточно указать одно число (это соответствует понятию кластера файловой системы). На самом деле адресация памяти на дисках трехмерна: цилиндр, трек, сектор. Итак, мы не будем исследовать уровни абстракции внутреннего представления. Будем рассматривать внутреннее представление на уровне, эквивалентном записям и файлам языка программирования.

Внутреннее представление, в таком случае, описывается внутренней схемой, которая определяет различные типы хранимых записей, способ представления хранимых полей, физическую последовательность хранимых записей, способы получения различных логических последовательностей записей.

 

2. Соотношение внутреннего и внешнего языка определения данных.

Внешний уровень – это индивидуальный уровень пользователя. К пользователям относятся конечные пользователи и прикладные программисты. Особую роль играет администратор БД, который участвует в разработке всех уровней представлений. У каждого пользователя есть свой язык общения с БД:

- для конечного пользователя это, или специальный язык запросов, или язык специального назначения, возможно основанный на формах и меню, созданный прикладным программистом с учетом требований пользователя и поддерживаемый некоторыми приложениями;

- для прикладного программиста это либо один из распространенных языков программирования, такой как С, либо специальный язык рассматриваемой СУБД.

Как для конечного пользователя, так и для прикладного программиста используемые языки включают подъязыки данных, т.е. подмножество операторов всего языка, связанное только с объектами и операциями с БД. Т.о. подъязык встроен в базовый язык, который имеет ещё операторы, не связанные с БД (if, while и т.д.).

СУБД может поддерживать любое количество базовых языков и любое количество подъязыков данных.

В настоящее время существует один язык, который поддерживается практически всеми СУБД это язык SQL (Structured Query Language).

Базовый язык и включенный в него подъязык данных могут быть практически неразличимыми (например, SQL – как самостоятельный язык). Если они неразличимы или трудно различимы, их называют сильно связанными. Если они легко различаются, то говорят, что они слабо связанны.

СУБД с сильно связанными языками сложнее разработать, но очевидна существенная тенденция продвижения к более сильно связанным системам. Подъязык данных на самом деле является комбинацией двух языков: языка определения данных (data definition language - DDL), который поддерживает объявление или определение объектов БД, и языка обработки данных (data manipulation lаnguage - DML), который поддерживает операции с такими объектами или их обработку.

Внешние и внутренние языки могут совпадать или не совпадать.

Пример: для прикладного программиста – это язык С + SQL. Внутренняя схема описана на С, а запросы на SQL. В этом случае внутренний и внешний языки не совпадают. Если внутренняя схема описана на SQL и запросы на SQL, то языки совпадают. Для конечного пользователя совпадение языков крайне редко (продвинутые пользователи). Обычно внешний язык – язык меню, внутренний, или специальный языки (FoxPro, C), или SQL. Но иногда продвинутые пользователи общаются с СУБД на языке SQL и, если внутренний язык также SQL, то это соответствует совпадению языков.