- •Лекция 7. Основные понятия. Классификация информационных систем
- •Лекция 8. Потоки информации, их составные части, расчет количества информации
- •Лекция 9. Проектирование информационных систем
- •2. Стадии разработки информационных систем
- •Лекция 11. Процедуры обоснования решений при проектировании информационных систем
- •Лекция 12. Базы данных: архитектура, программное обеспечение, пользователи, модели данных.
- •Лекция 13. Реляционная модель данных
- •1) Операции над множествами: объединение, пересечение, вычитание и декартово произведение; 2) специальные реляционные операции: выборка, проекция, соединение и деление.
- •Лекция 14. Система управления базой данных Access: объекты, типы данных, вычисления, создание и модификация объектов.
Лекция 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, на основе вышеприведенных фактов можно формально вывести заключения, что: Виктор является братом Николая, Николай является дядей Сергея.
Другой формой представления знаний, основанных на правилах, является логика предикатов.