Базы данных в локальной сети учреждения
Введение в базы данных
Базы данных ‑ важнейшая составная часть информационных систем. Информационные системы предназначены для хранения и обработки больших объемов информации. Изначально такие системы существовали в письменном виде. Для этого использовались различные картотеки, папки, журналы, библиотечные каталоги и т.д. Любая информационная система должна выполнять три основные функции: ввод данных, запросы по данным, составление отчетов.
Ввод данных. Система должна предоставлять возможность накапливания и упорядочивания данных. Необходимо обеспечить просмотр этих данных, внесение в них изменений и дополнений, с тем чтобы поддерживать актуальность информации.
Запросы по данным. В системе должна существовать возможность находить и просматривать отдельные части накопленной информации.
Составление отчетов. Время от времени возникает необходимость обобщать и анализировать большую группу данных (или даже все данные) информационной системы, представляя ее в виде документа.
Обслуживание информационных систем, реализованных в письменном (бумажном) виде, сопряжено со многими трудностями: чем больше информационная система, тем больше бумаги (карточек) и места требуется для их хранения (в этом можно убедиться на примере библиотеки); много времени тратится на поиск нужной информации. Сложности возникают при обновлении, анализе и обработке данных.
Предположим необходимо собрать информацию про альбомы музыкальных групп. Пусть имеется информация о некоторых альбомах: 1965, Led Zeppelin 4, Lp, Help!, Atlantic, 1971, Lp(England), EMI, 1970, Flash Gordon, Parlophone, 1980, Led Zeppelin 3, Soundtrack, Lp, Atlantic. Этот список мало о чем говорит. Извлечь какую-либо информацию из этого набора данных практически невозможно.
Таблица 4.1.
Информация об альбомах музыкальных групп
Теперь воспринимать и использовать информацию стало гораздо удобнее. Представленная таблица является информационной моделью (табл. 4.1.). Объектами, отраженными в этой модели, являются музыкальные альбомы (групп), причем все данные взаимосвязаны.
В информатике совокупность взаимосвязанных данных называется информационной структурой, или структурой данных. В рассмотренном примере объектами модели являются музыкальные альбомы. Свойства же этих объектов находятся в столбцах таблицы (“Название альбома”, “Год выпуска”, “Тип альбома”, “Фирма”), их называют атрибутами объектов. Таким образом, каждая строка таблицы есть совокупность атрибутов объекта. Такую строку называют записью, а столбец – полем записи.
Помимо сведений, указанных в атрибутах, табличная организация данных позволяет получить дополнительную информацию. К примеру, нетрудно узнать (предполагая, что таблица заполнена данными):
• какая группа выпустила больше альбомов за определенный период;
• число альбомов данной группы;
• сколько имеется альбомов типа Soundtrack (музыка к фильму);
• какая фирма выпустила наибольшее число альбомов данной группы.
Табличная организация данных называется также реляционной. Кроме табличной структуры данных существуют другие виды структурной организации данных.
Для иерархических структур характерна подчиненность объектов нижнего уровня объектам верхнего уровня (рис. 4.1). Важно отметить, что в дереве, между верхними и нижними объектами, задано отношение “один ко многим” (т.е. одной группе соответствует много альбомов, одному альбому соответствует много песен).
Рис. 4.1. Пример иерархической организации данных
Несмотря на то что в атрибутах, описывающих песню, нет названия альбома, глядя на дерево по линиям связи можно сказать, какая песня принадлежит альбому. Благодаря линиям связи можно определить принадлежность альбома группе. Из данной иерархической структуры можно узнать:
в каком альбоме больше песен;
число альбомов, выпущенных группой;
есть ли в альбомах одинаковые песни и т.д.
Сетевую структуру данных можно представить в виде схемы (рис. 4.2).
По приведенной схеме можно определить, какими инструментами владеет музыкант, является ли он вокалистом. В этом случае есть два уровня взаимосвязанных объектов, но отношение между ними “многие ко многим”.
Пусть в этой сетевой структуре данные о музыкантах и “инструментах” состоят из следующих атрибутов: музыкант – ФИО, рост, цвет волос, время рождения. Инструмент – название инструмента, какой фирмой изготовлен инструмент.
Рис. 4.2. Пример сетевой организации данных
Тогда схема позволяет ответить на следующие вопросы:
Гитары какой фирмы предпочитает большинство музыкантов?
Какой музыкант владеет наибольшим количеством инструментов? и др.
Построение структуры данных происходит в следующем порядке:
1) определяются объекты описания;
2) определяются структуры этих объектов;
3) выбирается тип структуры, отображающей отношения между объектами (табличная, иерархическая, сети);
4) строится конкретная информационная структура.
Дадим основное определение. База данных (БД) – это реализованная с помощью компьютера информационная структура (модель), отражающая состояние объектов и их отношения.
Следует учесть, что это определение не является единственно возможным. С чисто пользовательской точки зрения базу данных можно определить как совокупность хранимых операционных данных некоторого учреждения.
Поскольку основу любой базы данных составляет информационная структура, базы данных делят на три типа: табличные (реляционные), сетевые, иерархические.
Опыт использования баз данных позволяет выделить общий набор их рабочих характеристик:
• полноту – чем полнее база данных, тем вероятнее, что она содержит нужную информацию (однако не должно быть избыточной информации);
• правильную организацию – чем лучше структурирована база данных, тем легче в ней найти необходимые сведения;
• актуальность – любая база данных может быть точной и полной, если она постоянно обновляется, т.е. необходимо, чтобы база данных в каждый момент времени полностью соответствовала состоянию отображаемого ею объекта;
• удобство для использования – база данных должна быть проста и удобна в использовании и иметь развитые методы доступа к любой части информации.
Соответственно возможностям организации реляционных, иерархических и сетевых информационных структур существуют и аналогичные виды баз данных. В них данные представлены в формах, адекватных соответствующим структурам. Однако иерархические и сетевые базы данных являются гораздо менее распространенными, чем реляционные, и не могут быть реализованы с помощью наиболее популярных БД, входящих в состав программного обеспечения ЭВМ, поэтому далее в юните они рассматриваться не будут.
Реляционные базы данных
В июне 1970 г. журнал “Communications of the АСМ” опубликовал статью доктора Э.Ф.Кодда, работавшего тогда в Исследовательской лаборатории компании IBM (IBM Research Laboratory) в Сан-Хосе, штат Калифорния. Эта статья, озаглавленная “Реляционная модель данных для больших совместно используемых банков данных”’, была первым кратким описанием новой реляционной модели для баз данных.
Реляционная модель данных – модель данных, в которой общая структура данных представлена в виде таблицы, где каждая строка (кортеж) соответствует логической записи, а заголовки столбцов являются названиями полей (элементов).
Как отмечал доктор Кодд в своей ключевой статье, реляционная модель данных обеспечивает ряд важных возможностей, которые делают управление базами данных и их использование относительно легким, устойчивым по отношению к ошибкам и предсказуемым. Наиболее важные характеристики реляционной модели заключаются в следующем:
• Она описывает данные с их естественной структурой, не добавляя каких-либо дополнительных структур, необходимых для машинного представления или для целей реализации.
• Она обеспечивает математическую основу для интерпретации выводимости, избыточности и непротиворечивости отношений.
• Она обеспечивает независимость данных от их физического представления, от связей между данными и от соображений реализации, связанных с эффективностью и подобными заботами.
Математические основы реляционной модели обусловливают интересную и важную характеристику ее – замкнутость. Главным элементом в реляционной модели является отношение. Для большинства людей обычной визуализацией отношения служит таблица, которая, как известно, имеет строки и столбцы. Столбцы отношения соответствуют “элементам данных” каждой записи, которая представляется строками отношения. Важное различие между отношением и таблицей (в том виде, как она реализована в большинстве поставляемых реляционных БД) заключается в том, что отношение не может иметь дубликатов кортежей (т.е. записей в файле), в то время как для таблиц допускается возможность содержать дубликаты строк.
Все реляционные операции над отношениями дают в результате отношения. Такая замкнутость позволяет доказывать корректность многих манипулятивных операций. Разнообразные операторы, определенные над отношениями, имеют точные математические свойства. Например, одни из них являются коммутативными, другие –— дистрибутивными или ассоциативными. Эти свойства имеют практические приложения. Так, они могут использоваться оптимизаторами высоко-производительных программных продуктов для нахождения более быстрых и более эффективных методов манипулирования данными.
Разработавший реляционную модель доктор Э.Ф. Кодд стал одним из главных сторонников реляционных баз данных, и компания IBM начала разработку нескольких исследовательских проектов и программных продуктов-прототипов, нацеленных на создание реляционных БД. Эта работа продолжалась почти целое десятилетие в течение 70-х годов. В начале 80-х гг. шквал коммерческих реляционных продуктов ‑ от компаний IBM, Oracle Corporation, Relational Technology Inc. (RTI, позднее известная как Ingres Corp., а затем ASK/Ingres) и других поставщиков ‑ легитимизировал реляционную модель данных как модель, на основе которой могут разрабатываться реальные жизнеспособные приложения.
Простота, присущая реляционной модели, сопровождалась, однако, соответствующим повышением сложности, связанной с поддержкой продуктов-БД. Разработчики приложений на основе иерархической или сетевой баз данных обладают контролем над тем, каким образом были определены связи и как осуществляется навигация по ним. Напротив, при создании систем реляционных баз данных большая часть этой обработки заключается в саму реляционную СУБД.
Сейчас наиболее распространенными в практике являются реляционные базы данных. Название “реляционная” (в переводе с английского relation ‑ отношение) связано с тем, что каждая запись в таблице содержит информацию, относящуюся только к одному конкретному объекту.
Всякое отношение должно иметь свое имя. Пусть есть отношение с названием “Альбомы группы”. В этом случае структура базы данных, состоящая из одной таблицы, запишется так: Альбомы группы (название альбома, год выпуска, тип альбома, фирма). Однако чаще база данных строится на основе нескольких таблиц, связанных между собой через общие атрибуты. Пусть, например, в базе данных “Рок-энциклопедия” содержатся две таблицы – 4.2 и 4.3.
Таблица 4.2
Музыкальные альбомы групп
Таблица 4.3
Рок-группы
Эти две таблицы связаны между собой общим полем “Код группы”. Поле “Код альбома” в таблице 4.2 создается для того, чтобы отличать альбомы друг от друга. Это очень важно, так как в таблице могут находиться альбомы с одинаковыми названиями.
Необходимость использования больше одной таблицы станет заметной, если объединить эти таблицы в одну (табл. 4.4).
Таблица 4.4.
Объединение таблиц
Из таблицы 4.4 видно, что при внесении в нее данных об альбомах определенной группы каждый раз приходится дублировать информацию первых четырех полей таблицы. Многократное сохранение в БД одних и тех же данных (название группы, страна, дата создания, дата распада) приведет к неэффективному использованию памяти, к тому же существенно возрастет вероятность ошибок при вводе данных. Разбив же данные по таблицам, можно в значительной степени избежать этих трудностей.
Через связь, определенную между этими таблицами, можно узнать:
Сколько альбомов выпустила группа?
Выпускались ли альбомы у фирмы EMI?
В каком году было выпущено максимальное количество альбомов? и т.п.
Реляционные базы данных удобны еще и тем, что для получения ответов на различные запросы существует разработанный математический аппарат, который называется исчислением отношений или реляционной алгеброй. Ответы на запросы получаются путем “разрезания” и “склеивания” таблиц по строкам и столбцам. При этом ясно, что ответы также будут иметь форму таблиц.
Надо отметить, что база данных ‑ это, собственно, хранилище информации и не более того. Однако работа с базами данных трудоемкая и утомительная. Для создания, ведения и осуществления возможности коллективного пользования базами данных используются программные средства, называемые системами управления базами данных (СУБД).