Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационные системы_готово.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.52 Mб
Скачать

Вопросы для самоконтроля

  1. Что включает в себя технология проектирования ЭИС?

  2. Что такое технологический процесс проектирования ЭИС?

  3. Что такое технологическая операция проектирования ЭИС?

  4. Каковы требования к технологии проектирования ЭИС?

  5. Что такое методология проектирования ЭИС?

  6. Что понимается под организацией проектирования ЭИС?

  7. Как классифицируются методы проектирования ЭИС?

  8. Какие признаки характеризуют каноническое проектирова­ние ЭИС?

  9. Какие признаки характеризуют автоматизированное проектирование ЭИС?

  10. Какие признаки характеризуют типовое проектирование ЭИС?

  11. Что такое индустриальное проектирование ЭИС?

  12. Как классифицируются средства проектирования ЭИС?

  13. Какие стадии входят в жизненный цикл ЭИС?

  14. Чем отличаются системный анализ и системный синтез?

  15. Каковы требования к проектированию ЭИС?

  16. Какие существуют модели жизненного цикла ЭИС?

  17. Как формально определяется технологическая операция проектирования?

  18. Как строится технологическая сеть проектирования ЭИС?

  19. Основные особенности экономической информации.

  20. Реквизиты-основания и реквизиты-признаки.

  21. Справочные и группировочные реквизиты.

  22. Основные понятия классификации объектов: классическая системы классификации, процесс классификации, признак классификации.

  23. Классификационные группировки и основания классификации.

  24. Ступень, уровень и глубина классификации.

  25. Свойства системы классификации.

  26. Гибкость, емкость и степень заполненности системы классификации.

  27. Иерархическая система классификации.

  28. Многоаспектная система классификации.

  29. Что представляет собой система кодирования?

  30. Что такое код и что является его основанием?

  31. Регистрационные системы кодирования.

  32. Классификационные системы кодирования.

  33. Последовательные и параллельные системы кодирования.

  34. Разрядная (позиционная) система кодирования.

  35. Комбинированная система кодирования.

  36. Предназначение Единой Системы Классификации и Кодирования.

  37. Использование штрихового кодирования экономической информации.

Раздел 4 базы данных. Организация и управление

4.1. Организация реляционных баз данных

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

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

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

Со временем именно второе направление, связанное с хранением и обработкой данных, стало доминирующим, особенно после появления персональных компью­теров. Использование персональных компьютеров для выполнения сложных научных расчетов сейчас является скорее исключением. Интересно также отметить, что современные персональные компьютеры, оборудованные процессорами с гро­мадными тактовыми частотами (на сегодняшний день рядовой дешевый процес­сор работает на частоте 700 – 800 МГц), при решении сложных научных задач мо­гут даже уступать по вычислительным возможностям «большим» компьютерам 10-15-летней давности.

Базы данных: основные сведения. Развитие компьютерных технологий, связанных с хранением и обработкой дан­ных, привело к появлению в конце 60-х – начале 70-х годов специализированного программного обеспечения, получившего название систем управления базами дан­ных (СУБД) (DataBase Management Systems – DBMS). СУБД позволяют структу­рировать, систематизировать и организовывать данные для их компьютерного хра­нения и обработки. Именно системы управления базами данных являются основой практически любой информационной системы.

СУБД можно определить как некую систему управления данными, обладающую следующими свойствами:

  • поддержание логически согласованного набора файлов;

  • обеспечение языка манипулирования данными;

  • восстановление информации после разного рода сбоев;

  • обеспечение параллельной работы нескольких пользователей.

Основные функции СУБД

К основным функциям, выполняемых системами управления базами данных, обыч­но относят следующие:

– непосредственное управление данными во внешней памяти;

– управление буферами оперативной памяти;

– управление транзакциями;

– протоколирование;

– поддержка языков баз данных.

Рассмотрим каждую из указанных функций более подробно.

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

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

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

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

Управление транзакциями

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

