Базы данных являются одним из основных компонентов современных информационных систем. Информационная система - это взаимосвязанная совокупность средств, методов и персонала, используемых для хранения, обработки и выдачи информации.
Цель любой информационной системы - обработка информации конкретной предметной области.
Под предметной областью понимается совокупность связанных между собой функций, задач управления в некоторой области деятельности предприятия, с помощью которых достигается выполнение поставленной цели.
База данных - это информационные структуры, содержащие взаимосвязанные данные о реальных объектах.
Особенностями такой совокупности данных являются:
достаточно большие объемы информации;
максимально возможная компактность хранения данных;
возможность извлечения из базы данных разнообразной информации в определенной предметной области;
удобные для пользователя вид и форма извлекаемой информации;
высокая скорость доступа к данным;
надежность хранения информации и возможность Предоставления санкционированного доступа к данным Шля отдельных пользователей;
удобство и простота конструирования пользователем запросов, форм и отчетов для выборки данных. Создание базы данных, ее поддержка и обеспечение Доступа пользователей к ней осуществляется с помощью специального программного инструмента - системы управления базами данных.
Система управления базами данных (СУБД) - это Программное обеспечение для создания и редактирования баз данных, просмотра и поиска информации в них. I По технологии обработки базы данных делятся на централизованные и распределенные. Централизованная база данных хранится в памяти одной машины.
Распределенная база данных состоит из нескольких частей, хранимых на нескольких машинах вычислительной сети. Работа с такой базой осуществляется с помощью системы управления распределенной базой данных - СУРБД.
Централизованные базы данных по способу доступа делятся на:
базы данных с локальным доступом (данные и процедуры их обработки хранятся на одной машине);
базы данных с удаленным (сетевым) доступом. СУБД с удаленным доступом могут быть построены с использованием архитектур файл-сервер и клиент-сервер.
Архитектура файл-сервер. Принцип организации: одна машина выделена в качестве центральной (сервер файлов), на ней хранится централизованная БД. Остальные машины сети выполняют функции рабочих станций. Файлы базы данных в соответствии с пользовательскими запросами рабочих станций передаются на эти станции и там обрабатываются. Производительность такой системы падает, если требуется интенсивный одновременный доступ к одним и тем же данным.
Архитектура клиент-сервер. Принцип организации: центральная машина (сервер базы данных) хранит централизованную БД и процедуры обработки. Клиент посылает запрос, он обрабатывается сервером, и данные, полученные по запросу, передаются клиенту.
Пусть есть файл F1:
|A|B|C|D|E|
Этот файл используют несколько законченных приложений. Одному из приложений требутся данные и новые поля (F и G). Возможны три варианта развития.
В1)
Необходимо вставить новые поля в структуру файла:
|A|...|F|E|
Это повлечет за собой переписывания приложения, как минимум, в месте ввода/вывода данных.
Недостаток ФС - "эффект спагетти". Необходимость переписывать существующий код.
В2)
Необходимо скопировать данные из файла F1 и добавить поля F и G.
Проблема - избыточность данных. Есть вероятность, что данные в файлах будут находиться на разных стадиях обновления. Удобно, когда данные используемые в приложениях хранятся в одном месте. Также, тратится дополнительная память на хранение избыточных данных.
В3)
В файл F2 копируются только ключи из F1.
|Id|A|B|C|D|E|
|Id|F|E|
Основная проблема - негибкость.
Несмотря на то, что этот подход схож с тем что используется в реляционных БД, а избыточность данных минимальна, функциональные связи между полями не учитываются при разнесении полей в таблицы. Разнесение полей по разным таблицам вызвано необходимостью добавлять новые поля. При необходимости добавления новых полей число файлов будет множится.
ВЫВОД:
В случае ФС разработчик сам должен писать вспомогательные функции, к-рые будут собирать данные об объекте из разных файлов, учитывая структуру и сортировку. ПО - неунифицированное, обращении к одному файлу и к совокупности отличается -> негибкий подход.
В БД данные, храняющиеся в разных таблицах, связываются и контролируются на предмет нарушения целосности, единым управляющим механизмом, который не нужно программировать. Так же в СУБД существуют декларативные языки запросов высокого уровня, позволяющие специфицировать то, что нужно найти не программируя.(НПР SQl - вопреки всеобщему заблуждению, SQL - информационно-логический язык, а не язык программирования)
SQL:
- DDL - определение данных
- DML - манипуляция данными
- DCL - контроль данных
Основная причина недостатков работы с файлами традиционными средствами: в традиционном подходе данные хранятся совместно с программами. В БД - данные и приложения, работающие с этими данными, отделены друг от друга. Данные хранятся и управляются независимо от программ.
Данные структурируются так, чтобы наращивать приложение мб без изменения исходного кода. Так же требуется простота реорганизации и реструктуризации.
DEF: Реструктуризация подразумевает как изменение в структуре уже существующих данных, так и добавление новых таблиц и связей.
В случае СУБД при условии правильно выполненной нормализации данных, реструктуризация не приводит к необходимости внесения изменений в ранее написанный программный код системы.
Для того чтобы реализовать независимость данных от прикладных программ, современные СУБД имеют многоуровневую архитектуру, которая позволяет поддерживать независимость данных не только на логическом, но и на физическом уровне. А в файловых системах описание данных не отделено от их использования, что приводит к вышеперечисленным недостаткам.
DEF: Реогранизация данных помимо реструктуризации подразумевает изменение расположения данных на внешних носителях или даже переход от централизованной к распределенной БД, когда одна БД хранится не централизованно, а на разных серверах.
DEF: Независимость данных - измение данных не приводит к изменению ПО и наоборот.