Базы данных. Основные понятия и классификация

СОДЕРЖАНИЕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

Базу данных (БД) можно определить как унифицированную совокупность данных, совместно используемую различными задачами в рамках некоторой единой автоматизированной информационной системы (ИС).

Теория управления базами данных как  самостоятельная дисциплина начала развиваться приблизительно с начала 50-х годов двадцатого столетия. За это время в ней сложилась определенная система фундаментальных понятий. Приведем некоторые из них:

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

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

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

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

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

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

Программное обеспечение, осуществляющее операции над базами данных, получило название СУБД — система управления базами данных.

Основные понятия.

Понятие «управление данными» (data management) впервые появляется задолго до баз данных (БД) и систем управления базами данных (СУБД) в качестве одной из основных функций операционной системы (ОС) ЭВМ.

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

 











 

Табл.1.Управление данными в ОС и СУБД

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

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

Представление символьных данных.

Рассмотрим методы дискретного  представления информации, или кодирования (которые, кстати, появились задолго до эры вычислительных машин)..

Первым широко известным примером является азбука Морзе,в которой буквы латиницы (или кириллицы) и цифры кодируются сочетаниями из «точек» и «тире». Воспользуемся данным кодом для иллюстрации основных понятий, связанных с кодированием (не вдаваясь в теорию кодирования).

Кодируемые (обозначаемые) элементы входного алфавита обычно называют символами.

Кодирующие (обозначающие) элементы выходного  алфавита называют знаками, количество различных знаков в выходном алфавите назовем значностью; количество знаков в кодирующей последовательности для одного символа – разрядностью кода; последовательным кодом является такой, в котором знаки следуют один за другим во времени (например, радио- или оптические сигналы либо передача по двум проводам, 2-жильному кабелю), параллельным — тот, в котором знаки передаются одновременно (например, по четырем проходам, 4-жильиому кабелю), образуя символ (т. е. символ передается и один прием, в один момент времени).

Применительно к азбуке Морзе (AM):

  • символами являются элементы языкового алфавита (буквы А—Z или А—Я) и цифровой алфавит (здесь — цифры 0-9);
  • знаками — «точка» и «тире» (или «+» и «-» либо «1» и «О», короче — два любых разных знака);
  • поскольку знаков два, AM является двузначным (бинарным, двоичным) кодом, если бы их было 3, то мы имели бы дело с троичным, тернарным, трехзначным кодом;
  • поскольку число знаков в AM колеблется от 1 (буквы «Е», «Т») ДО 5 (Цифры), здесь имеет место код с переменной разрядностью (в АМ часто встречающиеся в тексте символы обозначены более короткими кодовыми комбинациями нежели редкие символы);
  • так как знаки передаются последовательно (электрические импульсы, звуковые или оптические сигналы разной длины, соответствующие «точкам» и «тире»), АМ есть последовательный код.

Первые опыты телеграфной связи  осуществлялись именно посредством AM, причем приемное устройство записывало импульсы переменной длины в виде «точек» и «тире» на  движущуюся телеграфную ленту, однако уже в начале ХХ в. осуществлен переход на 5-разрядный (5-битовый);- телеграфный код.

