СОСТАВ И ФУНКЦИИ СИСТЕМ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
База данных предполагает наличие комплекса программных средств, обслуживающих эту базу данных и позволяющих использовать содержащуюся в ней информацию. Такие комплексы программ называют СУБД. СУБД - это программная система, поддерживающая наполнение и манипулирование данными, представляющими интерес для пользователей при решении прикладных задач. Иными словами, СУБД является интерфейсом между базой данных и прикладными задачами.
Ниже перечислены основные функции СУБД.
1. Определение данных - определить, какая именно информация будет храниться в базе данных, задать свойства данных, их тип (например, число цифр или символов), а также указать, как эти данные связаны между собой. В некоторых случаях есть возможность задавать форматы и критерии проверки данных.
2. Обработка данных
- данные могут обрабатываться самыми различными способами. Можно выбирать любые поля, фильтровать и сортировать данные. Можно объединять данные с другой, связанной с ними, информацией и вычислять итоговые значения.
3. Управление данными
- можно указать, кому разрешено знакомиться с данными, корректировать их или добавлять новую информацию. Можно также определять правила коллективного доступа.
Входящие в состав современных СУБД средства совместно выполняют следующие функции:
• описание
данных, их структуры (обычно описание данных и их структуры происходит при инициировании новой базы данных или добавлении к существующей базе новых разделов (отношений); описание данных необходимо для контроля корректности использования данных, для поддержания целостности базы данных);
• первичный ввод, пополнение информации в базе данных;
• удаление
устаревшей информации из базы данных;
• корректировку
данных для поддержания их актуальности;
• упорядочение (сортировку) данных по некоторым признакам;
• поиск информации
по некоторым признакам (для описания запросов имеется специальный язык запросов, он обеспечивает также интерфейс между базой данных и прикладными программами пользователей, позволяет этим программам использовать базы данных);
• подготовку и генерацию отчетов ( средства подготовки отчетов позволяют создавать и распечатывать сводки по заданным формам на основе информации базы данных);
• защиту информации и разграничение доступа пользователей к ней (некоторые разделы базы данных могут быть закрыты для пользователя совсем, открыты только для чтения или открыты для изменения; кроме того, при многопользовательском режиме работы с базой данных необходимо, чтобы изменения вносились корректно; для сохранения целостности данных служит механизм трансакций при манипулировании данными - выполнение манипуляций небольшими пакетами, результаты каждого из которых в случае возникновения некорректности операций «откатываются» и данные возвращаются к исходному состоянию);
• резервное сохранение и восстановление базы данных, которое позволяет восстановить утраченную при сбоях и авариях аппаратуры информацию базы данных, а также накопить статистику работы пользователей с базой данных;
• поддержку интерфейса с пользователями, который обеспечивается средствами ведения диалога (по мере развития и совершенствования СУБД этот интерфейс становится все более дружественным; дружественность существующих средств интерфейса предполагает
• наличие развитой системы помощи (подсказки), к которой в любой момент может обратиться пользователь, не прерывая сеанса работы с компьютером и базой данных;
• защиту от необдуманных действий, предупреждающую пользователя и предотвращающую потерю информации в случае поспешных или ошибочных команд;
• наличие нескольких вариантов выполнения одних и тех же действий, из которых пользователь может выбрать наиболее удобные для себя, соответствующие его подготовке, квалификации, привычкам;
• тщательно продуманную систему ведения человеко-машинного диалога, отображение информации на дисплее, использование клавиш клавиатуры). В настоящее время выделяют пять уровней проблематики систем управления базами данных:
• реляционные базы данных, 1970 - 90 гг.;
• объектно-ориентированные базы данных, 1980 - 90 гг.;
• интеллектуальные базы данных, 1985 - 90 гг.;
• распределенные базы данных, начало 1990 гг.;
• базы данных мультимедиа и виртуальной реальности настоящего времени.
Архитектурно СУБД состоит из двух основных компонентов; языка описания данных
(ЯОД), позволяющего создать схему описания данных в базе, и языка манипулирования данными (ЯМД), выполняющего операции с базой данных (наполнение, обновление, удаление, выборку информации). Данные языки могут быть реализованы в виде тренажеров или интерпретаторов. Помимо ЯОД и ЯМД к СУБД следует отнести средства
(или языки) подготовки отчетов
(СПО), позволяющие подготовить сводки (отчеты) на основе информации, найденной в базе данных, по заданным формам.
Язык описания данных (ЯОД) - это язык высокого уровня декларативного (непроцедурного) типа, предназначенный для формализованного описания типов данных, их структур и взаимосвязей. Исходные тексты описания данных на этом языке после трансляции отображаются в управляющие таблицы, задающие размещение в памяти ЭВМ и связи между собой рассматриваемых данных. В соответствии с этими описаниями СУБД находит в базе требуемые данные, правильно преобразует их и передает, например, в прикладную программу пользователя, которой они потребовались. При записи данных в базу СУБД по этим описаниям определяет место в памяти ЭВМ, куда их требуется поместить, преобразует к заданному виду и устанавливает необходимые связи.
Язык манипулирования данными (или язык запросов) представляет собой систему команд, например, следующего типа:
• произвести выборку данного, значение которого удовлетворяет заданным условиям;
• произвести выборку всех данных определенного типа, значения которых удовлетворяют заданным условиям;
• найти в базе позицию данного и поместить туда новое значение (или удалить данное) и т.д.
Широкое распространение имеют СУБД для персональных компьютеров типа DBASE (DBASE III, IV, FoxPro, Paradox), Clipper, Clarion. Эти СУБД ориентированы на однопользовательский режим работы с базой данных и имеют очень ограниченные возможности.
Языки подобных СУБД представляют собой сочетание команд выборки, организации диалога, генерации отчетов. В связи с развитием компьютерных сетей, в которых персональные компьютеры выступают в качестве развитых (интеллектуальных) терминалов, новые версии СУБД все в большей степени включают в себя возможности описанного ниже языка манипулирования данными SQL.
В последнее время стали среди СУБД популярными ACCESS (входит в состав MS Office), Lotus, Oracle.
Язык манипулирования данными SQL
Рассмотрим в качестве примера языка манипулирования данными некоторые команды языка SQL (от английских слов Structured Query Language), ставшего классическим языком реляционных баз данных.
Простейшая операция выборки представляется командой SELECT - FROM -WHERE (выбрать - из - где):
select <список атрибутов>
from <отношение>
where <условие>.
Например, если необходимо из отношения «Успеваемость», имеющего схему:
Успеваемость (ФПО_студента, Дисциплина, Оценка, Дата, Преподаватель)
произвести выборку данных о том, какие оценки студент Иванов И.И. получил и по каким предметам, надо задать команду:
select Дисциплина, Оценка
from Успеваемость
where ФИО_студента = «Иванов И. И.».
Часть команды «where» не является обязательной. Например, можно получить список всех студентов из отношения «Успеваемость» с помощью следующей команды:
select unique ФИО_студента
from Успеваемость.
Ключевое слово unique позволяет исключить из результата дубликаты значений атрибута. Выбрать полностью информацию из таблицы можно с помощью команды
select *
from Успеваемость.
Условие, следующее за «where», может включать операторы сравнения =,
<>, >=, <, <=,
булевы операторы AND, OR, NOT, а также скобки для указания желаемого порядка операции. Например, выбрать из таблицы «Успеваемость» фамилии студентов, сдавших на "5" экзамен по информатике, можно с помощью команды
select ФИО_студента
from Успеваемость
where Дисциплина = «Информатика» AND Оценка=5.
Выборка может быть и вложенной, когда необходимо использовать в условии результаты-другой выборки. Например, если надо из отношения «Успеваемость» выбрать только студентов физико-математического факультета, пользуясь отношением «Студент», то команда select может выглядеть так:
select ФИО_студента
from Успеваемость
where ФИО_студента is in
(select Фамилия
from Студент
where Ф_т = «физмат»).
Здесь «is in» является представлением оператора принадлежности элемента множеству. Можно также использовать операторы «is not in» («не принадлежит множеству»), «contains» - содержит, «does not contains» - не содержит. Смысл выражения «A contains В» (А содержит В) тот же, что и выражения «В is in А» (В принадлежит множеству А). Помимо слов select, from, where в команде выборки можно использовать и другие служебные слова, например:
order by <атрибут> asc - определяет сортировку результата выборки
в порядке возрастания (asc) или убывания (desc)
значения атрибута;
group by <атрибут1> - группирует данные по значениям атрибута;
having set <атрибут2>
minus - операция вычитания множеств (данных выборок).
Помимо команды выборки select, язык SQL имеет команды, позволяющие обновлять данные (update), вставлять (insert) и удалять (delete). Например, если студенты переводятся со 2-го курса на третий, информацию можно обновить командой
update Студент
set Kypc=3
where Kypc=2.
Если атрибут «Семенов С.С.» сдал экзамен по информатике на «5» 15 января 1996 г.преподавателю Петрову П.П., то информация об этом может быть добавлена в таблицу «Успеваемость» командой
insert inio Успеваемость:
<«Семенов С.С.», «Информатика», 5,15/01/96, Петров П.П.>.
Оператор insert может быть использован для включения одной строки (как в этом примере) или произвольного числа строк, определенных списком кортежей, заключенных в скобки, или операций выборки select из какой-либо другой таблицы. Команда delete используется для удаления информации из таблицы. Например,
delete Успеваемость
where Оценка=2
позволяет удалить информацию о студентах, получивших 2 (в случае их отчисления).
Существенно расширяют возможности языка библиотечные функции, такие как count (подсчет), sum (суммирование), avg (среднее), max и min.
Например, подсчитать число студентов в таблице «Студент»: select count (*) from Студент.