bigpo.ru
добавить свой файл
1 2 ... 5 6
2. РАЗДЕЛ ЛЕКЦИОННЫЙ КОМПЛЕКС


Модуль – 1. Базы данных и СУБД


Глоссарий

БДбаза данных, поименованная совокупность структурированных данных

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

Фактографические БД — это картотеки или БД в котором хранится краткая информация в строго определенном формате

Документальные БД — это архивы или всевозможные документы, графика, видео и звук (мультимедиа).

relatio — отношение

Реляционная модель - построенная таблица данных на взаимоотношении составляющих ее частей

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

^ Сетевая модель базы данных - похожа на иерархическую. Она имеет те же основные составляющие (узел, уровень, связь), однако характер их отношений принципиально иной.

^ Сетевые СУБД - файл-серверные, клиент–серверные и распределенные СУБД.

Файл-серверные СУБД – это СУБД , где все данные обычно размещаются в одном или нескольких каталогах достаточно мощной машины, специально выделенных для этих целей и постоянно подключенной к сети

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

^ Объектно-реляционные адаптеры - этот метод предполагает использование так называемого объектно-реляционного адаптера, который автоматически выделяет программные объекты и сохраняет их в реляционных базах данных.

^ Объектно-реляционные шлюзы - при использовании такого метода пользователь взаимодействует с БД при помощи языка ООСУБД, а шлюз заменяет все объектно-ориентированные элементы этого языка на их реляционные компоненты

^ Объектно - ориентированные базы данных – применяемые БД для обеспечения управления базами данных приложениями, построенными в соответствии с концепцией объектно-ориентированного программирования.

^ Объектная технология - расширение традиционной методики разработки приложений новым моделированием данных и методами программирования.

Наследование – это способность порождать один класс объектов из другого.

Инкапсуляция дает возможность трактовать объект как своеобразный “черный ящик”.

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

^ Cache технология - использует многомерные структуры данных, в которых разнородные объектные данные сохраняются естественным образом.

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

Псевдоним (от английского слова alias) — это набор параметров, определяющих метод подключения средств BDE к определенной базе данных.

1-лекция. Введение в базы данных

Цель лекции: рассмотреть основные понятия баз данных. Рассмотреть основные модели данных.


  1. Понятие баз данных

  2. Основные модели баз данных

  3. Технологии разработки баз данных


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

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

База данных — поименованная совокупность структурированных данных. (Структурирование данных — это процесс группировки данных по определенным параметрам)

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

Компьютерную базу данных можно создать несколькими способами:

  • С помощью алгоритмических языков программирования, таких как Basic, Pascal, и т. д. Данный способ применяется для создания уникальных баз данных опытными программистами.

  • С помощью прикладной среды, например Visual Basic, Delphi7. Данный способ требует некоторых навыков работы в программных средах и навыков программирования. С его помощью можно создавать базы данных, требующие каких-то индивидуальных особенностей построения. Создание такой базы под силу только опытным пользователям.

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

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

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

Третий признак классификации баз данных — по структуре организации данных.

Это: реляционная, иерархическая и сетевая. Реляционные базы данных являются наиболее эффективными.

^ Реляционная модель.

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

Рассмотрим табл. 1, в которой хранятся сведения об учениках школы (фамилия, имя, отчество, год рождения, класс, номер личного дела). Каждая строка такой таблицы называется записью. Каждый столбец в такой таблице называется полем. На основании этой таблицы создадим базу данных школьников и назовем ее «Наша школа».

Таблица 1. Наша школа

№ личного дела

Класс

Фамилия

Имя

Отчество

Дата рождения

А-25

8 «Б»

Сидоров

Михаил

Александрович

13.10.83

Д-7

8 «Б»

Иванова

Татьяна

Леонидовна

24.08.84

И-33

10«А»

Павлова

Елена

Сергеевна

14.02.81

К-3

9 «Б»

Доронина

Анастасия

Александровна

11.11.84

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