Если все операции успешно выполнены, то тран­закция также считается успешно выполненной и СУБД фиксирует (COMMIT) все изменения данных, произведенные этой транзакцией (то есть заносит измене­ния во внешнюю память). Если же хотя бы одна операция транзакции заканчива­ется неудачей, то транзакция считается невыполненной и производится откат (ROLLBACK) – отмена всех изменений данных, произведенных в ходе выполне­ния транзакции, и возврат базы данных к состоянию до начала выполнения тран­закции.

Управление транзакциями необходимо для поддержания логической целостности базы данных.

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

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

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

Журнализация (Элемент протоколирования).

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

Аппаратные сбои обычно подразделяются на два вида:

мягкие сбои связаны с внезапной остановкой работы компьютера. Обычно явля­ются следствием внезапного выключения питания или «зависания» операцион­ной системы (что особенно характерно для операционных Систем Windows);

жесткие сбои характеризуются потерей информации на носителях внешней памяти.

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

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

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

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

Во всех случаях придерживаются стратегии «упреждающей» записи в журнал (так называемого протокола Write Ahead Log – WAL). Несколько утрированно можно сказать, что эта стратегия заключается в том, что запись об изменении любого объек­та базы данных должна быть занесена в журнал до того, как будет выполнено и зафиксировано изменение этого объекта. Если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановле­ния базы данных после любого сбоя.

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

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

Для восстановления базы данных после жесткого сбоя используют журнал и архивную копию базы данных. Архивная копия – это полная копия базы данных к моменту начала заполнения журнала (хотя имеется много вариантов трактовки смыс­ла архивной копии). Для нормального восстановления базы данных после жестко­го сбоя, естественно, необходимо, чтобы журнал не пропал. Тогда восстановление базы данных состоит в том, что, исходя из архивной копии, по журналу воспроиз­водится работа всех транзакций, которые закончились к моменту сбоя. В принци­пе можно даже воспроизвести работу незавершенных транзакций и продолжить их работу после завершения восстановления. Однако в реальных системах это обыч­но не делается, поскольку процесс восстановления после жесткого сбоя является достаточно длительным.

Поддержка языков баз данных

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

Q-язык определения схем данных (Schema Definition Language, SDL) служит глав­ным образом для определения логической структуры базы данных; Q-язык манипулирования данными (Data Manipulation Language, DML) содержит набор операторов манипулирования данными, то есть операторов, позволяю­щих заносить данные в базу, а также удалять, модифицировать или выбирать существующие данные.

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

Язык SQL позволяет определять схему реляционной базы данных и манипулиро­вать данными. При этом именование объектов базы данных (для реляционной базы данных – именование таблиц и их полей) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объек­тов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов.

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

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

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

Эволюция систем управления базами данных

На эволюцию СУБД существенное влияние оказывает бурное развитие микроэлек­тронных технологий и связанное с этим развитие персональных компьютеров. Тем­пы развития персональных компьютеров за последние 10-15 лет существенно пре­вышают темпы развития «больших» ЭВМ. Область применения персональных компьютеров за последние несколько лет существенно расширилась. Можно вы­делить следующие основные причины этой тенденции:

– цена персональных компьютеров значительно ниже, чем больших ЭВМ;

– по функциональным возможностям персональные компьютеры превосходят большие ЭВМ;

– существенно уменьшился разрыв между производительностью персональных компьютеров и больших ЭВМ. Кроме того, для многих задач работы с данными производительность компьютера не является решающим фактором;

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

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

СУБД первого поколения

Первый этап был связан с созданием первого поколения СУБД, опиравшихся на иерархическую и сетевую модели данных (на основе спецификаций CODASYL). В этот период времени на рынке вычислительной техники доминировали боль­шие вычислительные машины (mainframe), такие как система IBM 360/370, кото­рые в совокупности с СУБД первого поколения составили аппаратно-программ­ную платформу больших информационных систем. СУБД первого поколения были в подавляющем большинстве закрытыми системами: отсутствовал стандарт внеш­них интерфейсов и не обеспечивалась переносимость прикладных программ.

Ранние СУБД, с сегодняшней точки зрения, имели массу недостатков, из которых наиболее существенными были следующие:

