--PAGE_BREAK--1. ВВЕДЕНИЕ В СУБД
Одной из функций баз данных является упорядочение и индексация информации. Как и в библиотечной картотеке, не нужно просматривать половину архива, чтобы найти нужную запись. Все выполняется гораздо быстрее.
Не все базы данных создаются на основе одних и тех же принципов, но традиционно в них применяется идея организации данных в виде записей. Каждая запись имеет фиксированный набор полей. Записи помещаются в таблицы, а совокупность таблиц формирует базу данных.
Для работы с базой данных необходима СУБД (система управления базами данных), т.е. программа, которая берет на себя все заботы, связанные с доступом к данным. Она содержит команды, позволяющие создавать таблицы, вставлять в них записи, искать и даже удалять записи.
СУБД управляет одной или несколькими базами данных. База данных представляет собой совокупность информации, организованной в виде множеств. Каждое множество содержит записи унифицированного вида.
Сами записи состоят из полей. Обычно множества называют таблицами, а записи — строками таблиц.
Такова логическая модель данных. На жестком диске вся база данных может находиться в одном файле.
В MySQL для каждой базы данных создается отдельный каталог, а каждой таблице соответствуют три файла.
В других СУБД могут использоваться иные принципы физического хранения данных.
Строки таблиц могут быть связаны друг с другом одним из трех способов. Простейшее отношение — «один к одному». В этом случае строка первой таблицы соответствует одной единственной строке второй таблицы. На диаграммах такое отношение выражается записью 1:1.
Отношение «один ко многим» означает ситуацию, когда строка одной таблицы соответствует нескольким строкам другой таблицы. Это наиболее распространенный тип отношений. На диаграммах он выражается записью 1:N.
Наконец, при отношении «многие ко многим» строки первой таблицы могут быть связаны с произвольным числом строк во второй таблице. Такое отношение записывается как N:M.
Программист, работающий с базой данных, не заботится о том, как эти данные хранятся, и приложения, взаимодействующие с СУБД, не знают о способе записи данных на диск. «Снаружи» виден лишь логический образ данных, и это позволяет менять код СУБД, не затрагивая код самих приложений.
Подобная обработка данных осуществляется посредством языка четвертого поколения (4GL), который поддерживает запросы, записываемые и исполняемые немедленно. Данные быстро утрачивают свою актуальность, поэтому скорость доступа к ним важна. Кроме того, программист должен иметь возможность формулировать новые запросы. Они называются нерегламентированными (ad hoc), поскольку не хранятся в самой базе данных и служат узкоспециализированным целям.
Язык четвертого поколения позволяет создавать схемы — точные определения данных и отношений между ними.
Схема хранится как часть базы данных и может быть изменена без ущерба для данных.
Схема предназначена для контроля целостности данных. Если, к примеру, объявлено, что поле содержит целочисленные значения, то СУБД откажется записывать в него числа с плавающей запятой или строки.
Отношения между записями тоже четко контролируются, и несогласованные данные не допускаются. Операции можно группировать в транзакции, выполняемые по принципу «все или ничего».
СУБД обеспечивает безопасность данных. Пользователям предоставляются определенные права доступа к информации. Некоторым пользователям разрешено лишь просматривать данные, тогда как другие пользователи могут менять содержимое таблиц.
СУБД поддерживает параллельный доступ к базе данных. Приложения могут обращаться к базе данных одновременно, что повышает общую производительность системы. Кроме того, отдельные операции могут «распараллеливаться» для еще большего улучшения производительности.
Наконец, СУБД помогает восстанавливать информацию в случае непредвиденного сбоя, незаметно для пользователей создавая резервные копии данных. Все изменения, вносимые в базу данных, регистрируются, поэтому многие операции можно отменять и выполнять повторно.
Конечно, и электронные таблицы, и текстовые редакторы позволяют хранить и обрабатывать данные очень гибко, но как быть, если требуется хранить информацию обо всех сотрудниках большого предприятия и периодически выдавать ответы на запросы типа «представить список всех сотрудников, принятых на работу не позднее трех лет назад, имеющих по крайней мере одного ребенка, не имеющих взысканий и с зарплатой не выше 1000 р.». Для получения ответов на подобные запросы и предназначены Системы Управления Базами Данных (СУБД).
Классическая реляционная модель данных требует, чтобы данные хранились в так называемых плоских таблицах.
Более точно, пользователи и приложения, обращающиеся к данным, должны работать с данными так, как если бы они размещались в таких таблицах. В упрощенном виде плоская таблица — это таблица, каждая ячейка, которой может быть однозначно идентифицирована указанием строки и столбца таблицы. Кроме того, в одном столбце все ячейки должны содержать данные одного простого типа.
Реляционная модель основана на теории множеств и математической логике. Такой фундамент обеспечивает математическую строгость реляционной модели данных.
В свою очередь, на основе реляционной модели были разработаны различные языки для доступа к реляционным данным, такие как SEQUEL, SQL, QUEL и другие. Фактическим промышленным стандартом в настоящее время стал язык SQL (Structured Query Language — язык структурированных запросов).
продолжение
--PAGE_BREAK--1.1.Разновидности СУБД
Кроме реляционных, объектно-ориентированных и многомерных СУБД, также давно известны иерархические и сетевые базы данных.
1.1.1.Реляционная СУБД
Реляционная СУБД (РСУБД; иначе Система управления реляционными базами данных, СУРБД) — СУБД, управляющая реляционными базами данных.
Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
– каждый элемент таблицы — один элемент данных;
– все ячейки в столбце таблицы однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.);
– каждый столбец имеет уникальное имя;
– одинаковые строки в таблице отсутствуют;
– порядок следования строк и столбцов может быть произвольным.
Базовыми понятиями реляционных СУБД являются:
ü атрибут;
ü отношение;
ü кортеж.
1.1.2.Объектно-ориентированная СУБД
Объектно-ориентированная СУБД — реализующая объектно-ориентированный подход. Эта система управления обрабатывает данные как абстрактные объекты, наделённые свойствами, в виде неструктурированных данных, и использующие методы взаимодействия с другими объектами окружающего мира.
Примеры объектно-ориентированной СУБД:
ü IBM Lotus Notes/Domino
ü Jasmine
ü ObjectStore
ü Caché
ü СООБЗCerebrum
ü db4objects
1.1.3. Многомерная СУБД
OLAP(On-line Analytical Processing) — многомерныебазыданных.
Программное обеспечение OLAP используется при обработке данных из различных источников. Эти программные продукты позволяют реализовать множество различных представлений данных и характеризуются тремя основными чертами: многомерное представление данных; сложные вычисления над данными; вычисления, связанные с изменением данных во времени.
В СУБД, основанных на многомерном представлении данных, данные организованы не в форме реляционных таблиц, а в виде упорядоченных многомерных массивов: гиперкубов (все хранимые в базе данных ячейки должны иметь одинаковую мерность, то есть находиться в максимально полном базисе измерений) и/или витрин данных, представляющих собой предметно-ориентированные подмножества хранилища данных, спроектированные для удовлетворения нужд отдельной группы (сообщества) пользователей и удовлетворяющие требованиям защиты от несанкционированного доступа в организации; они обеспечивают более быструю реакцию на запросы сведений за счет того, что обращения поступают к относительно небольшим блокам данных, необходимых для конкретной группы пользователей. Для достижения сравнимой производительности реляционные системы требуют тщательной проработки схемы базы данных, определения способов индексации и специальной настройки. В случае многомерных баз данных, как правило, не требуется даже указание на то, по каким реквизитам (группам реквизитов) требуется индексация данных. Ограничения SQL остаются реальностью, что не позволяет реализовать в реляционных СУБД многие встроенные функции, легко обеспечиваемые в системах основанных на многомерном представлении данных. Вместе с тем, реляционные СУБД обеспечивают качественно более высокий уровень защиты данных и разграничения прав доступа, а также имеют более развитые средства администрирования и реальный опыт работы с большими и сверхбольшими базами данных. В то время, как для многомерных баз данных, в настоящее время отсутствуют единые стандарты на интерфейс, языки описания и манипулирования данными. Многомерные СУБД не поддерживают репликацию данных, наиболее часто используемую в качестве механизма загрузки.
Многомерные базы, в силу чисто исторических причин, “не умеют” работать с большими объемами данных. На сегодняшний день, их реальный предел — база объемом в 10-20 гигабайт. И хотя это ограничение не связано с какими-либо внутренними объективными недостатками многомерного подхода и, скорее всего, является временным, сегодня это так. С этим нельзя не считаться. К тому же, за счет денормализации и предварительно выполненной агрегации, 20 гигабайт в многомерной базе, в лучшем случае эквивалентны не более чем 1 гигабайту исходных данных. По оценкам Кодда, для систем основанных на многомерном представлении данных, это соотношение лежит в диапазоне от 2.5 до 100. Здесь необходимо остановиться на основном недостатке многомерных баз данных – неэффективному, по сравнению с реляционными базами данных, использованию внешней памяти. В основе многомерного подхода лежит представление данных в виде многомерных гиперкубов, при этом обычно предполагается, что внутри такого гиперкуба нет пустот. То есть все ячейки куба всегда заполнены. Это связано с тем, что данные в них обычно хранятся в виде множества логически упорядоченных блоков (массивов), имеющих фиксированную длину, причем именно блок является минимальной индексируемой единицей. В многомерных СУБД обычно предполагается, что блоки, полностью заполненные неопределенными значениями, не хранятся, это обеспечивает лишь частичное решение проблемы. Данные в таких системах хранятся в упорядоченном виде. Неопределенные значения устраняются, и то частично, только в том случае, если мы за счет выбора порядка сортировки сгруппируем их в максимально большие непрерывные группы. Следовательно, использование многомерных СУБД оправдано только при следующих условиях:
ü объем исходных данных для анализа не слишком велик (не более нескольких гигабайт), то есть уровень агрегации данных достаточно высок;
ü набор информационных измерений стабилен (поскольку любое изменение в их структуре почти всегда требует полной перестройки гиперкуба);
ü время ответа системы на нерегламентированные запросы является наиболее критичным параметром;
ü требуется широкое использование сложных встроенных функций для выполнения кроссмерных вычислений над ячейками гиперкуба, в том числе возможность написания пользовательских функций.
Однако неверно было бы противопоставлять или говорить о какой либо конкуренции реляционного и многомерного подходов. Эти два подхода взаимно дополняют друг друга. Реляционный подход никогда не предназначался для решения на его основе задач, требующих синтеза, анализа и консолидации данных. Предполагалось, что такого рода функции, должны реализовываться с помощью внешних по отношению к реляционным СУБД инструментальных средств. В настоящее время, многомерные СУБД всё чаще используются не только как самостоятельный программный продукт, но и как аналитические средства в хранилищах данных или традиционных оперативных системам, реализуемых средствами реляционных СУБД. Такое решение позволяет наиболее полно реализовать и использовать достоинства каждого из подходов: компактное хранение детализированных данных и поддержка очень больших баз данных, обеспечиваемые реляционными СУБД и простота настройки и хорошие времена отклика, при работе с агрегированными данными, обеспечиваемые многомерными СУБД.
Достоинства этих СУБД
ü в случае использования многомерных СУБД поиск и выборка данных осуществляется значительно быстрее, чем при многомерном концептуальном взгляде на реляционную базу данных, так как многомерная база данных денормализована, содержит заранее агрегированные показатели и обеспечивает оптимизированный доступ к запрашиваемым ячейкам.
ü многомерные СУБД легко справляются с задачами включения в информационную модель разнообразных встроенных функций, тогда как объективно существующие ограничения языка SQL делают выполнение этих задач на основе реляционных СУБД достаточно сложным, а иногда и невозможным.
А так же они имеют и ряд недостатков:
ü необходимость привлечения высококвалифицированных программистов для малейших изменений структуры базы данных.
ü невозможность для конечного пользователя самостоятельно анализировать данные в порядке, не предусмотренном программистами.
продолжение
--PAGE_BREAK--1.1.4. Иерархическая СУБД
Иерархическая СУБД (ИСУБД) — система управления базами данных, использующих в своей основе древовидную структуру.
Типичным представителем (наиболее известным и распространенным) является Information Management System (IMS) фирмы IBM. Первая версия появилась в 1968 г. До сих пор существуют базы, которые поддерживаются этой СУБД. Иерархические модели имеют древовидную структуру, где каждому узлу соответствует один сегмент, представляющий собой поименованный линейный кортеж полей данных. Каждому сегменту соответствует один входной и несколько выходных сегментов. Каждый элемент структуры лежит на единственном иерархическом пути, начинающемся от корневого. Иерархические базы данных наиболее пригодны для моделирования структур, по своей природе являющихся иерархическими. В качестве примеров можно привести воинские подразделения или сложные механизмы, состоящие из более простых узлов, которые в свою очередь тоже можно подвергнуть декомпозиции. Тем не менее существует значительное количество организаций, не сводящихся к простой иерархии. В этой модели запрос, направленный вниз по иерархии, прост, однако запрос, направленный вверх по иерархии, более сложен. К достоинствам иерархической модели данных относятся эффективное использование памяти ЭВМ и неплохие показатели времени выполнения основных операций над данными. Иерархической базой данных является файловая система, состоящая из корневой директории, в которой имеется древовидная структура поддиректорий и файлов.
Недостатки СУБД иерархического типа:
ü неэффективность;
ü медленный доступ к сегментам данных нижних уровней иерархии;
ü четкая ориентация на определенные типы запросов;
ü громоздкость для обработки информации с достаточно сложными логическими связями;
ü сложность понимания для обычного пользователя.
Иерархические СУБД быстро прошли пик популярности, которая обусловливалась их ранним появлением на рынке. Затем их недостатки сделали их неконкурентоспособными, и в настоящее время иерархическая модель представляет исключительно исторический интерес.
1.1.5. Сетевая СУБД
Сетевая СУБД — система управления базами данных, поддерживающая сетевую организацию: любая запись, называемая записью старшего уровня, может содержать данные, которые относятся к набору других записей, называемых записями подчиненного уровня.
Типичным представителем является Integrated Database Management System (IDMS) появилась в 70-х годах. Сетевой подход к организации данных является расширением иерархического. Сетевая БД состоит из набора записей и набора связей между этими записями. На формирование связи особых ограничений не накладывается. В иерархических структурах запись-потомок должна иметь в точности одного предка; в сетевой структуре данных потомок может иметь любое число предков. Достоинством сетевой модели данных является возможность эффективной реализации по показателям затрат памяти и оперативности. В сравнении с иерархической моделью сетевая модель предоставляет большие возможности в смысле допустимости образования произвольных связей. В рамках сетевых СУБД легко реализуются и иерархические даталогические модели. Сетевые СУБД поддерживают сложные соотношения между типами данных, что делает их пригодными во многих различных приложениях. Однако пользователи таких СУБД ограничены связями, определенными для них разработчиками БД-приложений. Более того, подобно иерархическим сетевые СУБД предполагают разработку БД приложений опытными программистами и системными аналитиками.
Недостатки сетевых СУБД:
ü высокая сложность и жесткость схемы БД, построенной на ее основе;
ü сложность для понимания и выполнения обработки информации в БД обычным пользователем;
ü ослаблен контроль целостности связей вследствие допустимости установления произвольных связей между записями.
1.2. Обзор рынка программного обеспечения СУБДв РБ
Существует очень простое понятие БД как большого по объему хранилища, в которое организация помещает все используемые ею данные и из которого различные пользователи могут их получать, используя различные приложения. Такая единая база данных представляется идеальным вариантом, хотя на практике это решение по различным причинам труднодостижимо. Поэтому чаще всего под базой данных понимают любой набор хранящихся в компьютере взаимосвязанных данных.
В основу проектирования БД должны быть положены представления конечных пользователей конкретной организации – концептуальные требования к системе. Именно конечный пользователь в своей работе принимает решения с учетом получаемой в результате доступа к базе данных информации. От оперативности и качества этой информации будет зависеть эффективность работы организации. Данные, помещаемые в базу данных, также предоставляет конечный пользователь.
При рассмотрении требований конечных пользователей необходимо принимать во внимание следующее:
– база данных должна удовлетворять актуальным информационным потребностям организации;
– получаемая информация должна по структуре и содержанию соответствовать решаемым задачам;
– база данных должна обеспечивать получение требуемых данных за приемлемое время, то есть отвечать заданным требованиям производительности;
– база данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей;
– база данных должна легко расширяться при реорганизации и расширении предметной области;
– база данных должна легко изменяться при изменении программной и аппаратной среды;
– загруженные в базу данных корректные данные должны оставаться корректными;
– данные до включения в базу данных должны проверяться на достоверность;
– доступ к данным, размещаемым в базе данных, должны иметь только лица с соответствующими полномочиями;
– база данных должна иметь дружественный интерфейс к пользованию.
Рассмотрим средства разработки, которые предлагает Microsoft:
ü Access;
ü SQL Server;
ü Visual Basic;
ü Visual C++;
ü Visual FoxPro.
Эти средства могут быть использованы, так по отдельности – для решения конкретно поставленной задачи, как и в качестве интегрированного набора, каждый компонент которого может быть применен при разработке больших проектов масштаба предприятия.
Рассмотрим некоторые примеры СУБД реляционного типа.
продолжение
--PAGE_BREAK--1.2.1.Visual FoxPro.
Visual FoxPro — не просто следующая версия одной из наиболее быстрых СУБД для персональных компьютеров. Это совершенно новая программа, которая легко позволяет сделать то, что в предыдущих версиях давалось с величайшим трудом или было просто недоступно.
Интерфейс Visual FoxPro отвечает представлениям о современной графической среде, напоминая интерфейс иных программ Microsoft. Здесь основная работа с данными выполняется с помощью различных инструментальных средств, поэтому команды меню часто имеют вспомогательный характер и их состав гибко меняется в зависимости от того, какое средство активно в данный момент.
Отличительные черты Visual FoxPro можно описать следующим образом:
ü Обеспечение возможности быстрой разработки прикладной программы базируется на включении средств, которые позволяют повысить скорость работы программиста. В первую очередь это средства объективно-ориентировочного программирования, позволяющие пользователю формировать компоненты своего проекта (объекта), которые затем могут многократно использоваться. В связи с этим традиционный Xbase язык в Visual FoxPro 3.0 значительно расширен, что позволяет создавать истинные объекты, классы и подклассы. Кроме того, объекты могут быть созданы с помощью визуальных средств и визуально использоваться в любое время.
ü Обеспечение полного набора средств для управления событиями. Традиционно в Xbase от программиста требовалось написать собственный драйвер для обработки необходимого набора событий или положиться на READ-состояние ожидания, которое моделирует обработку события системой. В WINDOWS, число событий, к которым может обращаться пользователь, весьма велико, и, следовательно, обработка событий является непростой задачей. Visual FoxPro 3.0 имеет истинно управляемую событиями модель, так что по умолчанию система раньше, чем пользователи обрабатывает объектные события. Кроме того, программист теперь имеет полный доступ к набору стандартных на функционировании WINDOWS событий (например, движение мыши, которые допускают перетаскивание объектов).
ü Обеспечение мощного набора инструментальных средств для программиста. Разработчики систем автоматизации обработки данных, кроме мощного набора визуальных средств проектирования могут использовать широкие возможности по интеграции систем хранения данных и доступа к серверам данных с помощью технологии ODBC. Основные новшества — это расширение встроенного языка SQL, возможность обновления данных на сервере через редактирование курсоров, встроенный механизм обеспечения транзакций, возможность обращения к серверу на том диалекте SQL, который поддерживает сервер. Наличие словаря данных делает более быстрой разработку структуры баз данных и облегчает ее дальнейшую эксплуатацию и поддержку.
ü Обеспечение полной интеграции Visual FoxPro 3.0 в семейство прикладных программ Micrpоsoft. Единый интерфейс с наиболее популярными прикладными программами Microsoft делает работу в интерактивном режиме интуитивно понятной. Поддержка правой кнопки мыши позволяет избежать долгих путешествий по системе меню и значительно облегчает изучение новых возможностей СУБД. Просто выберите курсором объект и нажмите правую кнопку мыши. На некоторых диалоговых окнах, которые часто используются в работе на полосе заголовка, появился переключатель в виде анимационной пиктограммы (push pin), позволяющий легко включить режим, при котором это окно будет всегда расположено на переднем плане. Visual FoxPro обеспечивает полную поддержку OLE 2.0, что облегчает взаимодействие с другим программным обеспечением в среде WINDOWS. Помимо оставшейся возможности загрузки внешних функций посредством команды SET LIBRARY появилась возможность обращения к функциям динамических DLL библиотек WINDOWS посредством команды DECLARE.
ü Совместимость с ранее разработанным обеспечением в среде FoxPro.
1.2.2. Visual Basic
Visual Basic является универсальным средством программирования, однако рассматривать его возможности только с точки зрения создания приложений по обработке данных нельзя.
В отличие от большинства пакетов программ Visual Basic не имеет главного окна, объединяющего все остальные элементы интерфейса разработчика. Каждый элемент Visual Basic имеет свое независимое окно, которое может быть убрано или расположено независимо от других в любом месте экрана.
Основные возможности Visual Basic, применяемые в разработке приложений для обработки информации, могут быть реализованы благодаря наличию в нем объектов для доступа к данным — Data Access Object (DAO), 32-разрядного процессора данных- JET 3.0 и предназначенных специально для работы с данными элементов управления.
Процессор данных в Visual Basic поддерживает все стандартные операции по созданию, изменению и удалению таблиц, индексов и запросов.
Формат БД процессора данных Visual Basic соответствует формату Access. JET 3.0 также обеспечивает поддержку целостности и проверку вводимых и изменяемых данных на уровне полей и записей. Для изменения данных JET 3.0 позволяет использовать язык SQL.
Управление базой данных обеспечивается процессором данных с помощью объектов для доступа к данным. Эти объекты позволяют разработчику программным путем, с помощью соответствующих свойств и методов DAO, как манипулировать данными так и управлять структурой БД, включая ее создание. По сравнению с предыдущей версией Visual Basic возможности объектов для доступа к данным теперь существенно расширены. В Visual Basic для работы с данными можно применять для работы с данными несколько рабочих областей, поддерживать целостность данных, включая каскадное удаление и обновление, и обеспечивать их защиту от несанкционированного доступа. Кроме этого применение коллекций существенно сокращает программный код.
Уникальным свойством JET 3.0 является возможность создания копий данных (репликации БД). Для создания копий БД разработчику достаточно воспользоваться методом MakeReplica при задании метода Synchronize выполняется согласование данных в обновляемой и оригинальной БД. Причем эти операции могут выполняться как с файлами формата БД процессора данных, так и с БД других форматов, поддерживаемых через ODBC.
Нельзя не отметить, что JET 3.0 используют индексы новой, более компактной структуры, позволяющие уменьшить время их создания и ускорить процесс поиска данных.
В Visual Basic Enterprice Edition включены объекты для доступа к внешним данным — Remote Data Object (RDO) и соответствующие элементы управления- Remote Data Control (RDC). Это позволяет, не прибегая к помощи процессора данных JET 3.0, использовать все возможности работы с курсорами на сервере, достигая максимально возможной скорости доступа к данным минимизируя сетевой трафик.
продолжение
--PAGE_BREAK--