Основные понятия и принципы программирования баз данных

ВВЕДЕНИЕ

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

-обеспечивать  получение  общих  и/или  детализированных  отчетов  по  итогам работы;

-позволять легко определять тенденции изменения важнейших показателей;

-обеспечивать получение информации, критической по времени, без  существенных задержек;

-выполнять точный и полный анализ данных.

   Недостаточно  просто написать программу, взаимодействующую  с базой данных. Нужно уметь  правильно спроектировать эту базу данных. Проектирование баз данных, в общем, является первым шагом разработки приложения. Только когда база данных спроектирована, программист приступает непосредственно к проекту приложения.

   Основа  доклада - это программирование баз  данных - очень большой и серьезный  вопрос практического программирования. В докладе рассматриваются основные понятия и принципы программирования баз данных. Программисты большую часть своего времени тратят именно на проектирование баз данных и разработку приложений, работающих с ними. Это неудивительно - в настоящее время каждая государственная организация, каждая фирма или крупная корпорация имеют рабочие места с компьютерами. Имеется масса данных, которые нужно не только сохранить, но и обработать, получить комплексные отчеты. Без баз данных сегодня не обойтись. А завтра они будут еще нужней.

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

     В результате изучения описанного  в докладе материала  мы  должны узнать:

   -принципы организации современных баз данных и систем управления базами данных;

   -основные модели данных;

   -стандарты языков описания и манипулирования данными для иерархической и сетевой моделей данных. Знать теоретические и математические основы реляционной модели данных: понятие отношения, кортежа, атрибута функциональных зависимостей, схемы отношения, понятие эквивалентных схем отношения;

   -теоретические основы средств манипулирования данными в реляционной модели реляционную алгебру. Знать современные языки манипулирования данными в реляционной модели QBE и SQL и уметь применять эти знания на практике для составления сложных запросов к реляционным базам данных;

   -основы создания баз данных;

   -основные методы защиты информации, применяемые в базах данных.

   Таким образом, изучая основные понятия и  принципы баз данных, мы сможем решать следующие задачи, а именно:

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

   -составлять запросы к базе данных произвольной сложности на языке реляционной алгебры, QBE и SQL. Уметь переходить с одного языка на другой;

   -применять на практике понятие защиты базы данных, целостности и сохранности информации в базе данных;

   -применять на практике технологию базы данных для разработки конкретных систем. Уметь создавать базу данных и отдельные объекты: таблицы, формы, запросы, отчеты;

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

1 ОСНОВНЫЕ  ПОНЯТИЯ ПРОГРАММИРОВАНИЯ БАЗ  ДАННЫХ

1.1 Понятие  баз данных, их классификация  и создание

   Под данными понимается информация, находящаяся в памяти ЭВМ или машинных носителях (дискете, магнитной ленте и др.).

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

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

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

   Структурирование - это введение соглашений о способах представления данных.

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

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

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

   Программное обеспечение, предназначенное для  работы с базами данных, называется системой управления базами данных

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

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

   Централизованный  характер управления данными в базе данных предполагает необходимость  существования некоторого лица (группы лиц), на которое возлагаются функции администрирования данными, хранимыми в базе.

   Классификация баз данных:

   По  характеру хранимой информации:  
- Фактографические (картотеки), 
- Документальные (архивы)

   По  способу хранения данных: 
- Централизованные (хранятся на одном компьютере), 
- Распределенные (используются в локальных и глобальных компьютерных сетях).

   По  структуре организации данных: 
- Табличные (реляционные), 
- Иерархические.

   По  способу доступа к данным базы данных разделяются на базы данных с локальным доступом и базы данных с удаленным (сетевым) доступом.

   Централизованные  базы данных с сетевым доступом могут  иметь следующую архитектуру: файл-сервер; клиент-сервер базы данных; "тонкий клиент" - сервер приложений - сервер базы данных (трехуровневая архитектура).

   Файл-сервер. Архитектура систем баз данных с сетевым доступом предполагает выделение одной из машин сети в качестве центральной (файловый сервер). На этот компьютер устанавливается операционная система для выделенного сервера (например, Microsoft Windows Server 2003). На нем же хранится совместно используемая централизованная база данных в виде одного или группы файлов. Файлы базы данных в соответствии с пользовательскими запросами передаются на рабочие станции, где и производится обработка информации. Рисунок 1.  При большой интенсивности доступа к одним и тем же данным производительность информационной системы падает. Пользователи могут создавать также локальные базы данных на рабочих станциях.

     
 
 

Рисунок 1 - Схема  работы с базой данных в локальной сети с выделенным файловым сервером

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

     
 
 

Рисунок 2 - Схема работы с базой данных в архитектуре "Клиент-сервер"

   Трехуровневая архитектура функционирует в Интернет- и Интернет-сетях. Клиентская часть ("тонкий клиент"), взаимодействующая с пользователем, представляет собой HTML-страницу в Web-браузере либо Windows-приложение, взаимодействующее с Web-сервисами. Вся программная логика вынесена на сервер приложений, который обеспечивает формирование запросов к базе данных, передаваемых на выполнение серверу баз данных. Сервер приложений может быть Web-сервером или специализированной программой. Рисунок 3.

   

    
 

