Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по БД.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

1.2. Компоненты банка данных

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

В структуре банка данных выделяют следующие компоненты (подсистемы):

  • информационная база;

  • лингвистические средства;

  • программные средства;

  • технические средства;

  • организационно-административные подсистемы и норматив­но-методическое обеспечение.

1.2.1. Информационная база

Данные, отражающие состояние определенной предметной области и используемые информационной системой, принято называть информационной базой. Информационная база состоит из двух компо­нент: 1) коллекции записей собственно данных; 2) описания этих данных — метаданных.

Данные отделены от описаний, но в то же время данные не мо­гут использоваться без обращения к соответствующим описаниям.

Уже из определения базы данных и приведенных ранее основ­ных требований следует, что данные могут использоваться (т. е. представляться) по-разному. С одной стороны, разные прикладные задачи требуют разных наборов данных, в совокупности обеспечивающих функциональную полноту информации, а с другой — они должны быть различны для различных категорий субъектов (разра­ботчиком или пользователей). Также должны быть различными и способы описания самих данных, их природы, формы хранения, ус­ловий взаимной непротиворечивости.

В литературе по базам данных упоминаются три уровня пред­ставления данных — концептуальный, внутренний и внешний (рис. 1.2).

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

Внутренний уровень — глобальное представление БД, определя­ет необходимые условия для организации хранения данных на внешних запоминающих устройствах.

Описание БД на концептуальном уровне представляет собой обобщенный взгляд на данные с позиций предметной области (раз­работчика приложений, пользователя или внешней информацион­ной системы).

Внешний уровень представления данных не затрагивает физиче­ской организации (размещения) данных во внешней памяти, поэто­му его называют иногда логическим уровнем. Соответственно внут­ренний уровень называют физическим уровнем.

Рис. 1.2. Уровни представления данных

1.2.2. Лингвистические средства

Многоуровневое представление БД предполагает соответствующие описания данных на каждом уровне и согласование одних и тех же данных на разных уровнях. С этой целью в состав СУБД включают­ся специальные языки для описания представлений внутреннего и внешнего уровней. Кроме того, СУБД должна включать в себя язык манипулирования данными (ЯМД). Желательно также наличие тех или иных дополнительных сервисных средств, например средств ге­нерации отчетов.

Работа с базами данных предполагает несколько этапов:

  • описание БД;

  • описание частей БД, необходимых для конкретных приложе­ний (задач, групп задач);

  • программирование задач или описание запросов в соответст­вии с правилами конкретного языка и использованием языко­вых конструкций для обращения к БД;

  • загрузка БД и т. д.

Для выражения обобщенного взгляда на данные применяют язык описания данных (ЯОД) внутреннего уровня, включаемый в со­став СУБД2. Описание представляет собой модель данных и их от­ношений, т. е. структур, из которых образуется БД.

ЯОД позволяет определять схемы базы данных, характеристики хранимых и виртуальных данных и параметры организации их хра­нения в памяти и может включать в себя средства поддержки цело­стности базы данных, ограничения доступа, секретности.

ЯМД обычно включает в себя средства запросов к базе данных и поддержания базы данных (добавление, удаление, обновление данных, создание и уничтожение БД, изменение определений БД, обеспечение запросов к справочнику БД).

Исторически первым типом структур данных, который был включен в языки программирования, была иерархическая структура. Некоторые ранние СУБД также предполагали использование в ка­честве основной модели иерархические структуры типа дерева. Ос­нованием для такого выбора было удобство представления (модели­рования) естественных иерархических структур данных, существую­щих, например, в организациях.

В ряде предметных областей структура данных имеет более сложный вид, в котором поддерживаются связи типа «многие к одному», и которые могут быть представлены ориентированным гра­фом. Такие структуры называют сетевыми. Для управления БД сете­вой структуры международной ассоциацией Кодасил была предло­жена обобщенная архитектура системы с ЯОД схемы (модели БД) и подсхемы (модели части БД для конкретного приложения), а также ЯМД для оперирования данными БД в прикладных программах.