– сложность использования;

– необходимость знать физическую организацию базы данных;

– сильная зависимость прикладных систем от физической организации базы дан­ных;

– перегрузка логики прикладных систем деталями организации доступа к базе данных;

– отсутствие средств автоматизации проектирования баз данных;

– очень высокая стоимость.

Среди достоинств СУБД первого поколения можно отметить:

– наличие развитых средств управления данными во внешней памяти на низком уровне;

– возможность построения эффективных прикладных систем вручную;

– возможность экономии памяти за счет совместного использования объектов (в сетевых системах).

Несмотря на все свои недостатки, СУБД первого поколения оказались весьма дол­говечными: разработанное на их основе программное обеспечение используется по сей день, и большие ЭВМ по-прежнему хранят огромные массивы актуальной информации. Главной причиной этого является, вероятно, экономический фак­тор – в свое время в аппаратное и программное обеспечение больших ЭВМ были вложены огромные средства: в результате многие продолжают их использовать, несмотря на морально устаревшую архитектуру. В то же время перенос данных и программ с больших ЭВМ на компьютеры нового поколения сам по себе представ­ляет сложную техническую проблему и требует значительных затрат.

Реляционные СУБД

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

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

Одна из главных идей Кодда заключалась в том, что связь между данными должна устанавливаться в соответствии с их внутренними логическими взаимоотношениями.

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

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

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

На начальном этапе развития реляционных баз данных было разработано несколько языков запросов, среди которых наиболее известны такие, как QBE – Query by Example (запрос по образцу), Quel – Query Language (язык запросов) и SQL – Structured Query Language (структурированный язык запросов). Среди этих языков на сегодняшний день наибольшее распространение имеет SQL, который в 1986 г. был принят в качестве стандарта ANSI языков реляционных баз данных. Последнее обновление этого стан­дарта было принято в 1992 г., и язык запросов, соответствующий этому стандарту, обычно обозначается как SQL-92.

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

Объектно-ориентированные СУБД

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

Объектно-ориентированный подход имеет ряд преимуществ для разработчика, из которых можно отметить следующие:

– возможность разбить систему на совокупность независимых сущностей (объек­тов) и провести их строгую независимую спецификацию;

– простота эволюции системы за счет использования таких элементов объектно­го подхода как наследование и полиморфизм;

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

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

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

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

Реляционная модель данных.

Реляционная модель данных была предложена Е. Коддом, известным американским специалистом в области баз данных. Основные концепции этой модели были впер­вые опубликованы в 1970 г. [18]. Реляционная модель позволила решить одну из важнейших задач в управлении базами данных – обеспечить независи­мость представления и описания данных от прикладных программ, следствием чего было бы существенное упрощение проектирования и программирования баз дан­ных. Поэтому после опубликования работ Кодда начались активные исследова­ния по созданию реляционной системы управления базами данных. В результате этих исследований во второй половине 70-х годов был создан ряд коммерческих и некоммерческих реляционных СУБД.

К основным достоинствам реляционного подхода к управлению базой данных сле­дует отнести:

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

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

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

Несмотря на все свои достоинства, реляционные системы далеко не сразу получи­ли широкое признание. Хотя уже во второй половине 70-х годов появились пер­вые прототипы реляционных СУБД, долгое время считалось невозможным добить­ся эффективной реализации таких систем. Однако постепенное накопление методов и алгоритмов организации реляционных баз данных и управления ими привели к тому, что уже в середине 80-х годов реляционные системы практически вытесни­ли с мирового рынка ранние СУБД.

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

На устранение именно этих недостатков в основном и направлены исследования по созданию объектно-ориентированных баз данных.

Базовые понятия реляционной модели данных

Термин «реляционный» (от английского relation – отношение) указывает прежде всего на то, что такая модель хранения данных построена на взаимоотношении со­ставляющих ее частей, которые удобно представлять в виде двумерной таблицы.

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

Основными понятиями реляционной модели данных являются:

– тип данных;

– домен;

– атрибут;

– кортеж;

– ключ.