В табл.2,3 приводится перечень наиболее известных кодов, некоторые из них использовались первоначально для связи, кодирования данных, а затем для представления информации в ЭВМ:

  • код Бодо – 5-разрядный код, бывший в прошлом европейским стандартом для телеграфной связи (другое название – IA-1 – international alphabet #1);
  • М-2 (российское обозначение), или IA-2 (международное обозначение), - телеграфный код, предложенный Международным консультационным комитетом по телефонии и телеграфии (МККТТ) и заменивший код Бодо (табл.3).

Код

Разрядность

IA-2 (М-2, МККТТ-2)

5

Baudot (Бодо)

5

ISO-7 (IA-2, ASCII-2,USASII,ANSI X3 4)

7

EBCDIC

8

ASCII-8

8

Hollerit (Перфокарты Холлерита)

12


Таблица 2. Разрядность некоторых  наиболее известных кодов.

 

Символ

IA-2

Бодо

ISO-7

EBCDIC

ASCII-8

Холлерит

A

03

10

41

C1

A1

900

B

19

06

42

C2

A2

880

C

16

43

C3

A3

840

D

09

44

C4

A4

820

a

   

61

81

E1

 

b

   

62

82

E2

 

c

   

63

83

E3

 

d

   

64

84

E4

 

. (точка)

05

2E

4B

4E

842

, (запятая)

09

2C

6B

4C

242

: (двоеточие)

 

3B

5E

5B

40A

? (вопрос)

10

0D

3F

6F

5F

206


Таблица 3. Фрагменты некоторых кодовых таблиц.

  • ASCII (American Standard Code for information Interchange) — стандартный 7-битовый код для передачи данных, поддерживает 128 символов, включающих прописные и строчные символы латиницы, цифры, специальные значки и управляющие символы. Это код, к которому были добавлены некоторые национальные символы (10 бинарных комбинаций), был принят Международной организацией по стандартизации (ISO) как стандарт ISO-7;
  • EBCDIC (Expanded Binary Coded Decimal Inform Code) — 8-разрядный код, предложенный фирмой IBM для машин серий IBM/360-375 (внутреннее представление данных в памяти), а затем распространившийся и на системы других производителей;
  • ASCII-8 — 8-разрялиый код, принятый для внутреннего и внешнего представления данных в вычислительных системах. Включает стандартную часть (128 символов) и национальную (128 символов). Соответственно в зависимости от национальной части кодовые таблицы различаются (табл.4);
  • код Холлерита, предложенный для ПК (1913 г.), затем использовавшийся для кодирования информации перед вводом в ЭВМ с перфокарт.

 

Наименование кодовой страницы (Code page)

Интерпретация кодовой страницы

Latin-1

Международный стандарт (ISO-8859-1) для интерпретации 2-й половины 1 (128-256) кода ASCII, таблица предназначена для латиницы

Latin-8

Международный стандарт (ISO-8859-8) для иврита

Latin-C

Международный стандарт (ISO-8859) для кириллицы

СР-437

Стандарт IBM для интерпретации 2-й половины (128-256) кода ASCII, таблица предназначена для греческого алфавита

СР-850

Стандарт IBM для восточноевропейских алфавитов

CP-852

Стандарт IBM для греческого алфавита

СР-862

Стандарт IBM для иврита

СР-866

Стандарт IBM для русской кириллицы


Таблица 4. Некоторые кодовые таблицы  ASCII.

 

Одним из «последних слов» в процессе развития систем символьного кодирования является универсальный код UNICODE (Universal Code) — стандарт 16-разрядного кодирования символов.

Стандарт UNICODE разработан техническим комитетом, в который вошли представители ряда ведущих фирм. Он определяет коды, обеспечивающие идентификацию различных символов: букв, иероглифов, цифр и т. д. Код может использоваться вместо 7—8-битовых, в том числе и ASCII. Поскольку в 16-разрядном UNICODE можно закодировать 65 536 символов вместо 128 в ASCII, то отпадает необходимость в создании модификаций таблиц кодов. Это существенно упрощает обработку текстовых файлов, хотя и несколько увеличивает их размеры.

UNICODE охватывает 28 000 букв, знаков, слогов, иероглифов, национальных языков мира, 30 000 мест в UNICODE зарезервировано. Использование этого резерва дает возможность пользователям вводить математические, а также технические символы, а также создавать собственные символы.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уровни информационных процессов.

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

  • Автоматизированную информационную технологию (АИТ, ИТ) определим как целенаправленное и согласованное использование технических средств информатизации ( аппаратурный фактор); программных средств и систем ( программный фактор); информационных массивов и баз данных (информационный фактор); интеллектуальных усилий и человеческого труда (человеческий и гуманитарный фактор) для решения задач предметной области.
  • Информационные системы (АИС, ИС) определяются как комплексы информационных технологий, ориентированных на процедуры сбора, обработки, хранения, поиска, передачи и отображения предметной области;
  • Информационные ресурсы (ИР) — комплексы соответствующих информационных систем, рассматриваемые прежде всего на социально-экономических уровнях описания и применения, в принципе можно утверждать, что информационные технологии являются менее зависимыми от структуры и специфики подметной области, чем информационные системы и/или ресурсы, однако эта связь всегда существует.

База данных на уровне информационных технологий представляет собой коллекцию информации, обычно совокупность многих файлов, доступ к которой осуществляется либо через ФС ОС, либо посредством простых СУБД, (точнее, систем программирования с элементами СУБД), таких, Аccess, Foxpro. На уровне информационных систем БД является компонентой модели предметной области ИС и обычно поддерживается мощной СУБД (Oracle, Adabas, SQL Server), автономно реализующей основные операции доступа к данным, размещенным в небольшом количестве файлов ОС, без активной эксплуатации возможности ФС.

На уровне информационных ресурсов БД представляет собой предметно-ориентированную коллекцию информацию, содержащую несколько миллионов записей (например, INPADOC - БД по патентным документам, INSPEC — БД по техническим наукам, MEDLINE — по медицине и пр.). В качестве обеспечения здесь обычно используются автоматизированные информационно-поисковые системы (АИПС), ориентированные на поиск и представление слабоструктурированной текстовой информации (STAIRS, IRBIS пр.)

Классификация СУБД

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

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

К СУБД относятся следующие виды программ:

    • Полнофункциональные СУБД;
    • Серверы БД;
    • клиенты БД;
    • средства разработки программ работы с БД.

Полнофункциональные СУБД, (ПФСУБД) представляют собой традиционные СУБД, которые сначала появились для больших машин, затем для мини-машин и для ПЭВМ. Из числа всех СУБД современные ПФСУБД являются наиболее многочисленными и мощными по своим возможностям. К ПФСУБД относятся, например, такие пакеты, как Clarion Database Developer, DataEase, DataFlex, dBase IV, Microsoft Access, Microsoft FoxPro и Paradox R:BASE.

Обычно ПФСУБД имеют развитый интерфейс, позволяющий с помощью команд меню выполнять основные действия с БД: создавать и модифицировать структуры таблиц, вводить данные, формировать запросы, разрабатывать отчеты, выводить их на печать и т. п. Для создания запросов и отчетов не обязательно программирование, а удобно пользоваться языком QBE (Query By Example — формулировки запросов по образцу.

Многие ПФСУБД включают средства программирования для профессиональных разработчиков.

Некоторые системы имеют в качестве вспомогательных и дополнительные средства проектирования схем БД или, CASE-подсистемы. Для обеспечения доступа к другим БД или к данным SQL-серверов полнофункциональные СУБД имеют факультативные модули.

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

Примерами серверов БД являются следующие программы: NetWare SQL (Novell), MS SQL Server (Microsoft), InterBase (Borland), SQLBase Server (Gupta), Intelligent Database (Ingress).

В роли клиентских программ для серверов БД в общем случае могут использоваться различные программы: ПФСУБД, электронные таблицы, текстовые процессоры, программы электронной почты и т. д. При этом элементы пары «клиент — сервер» могут принадлежать одному или разным производителям программного обеспечения.

В случае, когда клиентская и серверная части выполнены одной фирмой, естественно ожидать, что распределение функций между ними выполнено рационально. В остальных случаях обычно преследуется цель обеспечения доступа к данным «любой ценой». Примером такого соединения является случай, когда одна из полнофункциональных СУБД играет роль сервера, а вторая СУБД (другого производителя) — роль клиента. Так, для сервера БД SQL Server (Microsoft) в роли клиентских (фронтальных) программ могут выступать многие СУБД, такие как dBASE IV, Blyth Software, Paradox, DataEase, Focus, 1-2-3, MDBS III, Revelation и другие.

 

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

    • клиентских программ;
    • серверов БД и их отдельных компонентов;
    • пользовательских приложений.

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

К средствам разработки пользовательских приложений относятся системы программирования, например Clipper, разнообразные библиотеки программ для различных языков программирования, а также пакеты автоматизации разработок (в том числе систем типа клиент-сервер). В числе наиболее распространенных можно назвать следующие инструментальные системы: Delphi н Power Builder (Borland), Visual Studio (Microsoft), SILVERRUN (Computer Advisers Inc.), S-Designor (SDP и Powersoft) и ERwin (Logic Works).

Если говорить о конкретных системах программирования (для языков С++, С#. Visual Basic Java и др.), то все они содержат некоторые средства доступа к наиболее широко используемым БД.

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

По характеру использования СУБД делят на персональные и многопользовательские.

Персональные СУБД обычно обеспечивают возможность создания персональных БД и недорогих приложений, работающих с ними. Персональные СУБД или разработанные с их помощью приложения зачастую могут выступать в роли клиентской части многопользовательской СУБД, к персональным СУБД, например, относятся Visual FoxPro, Paradox, Clipper, dBase, Access и др.

Многопользовательские СУБД включают в себя сервер БД и клиентскую часть и, как правило, могут работать в неоднородной вычислительной среде (с разными типами ЭВМ и операционными системами) к многопользовательским СУБД относятся, например, СУБД Oracle и Informix.

В зависимости от способа хранения и обработки БД (централизованного или децентрализованного) СУБД можно разделить на два класса; централизованные (или обычные) СУБД и децентрализованные (или распределенные) СУБД. В обычных СУБД данные хранятся и том же место, где и программы их управления в распределенных СУБД как программное обеспечение, так и данные распределены по узлам сети. Распределенные СУБД могут быть однородными или неоднородными. Неоднородность СУ БД может проявляться в отличии поддерживаемых модели данных, типов данных, языков запросов, фирм-разработчиков и т. д.

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

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

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

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

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

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

Названные языки в различных СУБД могут иметь отличия. Наибольшее распространение получили два стандартизованных языка: QBE (Query By Example) — язык запросов по образцу и SQL (Structured Query Language) — структурированный язык запросов. QBE в основном обладает свойствами языка манипулирования данными, SQL сочетает в себе свойства языков обоих типов — описания и манипулирования данными.

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

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

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

 

 

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

Базы данных. Основные понятия и классификация