В настоящее время разработаны десятки языков, основанных на реляционном исчислении, различие которых обусловлено особен­ностями математических теорий, положенных в основу их построе­ния. Среди этих языков можно выделить базирующиеся на С-исчислении, предложенном Коддом, и P-исчислении, предложенном Пиротти.

С-исчисление базируется на классическом прикладном исчисле­нии предикатов. Р-исчисление представляет собой разновидность прикладного многотипного исчисления предикатов. Существенное различие между этими исчислениями, а следовательно и языками за­ключается в том, что в С-исчислении в качестве области изменения значений предметной переменной используется множество выборок (кортежей) отношения, а в Р-исчислении каждому типу переменных или констант соответствует определенный домен базы данных.

Функциональные характеристики языков отражают возможно­сти описания данных, средств представления запроса, обновления, поддержки целостности и секретности, включения в языки про­граммирования, управления форматом ответов, средств запроса к словарю данных БД и т. д.

Качественные характеристики языков запросов могут опреде­ляться такими свойствами, как полнота, селективная мощность, простота изучения и использования, степень процедурности и мо­дульности, унифицированность, производительность и эффектив­ность. Рассмотрим некоторые из этих понятий.

Селективная мощность языков запросов характеризует возмож­ность выбора данных по разным критериям. Данное понятие плохо поддается формализации; можно сказать, что язык с большей селек­тивной мощностью позволяет сформулировать большинство запро­сов так, что ответ на них содержит меньше ненужных данных. Язы­ки, обладающие малой селективной мощностью, в общем случае уже требуют привлечения дополнительных средств для анализа от­ветов на запросы (например, оценки пользователя).

Простота изучения является во многом субъективной оценкой и может быть в некоторой мере охарактеризована степенью его близо­сти к естественному языку, требуемым для его освоения временем и необходимым уровнем подготовки пользователя.

Высокий уровень процедурности, свойственный реляционным языкам, определяется присущими реляционной модели свойствами, в частности, полным отделением логической структуры данных от структур хранения и стратегий доступа. Снижение уровня процедур­ности увеличивает свободу в выборе способов реализации языка, что позволяет осуществить его реализацию более оптимальным спо­собом. Однако необходимо отметить, что меньшая степень проце­дурности еще не означает автоматически меньшую сложность напи­сания запросов. Некоторые сложные запросы можно более просто сформулировать в виде алгоритма поиска ответа, в то время как его формулировка в декларативном виде может оказаться достаточно трудной.

Модульность построения языка характеризует возможность существования нескольких уровней языка и зависит от специфических свойств математической теории, лежащей в его основе. Минималь­ный уровень языка, обычно легко понимаемый пользователем, бы­вает достаточным для формулирования большинства запросов, и лишь формулировка сложных запросов может потребовать исполь­зования всех выразительных средств языка, о существовании кото­рых пользователи начального уровня могут и не знать. Языки, не обладающие модульностью, требуют от пользователя знания почти всего объема средств языка, что усложняет процесс их изучения.

Наиболее распространенным языком для работы с базами дан­ных является SQL (Structured Query Language), в своих последних реализациях предоставляющий не только средства для специфика­ции и обработки запросов на выборку данных, но также и функции по созданию, обновлению, управлению доступом и т. д.

По существу SQL уже соединяет в себе язык описания данных и язык манипулирования данными. Он не является полноценным языком программирования, и в случае его использования для орга­низации доступа к БД из прикладных программ, SQL-выражения встраиваются в конструкции базового языка.

Являясь внутренним языком баз данных, SQL естественно отра­жает особенности конкретной СУБД. Сегодня это единственный стандартизованный язык фактографических баз данных, достаточно мощный и в то же время простой для понимания и использования. Сочетание этих факторов вместе с поддержкой ведущих производи­телей, таких как IBM и Microsoft, привели не только к широкому его распространению, но и совершенствованию. Сегодня, благодаря независимости от конкретных СУБД и межплатформенной перено­симости, SQL стал языком распределенных баз данных и языком шлюзов, позволяющим совместно использовать СУБД разного типа.