Рассмотрим смысл этих понятий на примере отношения (таблицы) СТУДЕНТЫ, содержащего информацию о студентах некоторого вуза (табл. 4.1).

Таблица 4.1

Пример отношения СТУДЕНТЫ реляционной базы данных

студенческого билета

Имя

Дата рождения

Курс

Специальность

23960282

Алексеев Д. А.

12.03.1985

2

Логистика

22991380

Яковлев Н. В.

25.12.1986

4

Физика

22657879

Михайлов В. В.

29.02.1986

5

Математика

24356783

Афанасьев А. В.

19.08.1986

1

Ин. язык

24350283

Кузнецов В. И.

03.10.1985

1

Физика

23125681

Смирнов Д. Д.

26.03.1984

3

Философия

Тип данных

Понятие тип данных в реляционной модели данных полностью эквивалентно со­ответствующему понятию в алгоритмических языках. Набор поддерживаемых ти­пов данных определяется СУБД и может сильно различаться в разных системах. Однако практически все СУБД поддерживают следующие типы данных: Q-целочисленные; U-вещественные; О-строковые;

  • специализированные типы данных для денежных величин;

  • специальные типы данных для временных величин (дата и/или время);

  • G типы двоичных объектов (данный тип не имеет аналога в языках программиро­вания; обычно для его обозначения используется аббревиатура BLOB – Binary Large Object).

Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных (соответствующими возможностями обладают, например, системы семейства Ingres/Postgres).

В рассматриваемом примере используются три типа данных – строковый (столбцы «Имя» и «Специальность»), временной тип (столбец «Дата рождения») и це­лочисленный тип («Курс» и «№ студенческого билета»).

Домен

Наименьшая единица данных реляционной модели – это отдельное атомарное (неразложимое) для данной модели значение данных.

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

В нашем примере можно для каждого столбца таблицы определить домен:

  • домены «Имена» и «Специальности» для столбцов «Имя» и «Специальность» со­ответственно будут базироваться на строковом типе данных – в число их значе­ний могут входить только те строки, которые могут изображать имя и название специальности (в частности, такие строки не должны начинаться с мягкого знака);

  • домен «Даты рождения» для столбца «Дата рождения» определяется на базо­вом временном типе данных – данный домен содержит только допустимый диапазон дат рождения студентов;

  • домены «Номера курсов» и «Номера студенческих билетов» базируются на целочисленном типе – в число его значений могут входить только те целые числа, которые могут обозначать номер курса университета (обычно от 1 до 6) и номер студенческого билета (обязательно положительное число).

Понятие домена более специфично для баз данных, хотя и имеет некоторые аналогии с диапазонными типами и множествами, имеющимися в ряде языков программиро­вания. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выра­жения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат «истина», то элемент данных является элементом домена.

Следует отметить также семантическую нагрузку понятия домена: данные счита­ются сравнимыми только в том случае, когда они относятся к одному домену. Если же значения двух атрибутов берутся из различных доменов, то их сравнение, вероятно, лишено смысла. В нашем примере значения доменов «Номера курсов» и «Номера студенческих билетов» основаны на одном типе данных – целочислен­ном, но не являются сравнимыми.

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

Атрибуты, схема отношения, схема базы данных

Столбцы отношения называют атрибутами, им присваиваются имена, по кото­рым к ним затем производится обращение.

Список имен атрибутов отношения с указанием имен доменов (или типов, если домены не поддерживаются) называется схемой отношения.

Схема нашего отношения СТУДЕНТ запишется так:

СТУДЕНТ (№ студенческого билета. Номера студенческих билетов

Имя. Имена. Дата рождения. Даты рождения.

Курс. Номера_курсов. Специальность Специальности).

Степень отношения – это число его атрибутов. Отношение степени один называ­ют унарным, степени два – бинарным, степени три – тернарным, …, а степени п – n-арным.

Степень отношения СТУДЕНТЫ равна пяти, то есть оно является 5-арным.

Схемой базы данных называется множество именованных схем отношений.

Кортеж

