Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект 2.doc
Скачиваний:
29
Добавлен:
09.08.2019
Размер:
5.97 Mб
Скачать

Лекция 12. Базы данных: архитектура, программное обеспечение, пользователи, модели данных.

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

Архитектура системы БД состоит из следующих четырех компо­нентов: аппаратное обеспечение (по сути является компьютером или компью­терной сетью, в которой создается система БД); программное обеспечение; пользователи; данные.

Программное обеспечение занимает промежуточное положение меж­ду "физической" базой данных, хранящей физические записи, и поль­зователями БД. Это программное обеспечение называется системой управления базой данных — СУБД (Data Base Management Systems — DBMS) и представляет собой набор программных средств, посредст­вом которого осуществляется управление базой данных и доступ к данным.

К числу основных функций СУБД принято относить следующие.

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

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

Управление транзакциями. Транзакция — это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется и СУБД фиксирует (COMMIT) из­менения БД, произведенные ею во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Роль тран­закций гораздо существеннее в многопользовательских СУБД. Каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения. Это делает очень удоб­ным использование понятия транзакции как единицы активности поль­зователя по отношению к БД;

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

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

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

Поддержка языков БД. Для работы с базами данных используются специальные языки баз данных. Чаще всего выделяются два языка — язык определения данных (DDL — Data Definition Language или SDL — Schema Defenition Language) и язык манипулирования данными (DML — Data Manipulation Language). SDL/DDL служит, главным образом, для определения логической структуры БД, a DML содержит набор опе­раторов манипулирования данными, т.е. операторов, позволяющих зано­сить данные в БД, удалять, модифицировать или выбирать существую­щие данные.

Во многих СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком реляционных СУБД является язык SQL (Structured Query Language). Язык SQL сочетает средства SDL/DDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. Язык SQL содержит специальные средства определения ограни­чений целостности БД. В реляционной СУБД можно выделить наиболее внутреннюю часть — ядро СУБД (Data Base Engine), компилятор языка запросов БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит.

Условно программные средства СУБД можно разделить на следующие основные части.

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

Менеджер памяти, состоящий из менеджера транзакций, менеджера буфера и файлового менеджера.

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

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

Пользователи систем БД могут быть условно разделены на следующие группы:

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

- подготовленные конечные пользователи также имеют доступ к систе­ме БД через интерфейс приложения, но этим приложением является встро­енный в СУБД процессор обработки запросов. Процессор позволяет пользо­вателю использовать язык запросов высокого уровня, например, язык SQL, о котором мы будем говорить ниже. Использование такого языка запросов требует гораздо большего опыта работы с СУБД, чем у пользователей первой группы;

- прикладные программисты — разработчики приложений, с которыми работают и пользователи первой группы. Для создания таких приложений используются языки COBOL, PL/1, C/C++, Pascal, Java;

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

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

Данные являются некоторым отображением объектов реального мира. Любые данные — это абстракция. Чтобы отобразить объект реального мира в базе данных, необходимо знать, какие признаки объекта будут нужны для работы. Если, например, объектом является "служащий", то такими признаками могут быть его фамилия, имя, отчество, год рождения, специ­альность, зарплата и т. д.

Традиционно объекты реального мира, сведения о которых хранятся в базе данных, называются сущностями (entities). Между сущностями суще­ствует некоторое множество связей.

Сущность — это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Набор сущнос­тей (entity set) — множество сущностей одного типа (обладающих одинаковыми свойствами). Например, все люди, железные дороги и т.д. Наборы сущностей не обязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору ПОЕЗД, также принад­лежит набору СРЕДСТВО_ПЕРЕДВИЖЕНИЯ.

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

Множество значений (область определения) атрибута называет­ся доменом. Например, для атрибута ВЕС домен задается интерва­лом целых чисел, положительных поскольку отрицательного веса не бывает.

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

Связь (relationship) — это ассоциация, установленная между несколь­кими сущностями. Связь может иметь атрибуты. Например, для связи ОТ­ДЕЛ-РАБОТНИК можно задать атрибут СТАЖ_РАБОТЫ В_ОТДЕЛЕ. В связи сущность может иметь ту или иную роль. Роль сущности в связи — функция, которую выполняет сущность в данной связи. Например, в связи РОДИТЕЛЬ-ПОТОМОК сущности ЧЕЛОВЕК могут иметь роли "родитель" и "потомок". Указание ролей не является обязательным и служит для уточнения семантики связи.

Набор связей (relationship set) — это отношение между n(n>1) сущно­стями, каждая из которых относится к некоторому набору сущностей. При n=2, когда связь объединяет две сущности, она называется бинарной. До­казано, что n-арный набор связей (n>2) всегда можно заменить множеством бинарных.

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

База данных — это совокупность описаний объектов мира и связей между ними, значимых для конкретной прикладной области.

Кия бинарных связей различают следующие типы связи:

