База данных
База данных БД - совокупность информации и материалов на какую-то тему (в рамках некоторой предметной области), систематизированной таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ). Сама по себе база данных не может обслужить запросы пользователя на поиск и обработку информации. БД — это только «информационный склад» . Обслуживание пользователя осуществляет информационная система. И. С. - это совокупность базы данных и всего комплекса аппаратно- программных средств для ее хранения, изменения и поиска информации, для взаимодействия с пользователем. Распределённая БД - различные части одной базы данных хранятся на множестве компьютеров, объединенных между собой сетью (пример – информация в сети Internet, объединённая сетью WWW). Реляционный тип БД – модель данных строится по принципу взаимосвязанных таблиц.
Иерархический тип БД - один тип объекта является главным, все нижележащие – подчиненными. Сетевой тип БД - любой тип данных одновременно может быть главным и подчиненным.
История возникновения и развития БД Можно рассматривать в широком и узком аспекте. В широком аспекте понятие истории баз данных обобщается до истории любых средств, с помощью которых человечество хранило и обрабатывало данные. В таком контексте упоминаются, например, средства учёта царской казны и налогов в древнем Шумере (4000 г. до н. э. ), узелковая письменность инков — кипу, клинописи, содержащие документы Ассирийского царства и т. п. Этот подход размывает понятие «база данных» и фактически объединяет его с понятиями «архив» и «письменность» . История баз данных в узком аспекте рассматривает базы данных в традиционном (современном) понимании. Эта история начинается с 1955 года, когда появилось программируемое оборудование обработки записей. Программное обеспечение этого времени поддерживало модель обработки записей на основе файлов. Для хранения данных использовались перфокарты.
Оперативные сетевые базы данных появились в середине 1960 -х. Операции над оперативными базами данных обрабатывались в интерактивном режиме с помощью терминалов. За руководство работой Data Base Task Group (DBTG), разработавшей стандартный язык описания данных и манипулирования данными, Чарльз Бахман получил Тьюринговскую премию (самая престижная премия в информатике, вручаемая Ассоциацией вычислительной техники за выдающийся научно-технический вклад в этой области, аналог Нобелевской премии в академических науках, в данное время размер составляет 250000 долларов США). Следующий важный этап связан с появлением в начале 1970 -х реляционной модели данных, благодаря работам Эдгара Ф. Кодда. Работы Кодда открыли путь к тесной связи прикладной технологии баз данных с математикой и логикой. За свой вклад в теорию и практику Эдгар Ф. Кодд также получил премию Тьюринга. Сам термин database (база данных) появился в начале 1960 -х годов, и был введён в употребление на симпозиумах, организованных фирмой SDC (System Development Corporation) в 1964 и 1965 годах, хотя понимался сначала в довольно узком смысле, в контексте систем искусственного интеллекта. В широкое употребление в современном понимании термин вошёл лишь в 1970 -е годы.
Реляционная база данных Главное достоинство таблиц - в их понятности. С табличной информацией мы имеем дело практически каждый день. В реляционных БД строка таблицы называется записью, а столбец - полем. Каждое поле таблицы имеет имя. Одна запись содержит информацию об одном объекте той реальной системы, модель которой представлена в таблице. Например, одна запись о каком либо объекте - это информация об одной игрушке.
Поля - это различные характеристики (иногда говорят - атрибуты) объекта. Значения полей в одной строчке относятся к одному объекту. Разные поля отличаются именами. Записи различаются значениями ключей. Главным ключом в базах данных называют поле (или совокупность полей), значение которого не повторяется у разных записей. В БД «Домашняя библиотека» разные книги могут иметь одного автора, могут совпадать названия книг, год издания, полка. Но инвентарный номер у каждой книги свой (поле НОМЕР). Он-то и является Ключ БД «Домашняя библиотека» (простой) главным ключом для записей в этой базе данных. Номер Автор Название Год Полка 001 Блок А. А. Собрание стихотворений 1980 1 002 Булгаков М. А. Белая гвардия 1989 1 003 Булгаков М. А. Мастер и Маргарита 1985 2
Не всегда удается определить одно поле в качестве ключа. Вот, например, база данных студентов: В такой таблице у разных записей не могут совпасть только одновременно несколько полей (например: ФИО и Номер телефона). Эти два поля вместе образуют составной ключ: ФИО-Номер телефона. Составной ключ может состоять из двух и более полей. Составной ключ «ФИО-Номер телефона» ФИО Группа Факультет Кафедра Номер телефона Александров А. А. 1 -30 -2 Приборостроительный Электротехника 123456 Иванов И. И. 1 -30 -1 Приборостроительный Электротехника 213432 Петров П. П. 1 -30 -1 Приборостроительный Электротехника 312654
С каждым полем связано еще одно очень важное свойство - тип поля. Тип определяет множество значений, которые может принимать данное поле в различных записях. В реляционных базах данных используются следующие основные типы полей: • Числовой – значение только числа (например, в БД «Погода» поля числового типа: ТЕМПЕРАТУРА, ДАВЛЕНИЕ, ВЛАЖНОСТЬ); • Символьный – для хранения символьных последовательностей (слова, тексты, коды и т. п. ). Примерами символьных полей являются поля Автор и Название в БД «Домашняя библиотека» ; поля ФИО, Группа, Кафедра, Факультет в БД «Студенты» ; • Дата - календарные даты в форме «день/месяц/год» (месяц/день/год). Тип «дата» имеет поле ДЕНЬ в БД «Погода» ; • Логический тип поля может принимать всего два значения: «да» — «нет» или «истина» — «ложь» или «true» — «false» ; • Memo – поле для примечаний. От типа величины зависят те действия, которые можно с ней производить. Например, с числовыми величинами можно выполнять арифметические операции, а с символьными и логическими — нельзя.
Система управления базами данных (СУБД) СУБД - совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных. Принципы построения систем управления баз данных следуют из требований, которым должна удовлетворять организация баз данных: • Производительность и готовность. Запросы от пользователя базой данных удовлетворяются с такой скоростью, которая требуется для использования данных. Пользователь быстро получает данные всякий раз, когда они ему необходимы. • Минимальные затраты. Низкая стоимость хранения и использования данных, минимизация затрат на внесение изменений. • Простота и легкость использования. Пользователи могут легко узнать и понять, какие данные имеются в их распоряжении. Доступ к данным должен быть простым, исключающим возможные ошибки со стороны пользователя. • Простота внесения изменений. База данных может увеличиваться и изменяться без нарушения имеющихся способов использования данных.
• Возможность поиска. Пользователь базы данных может обращаться с самыми различными запросами по поводу хранимых в ней данных. Для реализации этого служит так называемый язык запросов. • Целостность. Современные базы данных могут содержать данные, используемые многими пользователями. Очень важно, чтобы в процессе работы элементы данных и связи между ними не нарушались. Кроме того, аппаратные ошибки и различного рода случайные сбои не должны приводить к необратимым потерям данных. Значит, система управления данными должна содержать механизм восстановления данных. • Безопасность и секретность. Под безопасностью данных понимают защиту данных от случайного или преднамеренного доступа к ним лиц, не имеющих на это права, от неавторизированной модификации (изменения) данных или их разрушения. Секретность определяется как право отдельных лиц или организаций решать, когда, какое количество информации может быть передано другим лицам или организациям. Одно из самых важных преимуществ современных СУБД состоит в логической и физической независимости данных. Например, база данных, реализованная в СУБД d. Base, физически содержит, как минимум, три файла. В то же время эту же базу данных можно перенести в СУБД Microsoft Access, где она физически разместится в одном файле. При этом логическая организация данных не изменится.
По способу доступа к базе данных СУБД делятся: • Файл-серверные. В файл-серверных СУБД файлы данных располагаются централизованно на файл-сервере. СУБД располагается на каждом клиентском компьютере (рабочей станции). Доступ СУБД к данным осуществляется через локальную сеть ( «минусы» : большая нагрузка на сеть, невозможность централизованного управления, недостаточная надёжность и безопасность). На данный момент считаются устаревшими. Пример СУБД: Microsoft Access, Paradox, d. Base, Fox. Pro, Visual Fox. Pro. • Клиент-серверные. Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно ( «минусы» : повышенные требования к серверу; «плюсы» : централизованное управление, высокая надёжность и безопасность). Примеры: Oracle, Firebird, Interbase, MS SQL Server, My. SQL. • Встраиваемые. Встраиваемая СУБД — СУБД, которая может поставляться как составная часть некоторого программного продукта, не требуя процедуры самостоятельной установки. Встраиваемая СУБД предназначена для локального хранения данных своего приложения и не рассчитана на коллективное использование в сети. Физически встраиваемая СУБД чаще всего реализована в виде подключаемой библиотеки.
Обзор существующих СУБД СУБД Oracle Является на сегодняшний день самой мощной, многофункциональной и легко масштабируемой СУБД, построенной по архитектуре "клиент/сервер", поддерживающей практически все существующие платформы. § Для построения крупномасштабных информационных систем; § Работа с распределёнными базами данных; § Возможность разделять большие таблицы на несколько небольших самостоятельных частей. При потери одной части таблицы остальные части не затрагиваются. § Возможность параллельной обработки запросов, создания индексов и параллельной загрузки данных; § Интеграция СУБД с сетью Internet (встроенный Web-server); § Реализован собственный язык PL/SQL (Procedural Language / Structured Query Language – процедурное расширение языка SQL; SQL - «язык структурированных запросов» универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных). Язык PL/SQL позволяет создавать и хранить в самой БД пользовательские программы, для гибкого и эффективного взаимодействия с базой данных и автоматизации её работы.
Программы, используемые вместе с СУБД Oracle: • SQL *NET позволяет пользователю взаимодействовать с удаленной базой данных (или несколькими базами данных) через сеть так же, как с локальной БД; • SQL *PLUS позволяет интерактивно, из командной строки, взаимодействовать с БД Oracle при помощи инструкций SQL. ORACLE Developer – это интегрированная среда разработки приложений, взаимодействующих с БД Oracle по архитектуре клиент/сервер. Архитектура: • Клиент-сервер; • Трёхуровневая архитектура (клиент → сервер приложений → сервер БД).
В состав ORACLE Developer входят: • Form Builder - интегрированная среда для разработки программ, которые позволяют получить доступ к БД Oracle, при помощи удобных форм пользователя; • Report Builder - интегрированная среда разработки отчетов, позволяющая при помощи удобных мастеров строить практически любые отчеты; • Graphics Builder - средство визуализации данных БД Oracle, импорт данных и графики из различных источников; • Procedure Builder позволяет создавать и отлаживать процедуры на языке PL/SQL; • Project Builder позволяет объединить в едином проекте все средства Oracle Developer. Другие инструменты разработчика: • Oracle Book - инструмент создания электронной гипертекстовой документации, которая может вызываться из приложений. Созданные с помощью Oracle Book документы могут находиться в базе данных или в файловой системе, и содержать, помимо текста и графики, видео- и аудио- данные; • Oracle Glue ("клей") позволяет включать внешние прикладные программы (например, Excel) в среду разработки Oracle.
Структура базы данных Oracle В базе данных Oracle все таблицы хранятся в единой базе данных, причем таблицы, представления, индексы и др. объекты БД разных пользователей организованы по различным табличным пространствам (tablespace). При создании объекта базы данных (таблица, представление, индекс и т. д. ) внутри табличного пространства, ему выделяется некоторая область - сегмент. Каждое табличное пространство может содержать следующие сегменты: • сегменты данных (data segments); • сегменты индексов (index segments); • сегменты отката (rollback segments) используются для хранения первоначального состояния данных и восстановления его в случае необходимости; • временные сегменты (temporary segments).
При инсталляции Oracle по умолчанию создается табличное пространство SYSTEM, в котором размещаются служебные таблицы. Также, для улучшения производительности, сегменты отката (ROLLBACK) и временные сегменты (TEMP) выделяются в отдельные табличные пространства
База данных Oracle содержит различные типы объектов. Все объекты можно разделить на две категории: 1. объекты схемы; 2. объекты, не принадлежащие схемам. Схема (schema) - это набор объектов с различными данными. Каждая схема принадлежит пользователю базы данных и имеет одинаковое с ним имя. Каждый пользователь владеет одной схемой. Схема может содержать следующие объекты: • Таблицы; • Линки/связи базы данных (содержат информацию о подключении к удаленной базе данных); • Индексы (создаются на базе таблиц для ускорения поиска и чтения данных); • Кластеры - объекты схемы, состоящие из одной или нескольких таблиц, которые имеют один или несколько общих столбцов; • Представления (виды) это логическая таблица, получаемая из других таблиц или представлений (запрос, результатом является таблица); • Последовательности объект базы данных, аналогичный объекту "Счетчик" СУБД MS Access; • Снимки (snapshots) - таблицы, содержащие результат запроса из одной или нескольких таблиц или представлений с удаленной базы данных; • Синонимы определяет дополнительное имя, используемое для доступа к объекту;
• Пакеты, хранимые процедуры/функции, триггеры Пакет - это инкапсулированный набор хранимых процедур, функций, переменных, констант, курсоров (отбор данных), исключений (обработка ошибок), хранимых в базе данных вместе. Триггер - это блок инструкций PL/SQL, связанный с определенной таблицей и автоматически запускаемый Oracle при попытке выполнить один из следующих SQL- операторов: DELETE, INSERT или UPDATE. Хранимые процедуры/функции – это программы на PL/SQL, хранимые в самой базе данных и выполняющие определенные действия над ней. • Библиотеки внешних процедур. Объекты, не принадлежащим схеме, но хранимые в базе данных: • Роли; • Пользователи; • Каталоги; • Сегменты отката; • Профили; • Табличные пространства.
СУБД MS SQL Server – это реляционная СУБД, построенная по архитектуре клиент- сервер, разработанная корпорацией Microsoft. MS SQL Server ориентирован на использование в операционных системах Windows NT/2000/2003/2008 и использует в своей работе системные функции этих ОС. Интерфейс конструктора таблиц, ввода данных в них, описания схемы данных и т. д. в MS SQL Server, в значительной мере напоминает MS Access может также использоваться и в качестве клиентской части MS SQL Server. Отличие MS SQL Server от MS Access в том, что Access базируется на архитектуре файл-сервер и приемлем для небольших баз данных и небольшого числа пользователей (офисная СУБД), то SQL Server базируется на архитектуре клиент-сервер и применяется в базах данных среднего размера и большим числом пользователей (профессиональная СУБД). Даже по тем позициям, где возможности Access и SQL Server схожи, SQL Server значительно превосходит Access. Так, например, и в Access и в SQL Server реализована система разграничения доступа к объектам базы данных (разные пользователи имеют разные права по работе с различными таблицами, запросами и т. д. ). Однако в SQL Server ограничения доступа можно выставлять не только на таблицу в целом, но даже и на отдельные ее столбцы.
Также в SQL Server поддерживается механизм ролей. Роль - это набор прав доступа к объектам базы данных. Роли для каждой базы данных можно определять самостоятельно или пользоваться заранее определенными ролями. Роль «администраторы безопасности» (security admin) – это пользователи которые могут допускать других пользователей к работе с базой данных, роль «создатели базы данных» (db creators, database creators) – пользователи которые могут создавать и изменять структуру базы данных и т. д. Используя роли можно быстро и удобно разграничить доступ между пользователями, предоставив им только те права, которые действительно необходимы. К другим существенным отличиям относится то, что если в Access хранимые процедуры и функции пишутся на VBA (Visual Basic for Applications), то в SQL Server основным языком написания хранимых процедур является Transact SQL – это диалект SQL, в котором, помимо стандартных инструкций SQL, предусмотрены возможности организации циклов, условного выполнения операторов и т. д.
Возможности MS SQL Server может содержать несколько баз данных. На одном компьютере может быть установлено несколько экземпляров MS SQL Server. Каждая база данных содержит следующие объекты: - таблицы; - индексы; - представления (виды, запросы); - диаграммы (схема данных); - курсоры (окно накладываемое на набор данных, аналог окна в текстовом редакторе, в котором в каждый момент времени отображается только часть документа); - триггеры, хранимые и внешние процедуры, функции пользователя, пользовательские типы данных; - правила (ограничения на значения столбцов) и умолчания (значения столбцов по умолчанию) – необходимо для совместимости со старыми версиями, в новых версиях все эти ограничения указываются в инструкции Create языка SQL; - перечень пользователей, допущенных к базе данных и их разрешения, роли пользователей; - каталоги полнотекстного поиска (позволяет осуществлять поиск текста по столбцам таблицы, включая столбцы, в которых в качестве значений содержатся файлы. doc, . xls, . txt, . htm).
Управление SQL Server 2000 осуществляется через оснастку Enterprise Manager MMC (Microsoft Management Console), которая по внешнему виду напоминает проводник. Эта оснастка, позволяет: • непосредственно работать с БД (создание таблиц, импорт или ввод данных в таблицы, создание пользователей и определение их прав доступа и т. д. ); • создавать расписание обслуживания БД (maintenance plan: проверка целостности БД, реорганизация свободного места в БД, резервное копирование БД и журналов транзакций и др. ); • создавать перечень операторов, ответственных за обслуживание БД (имя, адрес электронной почты или номер телефона, время работы); • определять ошибки в базе данных (alerts), при которых данному оператору будет направлено сообщение.
Репликация баз данных также настраивается через Enterprise Manager MMC. Репликация – это распространение копий базы данных на другие компьютеры в сети (например, пользователям других сетей, или пользователям мобильных компьютеров). Репликация в MS SQL Server может быть следующих типов: • Snapshot replication (репликация снимков): копии соответствующих таблиц передаются другим базам данных как снимок (snapshot) их текущего состояния, и не обновляются автоматически. Пользователи других баз данных не могут изменять содержимое снимка; • Transactional replication (репликация транзакций): копии соответствующих таблиц передаются другим базам данных. При изменениях в исходной базе данных, эти копии обновляются автоматически. Пользователи других баз данных не могут изменять содержимое копии; • Merge replication (объединяющая репликация): копии соответствующих таблиц передаются другим базам данных. Причем как пользователи основной базы данных, так и пользователи баз данных, на которых находятся копии, могут изменять данные. Все изменения в исходный вариант и копии будут внесены автоматически.
СУБД других производителей (Informix Universal Server, DB 2, My. SQL, Postgre. SQL, Sybase, Visual Fox. Pro, MS Access) СУБД Informix Universal Server. Работы над системой управления базами данных Informix были начаты в 1980 г. Согласно начальному замыслу Informix рассматривалась как СУБД, специально ориентированная для работы в среде ОС UNIX и использующая реляционную модель данных. В декабре 1996 года фирма Informix Software выпустила Informix Universal Server, построенную по архитектуре клиент-сервер, и использующую объектно -реляционный подход. За счет использования концепций объектно-ориентированного программирования (инкапсуляция, полиморфизм и наследование) Informix Universal Server позволяет вводить новые базовые типы данных, одновременно с введением для них специальных алгоритмов хранения, доступа и индексирования. При этом можно использовать как встроенные в Informix Universal Server методы доступа и хранения, так и определять новые. В настоящее время компания Informix приобретена IBM, которой за счет такого шага удалось потеснить Oracle по суммарному объему продаж СУБД Informix и собственной СУБД DB 2, заняв лидирующие позиции на рынке.
Основные концепции объектно-ориентированного программирования: • Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно- ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). • Полиморфизм (polymorphism) (от греческого polymorphos) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. • Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification).
Применение иерархии классов делает управляемыми большие потоки информации. Например описание жилого дома. Дом - это часть общего класса, называемого строением. С другой стороны, строение - это часть более общего класса - конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Дом Строение Конструкции Вещи, созданные людьми
СУБД My. SQL Одна из наиболее широко используемых СУБД в ОС Unix/Linux. Не имеет таких широких возможностей, как Oracle или MS SQL Server, однако компенсирует это простотой СУБД и низкой требовательностью к ресурсам операционной системы. My. SQL является решением для малых и средних приложений и очень часто используется для обеспечения поддержки баз данных при разработке web-сайтов. My. SQL является собственностью компании Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется бесплатно под GNU General Public License или под коммерческой лицензией (на выбор). СУБД Postgre. SQL (или просто Postgres) – это объектно-реляционная СУБД, построенная по архитектуре клиент-сервер, имеющая открытый исходный код, и использующаяся, в основном, в ОС Unix/Linux. Также к особенностям Postgres относится хорошо реализованная параллельная обработка инструкций SQL и хорошая связь с большим количеством языков программирования (C, C++, Java, perl, tcl, и python). Postgres выбирают для баз данных "средней величины", размещаемых на серверах под управлением ОС Unix/Linux (возможно также использование в ОС Windows NT). Данная СУБД является довольно популярной благодаря своим широким возможностям и открытому исходному коду, что позволяет значительно сэкономить финансовые средства и, при необходимости, модифицировать исходный код СУБД под свои нужды.
СУБД Sybase Компания Sybase в свое время совместно с Microsoft работала над СУБД SQL Server. После прекращения сотрудничества Sybase стала развивать Sybase SQL Server для платформы Unix. Сегодня Sybase сильно отстает от своих основных конкурентов на рынке баз данных, её продукция занимает около 3% рынка. Основные продукты Sybase включают в себя: • Sybase Adaptive Server Enterprise (ASE) - промышленная реляционная СУБД; • Sybase Adaptive Server Anywhere (ASA) - недорогая, но полнофункциональная реляционная СУБД, подходящая для работы на слабых и средних аппаратных ресурсах и мобильных устройствах. • Sybase IQ - аналитическая СУБД, предназначена для построения хранилищ данных, принципиально отличается своей внутренней структурой от традиционных реляционных СУБД, что позволяет ей повышать скорость работы аналитических запросов в 50 -100 раз. СУБД MS Visual Fox. Pro, MS Access Общей отличительной особенностью этих реляционных СУБД является то, что они построены по архитектуре файл-сервер и являются решением для малого и среднего бизнеса. В настоящий момент Microsoft Visual Fox. Pro представляет скорее исторический интерес, т. к. после выхода версии 9. 0 SP 2 работы над СУБД MS Visual Fox. Pro остановлены (поддержка будет осуществляться до 2015 года). На территории СНГ наиболее распространенной является СУБД MS Access.