Кортеж, соответствующий данной схеме отношения, представляет собой множе­ство пар {имя атрибута, значение}, которое содержит одно вхождение каждого име­ни атрибута, принадлежащего схеме отношения. «3начение» является допусти­мым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым степень кортежа, то есть число элементов в нем, совпадает со степенью соответствующей схемы отношения. Иными словами, кор­теж – это набор именованных значений заданного типа.

Схему отношения иногда называют также заголовком отношения, а отношение как набор кортежей – телом отношения.

Понятие схемы отношения напоминает понятие структурного типа данных в языках про­граммирования (структура в C/C++, запись в Pascal). Однако в реляционных базах дан­ных имя схемы отношения всегда совпадает с именем соответствующего отношения – экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения – экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализа­циях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных.

Таким образом, отношение по сути является множеством кортежей, соответству­ющих одной схеме отношения.

Кардинальным числом или мощностью отношения называется число его кортежей. Мощность отношения СТУДЕНТЫ равна 6. В отличие от степени отношения кар­динальное число отношения изменяется во времени.

Пустые значения

В некоторых случаях какой-либо атрибут отношения может быть непри­меним. На­пример, в рассматриваемом в качестве примера отношении СТУДЕНТЫ может также храниться информация о потенциальных абитуриен­тах, посещающих под­готовительные курсы вуза или студентах, взявших академический отпуск по болезни. В этом случае неприменимыми оказываются атрибуты «№ студенческого билета» и «Курс» (так как абитуриенты еще не поступили в вуз и студенты, взявшие академический отпуск, либо не имеют студенческого билета и не могут быть отнесены к како­му-либо курсу). Кроме того, иногда при вводе информации в строку реляционной таблицы некоторые данные могут быть неизвестны и выясняться позже. (Для наше­го примера – при поступлении на подготовительные курсы абитуриент еще не оп­ределился окончательно, на какую специальность он будет поступать.)

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

Следует понимать, что пустое значение – это не ноль и не пустая строка, а неизве­стное значение атрибута, которое не определено в данный момент времени и в прин­ципе может быть определено позднее.

Для обозначения пустых значений полей используется слово NULL.

Ключи отношения

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

Более строго определить понятие первичного ключа можно следующим образом: если R – отношение с атрибутами A1, A2, ...., Аn, то множество атрибутов К = (Ai, Aj, ...., Ak) отношения R является первичным ключом этого отношения тогда и толь­ко тогда, когда удовлетворяются два независимых от времени условия:

уникальность: произвольный момент времени никакие два различных корте­жа отношения R не имеют одного и того же значения для Ai, Aj, ...., Ak;

минимальность: ни один из атрибутов Ai, Aj, ...., Ak не может быть исключен из К без нарушения уникальности. Для каждого отношения свойством уникальности обладает по крайней мере пол­ный набор его атрибутов. Однако требуется обеспечить и условие минимальности. Поэтому, как правило, в отношении всегда имеется один атрибут, обладающий свойством уникальности и являющийся первичным ключом.

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

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

Сложный или составной ключключ, состоящий из нескольких атрибутов.

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

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

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

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

В рассматриваемом нами примере в качестве первичного ключа отношения СТУДЕН­ТЫ можно рассматривать атрибут № студенческого билета. Причем данный ключ будет естественным, так как он несет вполне определенную информацию.

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

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

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

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

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

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

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

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

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

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

– UNIQUE – ограничение уникальности, значения вторичных ключей при дан­ном ограничении не могут дублироваться;

– NOT NULL – при данном ограничении ни один из атрибутов, входящих в со­став вторичного ключа, не может принимать значение NULL

Перекрывающиеся ключисложные ключи, которые имеют один или несколько общих столбцов.

Связанные отношения

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

Для рассмотрения связанных отношений воспользуемся рассмотренным ранее примером – отношением СТУДЕНТЫ. Данное отношение может быть связано с отношением УСПЕВАЕМОСТЬ, в котором содержатся сведения об успеваемос­ти студентов по разным предметам. Фрагмент такого отношения может иметь вид, приведенный в табл. 4.2

.

Таблица 4.2