связь 1:1 (один-к-одному). Это такая связь между типами сущнос­тей А и В, когда каждому экземпляру сущности А соответствует один и только один экземпляр сущности В и наоборот — каждому экзем­пляру сущности В соответствует один и только один экземпляр сущности Л. Примером является связь РУКОВОДИТ между сущнос­тями типа НАЧАЛЬНИК_ЖЕЛЕЗНОЙ ДОРОГИ и ЖЕЛЕЗНАЯ ДОРОГА;

связь I:N (один—ко-многим). В такой связи между типами сущнос­тей А и В каждому экземпляру сущности А соответствует один или несколько экземпляров сущности В, а каждому экземпляру сущности В соответствует один и только один экземпляр сущности А. Приме­ром является связь типа ИМЕЕТ В_СОСТАВЕ между сущностя­ми типа ЖЕЛЕЗНАЯ_ДОРОГА и ОТДЕЛЕНИЕ ЖЕЛЕЗНОЙ_ДОРОГИ;

связь М:1 (многие-к—одному). Связь такого типа является обратной связи со степенью 1:N. Примером может служить связь типа ВХОДИТ_В_СОСТАВ между сущностями типа ОТДЕЛЕНИЕ_ЖЕЛЕЗНОЙ_ДОРОГИ и ЖЕЛЕЗНАЯ ДОРОГА;

связь M:N (многие-ко-многим). Это такой тип связи между типами сущностей А и В, при котором каждому экземпляру сущности А может соответствовать несколько экземпляров сущности В и наоборот. Примером является связь типа ИЗУЧАЕТ между сущностями СТУДЕНТ и ДИСЦИПЛИНА.

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

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

Любая модель данных БД должна включать следующие составляю­щие:

структурную, определяющую структуру представления объектов в БД;

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

мапипуляционную, определяющую возможности работы с объектами, хранящимися в БД.

Обычно системы БД классифицируются в зависимости от модели дан­ных, которая лежит в их основе. В общепринятой классификации в насто­ящее время известны следующие модели данных: сетевая, иерархическая, реляционная, объектно-ориентированная, объектно-реляционная.

Объектно-ориентированную и объектно-реляционную модели часто называют постреляционными моделями данных БД.

Соответственно говорят о сетевых, иерархических, реляционных, объек­тно-ориентированных, объектно-реляционных системах и постреляцион­ных БД.

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

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

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

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

В системах баз знаний обе части — экстенсиональная и интенсиональ­ная — являются равноправными.

Появление систем баз знаний (по аналогии с системами баз дан­ных) или систем, основанных на знаниях (knowledge-based systems), обусловлено ведущей ролью знаний в том направлении компьютерной науки, которое принято называть искусственный интеллект. Способ­ность системы использовать в нужный момент релевантные знания считается показателем ее интеллектуальности. Системами, осно­ванными на знаниях (СОЗ), будем называть программные компьютерные системы, использующие обработку знаний как один из основных способов решения задач. Наиболее популярным и используемым клас­сом СОЗ являются экспертные системы (ЭС). Под ЭС понимается программная система, имитирующая действия человека-эксперта по до­стижению удовлетворительного и эффективного результата при решении задачи в узкой предметной области (ПО). Многие теоретические и прак­тические достижения по обработке знаний в ЭС могут быть обобще­ны и для других классов СОЗ.

Для приобретения знаний нужно последовательно решить две задачи: выяснить, какие знания требуются СОЗ для эффективного решения за дачи; определить, как наполнить систему релевантными знаниями.

Проблеме приобретения знаний в последние годы уделяется значительное внимание.

Представление знаний охватывает проблему разработки структуры и архитектуры базы знаний. База знаний (БЗ) — это совокупность фактических единиц, правил и средств их представления, описывающая предметную область (ПО) и вме­сте с процедурами обработки позволяющая отвечать на вопросы об этой ПО, ответ на которые в явном виде не присутствует в базе.

Простейшее представление знаний, основанное на правилах, построено на использовании продукционных правил или продукций вида:

ЕСЛИ (условие) ТО (действие).

Если некоторые факты удовлетворяют или согласуются с условием час­ти ЕСЛИ, тогда выполняется действие, определенное в части ТО продук­ционного правила.

В общем виде продукцию записывают следующим образом:

ЕСЛИ условие 1, условие 2,..., условие NТО действие 1.

Такая запись означает, что если все условия 1, ...,N выполняются, то сле­дует выполнить действие 1.

Сопоставление условий правил с фактами порождает цепочку вывода, а методы сопоставления называются методами вывода.

Пример 5.4

Пусть заданы: продукционное правило 1: ЕСЛИ Z является отцом X,Z является отцом Y, X и Y не являются одним и тем же лицом, ТО Х и Y являются братьями;

продукционное правило 2:

ЕСЛИ Y является отцом X,

Z является братом Y, ТО Y является дядей X.

где X, Y, Z — переменные, на место которых подставляются значения фактов.

Пусть также задано множество фактов: Иван является отцом Виктора; Иван является отцом Николая; Виктор является отцом Сергея.

Из знаний, заданных правилами 1 и 2, на основе вышеприведенных фактов можно формально вывести заключения, что: Виктор является братом Николая, Николай является дядей Сергея.

Другой формой представления знаний, основанных на правилах, явля­ется логика предикатов.