Реляционная модель базы данных имеет следующие свойства:

  • Каждый элемент таблицы — один элемент данных.

  • Все столбцы в таблице являются однородными, т. е. имеют один тип (числа, текст, дата и т. д.).

  • Каждый столбец (поле) имеет уникальное имя.

  • Одинаковые строки в таблице отсутствуют.

  • Порядок следования строк в таблице может быть произвольным и может характеризоваться количеством полей, количеством записей, типом данных.

Рассмотрим приведенный выше пример.

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

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

Имена полей в одной таблице не могут повторяться.

Над этой моделью базы данных удобно производить следующие действия:

  • сортировку данных (например, по алфавиту);

  • выборку данных по группам (например, по датам рождения или по фамилиям);

  • поиск записей (например, по фамилиям) и т. д.

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

Ключ — поле, которое однозначно определяет соответствующую запись.

В нашем примере в качестве ключа может служить номер личного дела учащегося.

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

^ Иерархическая модель.

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

Рассмотрим иерархическую модель на примере базы данных «Наша школа», построенной нами ранее. С точки зрения иерархической модели, она должна принять следующий вид: в состав школы входят классы; параллельные классы делятся по буквам, в состав каждого класса входят конкретные ученики. Рассмотрев данный пример, мы можем записать следующие свойства иерархической модели базы данных:

  • несколько узлов низшего уровня связано только с одним узлом высшего уровня;

  • иерархическое дерево имеет только одну вершину (корень), не подчиненный никакой другой вершине;

  • каждый узел имеет свое имя (идентификатор);

Существует только один путь от корневой записи к более частной записи данных.

В примере с базой данных «Школа» следует обратить внимание на то, что каждый узел в этой схеме удобно описывать в виде таблиц, т. е. применять реляционную модель. Таким образом, базы данных можно описывать совокупностью нескольких моделей.

^ Сетевая модель.

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

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

^ Этапы разработки базы данных.

При разработке базы данных можно выделить следующие этапы работы.

Создание базы данных состоит из трех этапов.

  1. Проектирование БД. Это теоретический этап работы (без компьютера). На этом этапе определяется:

  • какие таблицы будут входить в состав БД,

  • структура таблиц (из каких полей, какого типа и размера будет состоять каждая таблица),

  • какие поля будут выбраны в качестве первичных (главных) ключей каждой таблицы и т. д.

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

  2. Ввод записей. Заполнение таблиц базы данных конкретной информацией.

Вопросы для самопроверки

1. Что такое базы данных?

2. Как создаются базы данных?

3. Что представляет сетевая модель базы данных?

4. Что представляет иерархическая модель базы данных?

5. Что представляет реляционная модель базы данных?

2-лекция. СУБД и виды СУБД

Цель лекции: Привести определение СУБД. Рассмотреть виды СУБД. Архитектура СУБД.


    1. Определения СУБД и основные функции

    2. Виды СУБД

    3. Архитектуры СУБД


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

В настоящее время существует несколько видов СУБД. Наиболее известными и популярными СУБД являются Access, FoxPro и Paradox, Oracle, SQL, Cashe. Каждая из этих систем обладает своими достоинствами и недостатками. Остановим свой выбор на базе данных Access, которая входит в программный продукт Microsoft Office и является наиболее доступной для изучения в школьном курсе. Прежде чем переходить к работе по созданию базы данных на компьютере, необходимо перейти от информационной модели данных, к модели, ориентированной на компьютерную реализацию.
^

Основные функции СУБД


Более точно, к числу функций СУБД принято относить следующие:

Непосредственное управление данными во внешней памяти

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

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

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

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

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

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

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

Во всех случаях придерживаются стратегии "упреждающей" записи в журнал (так называемого протокола Write Ahead Log - WAL). Грубо говоря, эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Известно, что если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД после любого сбоя. Самая простая ситуация восстановления - индивидуальный откат транзакции.

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

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

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.

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

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

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

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


Виды СУБД.

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

 

Рисунок-1. Классификация СУБД


^ Типовая организация современной СУБД

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

  • управление данными во внешней памяти;

  • управление буферами оперативной памяти;

  • управление транзакциями;

  • журнализация и восстановление БД после сбоев;

  • поддержание языков БД.

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

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

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

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


следующая страница >>