Рисунок 3 -  Схема работы с базой данных в трехуровневой архитектуре

   Понятие базы данных тесно связано с такими понятиями структурных элементов, как поле, запись, файл.

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

   Запись - совокупность логически связанных  полей. Экземпляр записи - отдельная  реализация записи, содержащая конкретные значения ее полей.

   Файл (таблица) - совокупность экземпляров  записей одной структуры

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

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

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

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

   Иерархическая база данных состоит из упорядоченного набора нескольких экземпляров одного типа дерева. Автоматически поддерживается целостность ссылок между предками и потомками. Основное правило: никакой потомок не может существовать без своего родителя.

   Реляционная база данных, по сути, представляет собой  двумерную таблицу.  
Столбцы таблицы называются полями: каждое поле характеризуется своим именем и топом данных. Поле базы данных – это столбец таблицы, содержащий значения определенного свойства.

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

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

   Создание баз данных начинается с проектирования. Этапы проектирования баз данных:

   -исследование предметной области;

   -анализ данных (сущностей и их атрибутов);

   -определение отношений между сущностями и определение первичных и вторичных (внешних) ключей.    

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

   К базовым понятиям модели базы данных «сущность – связь» относятся: сущности, связи между ними и их атрибуты (свойства). 
    Сущность - любой конкретный или абстрактный объект в рассматриваемой предметной области. Сущности - это базовые типы информации, которые хранятся в базе данных (в реляционной базе данных каждой сущности назначается таблица). К сущностям могут относиться: студенты, клиенты, подразделения и т.д. Экземпляр сущности и тип сущности - это разные понятия. Понятие тип сущности относится к набору однородных личностей, предметов или событий, выступающих как целое (например, студент, клиент и т.д.). Экземпляр сущности относится, например, к конкретной личности в наборе. Типом сущности может быть студент, а экземпляром – Петров, Сидоров и т. д.   

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

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

     Сущности - это данные, которые классифицируются по типу, а связи показывают, как эти типы данных соотносятся один с другим. Если описать некоторую предметную область в терминах сущности – связь, то получим модель сущность - связь для базы данных.

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

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

   используемые определения ключа.

   Системы управления базами данных предназначенные для работы в Windows, могут формировать поля типа объекта OLE, которые используются для хранения рисунков, графиков, таблиц.

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

   Создание  структуры таблицы не связано  с заполнением таблиц данными, поэтому две операции можно разнести во времени.

   -Ввод и редактирование данных

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

   Практически все системы управления базами данных позволяют вводить и корректировать данные в таблицах двумя способами:

   -с помощью предоставляемой по умолчанию стандартной формы в виде таблицы;

   -с помощью экранных форм, специально созданных для этого пользователем.

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

     -Обработка данных, содержащихся в таблицах

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

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

   -запрос-выборка, предназначенный для отбора данных, хранящихся в таблицах, и не изменяющий эти данные;

   -запрос-изменение, предназначенный для изменения или перемещения данных; к этому типу запросов относятся: запрос на добавление записей, запрос на удаление записей, запрос на создание таблицы, запрос на обновление;

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

   Самым распространенным типом запроса  является запрос на выборку.

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

   -Вывод информации из базы данных

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

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

   -включать в отчет выборочную информацию из таблиц базы данных;

   -добавлять информацию, не содержащуюся в базе данных;

   -при необходимости выводить итоговые данные на основе информации базы

   данных;

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

   -включать в отчет информацию из разных связанных таблиц базы данных.

   -Пример базы данных

   Допустим, что в институте, который размещается  в разных корпусах, разрабатывается  информационная система учебного процесса. Анализируя данную предметную область, разработчики выделили следующие объекты: 1) учебные корпуса; 2) факультеты; 3) кафедры; 4) учебные курсы; 5) преподаватели; 6) студенты; 7) студенческие группы. Данные об этих объектах должны быть включены в базу данных. На рисунке 4 эти данные условно показаны в виде прямоугольников.

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

     
 
 

Рисунок 4 - Условное изображение объектов и их взаимодействие в   базе данных информационной модели ВУЗа        

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

   Успешное  функционирование базы данных может быть осуществлено только при выполнении ряда требований к ее организации. К таким основным требованиям можно отнести:

   Расширяемость базы данных.

   База  данных должна обладать способностью к расширению, которое может быть за счет:

   1) увеличения числа экземпляров  однотипных данных, например количества  данных о преподавателях;

   2) введение в базу данных новых типов объектов или новых типов взаимосвязей, например между объектами «учебный предмет» и «студент» вводятся связи «оценка».

   Необходимо, чтобы введение новых типов объектов или связей не требовало каких -либо изменений в уже существующих в базе данных данных.

   Простота  работы с базой данных.

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

   -структура данных была логичной и ясной;

   -операции доступа к данным обладали ясными и четко очерченными функциями;

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

   Целостность базы данных.

   Под целостностью базы данных в общем  случае понимается ее готовность к  работе. Целостность базы данных — сложное понятие, имеющее много аспектов:

   -физическая целостность, т. е. сохранность информации на магнитных носителях и корректность форматов данных;

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

   -актуальность данных, т. е. соответствие данных реальному положению вещей.

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

   Секретность данных.

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

   Системы управления базами данных. Администрация  баз данных.

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

   Основные  функции системы управления базами данных.   

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

<
Основные понятия и принципы программирования баз данных