Файл-сервер
БД располагается на файл-сервере (или нескольких файл-серверах), в качестве которого может использоваться наиболее мощная из рабочих станций, объединенных в сеть. Функции файл-сервера заключаются, в основном, в хранении БД и обеспечении доступа к ним пользователей, работающих на различных компьютерах. Файлы базы данных в соответствии с пользовательскими запросами передаются на рабочие станции, где в основном и производится обработка. Переданные данные обрабатываются СУБД, которая находится опять же на компьютерах пользователей. После того как пользователи выполнят необходимые изменения данных, они копируют файлы обратно на файл-сервер, где другие пользователи, в свою очередь, могут снова их использовать. Кроме того, каждый пользователь может создавать на локальном компьютере свои собственные базы данных, используемые им монопольно. Эта схема работает при не очень больших объемах данных. При увеличении числа компьютеров в сети или росте БД производительность резко падает. Это связано с увеличением объема данных, передаваемых по сети, так как вся обработка происходит на компьютере пользователя. Явным недостатком подобного подхода является высокая вероятность потери изменений, выполненных одними пользователями, при сохранении измененных файлов на центральный сервер.[2] Дело в том, что пользователи могут и не подозревать, что помимо них еще кто-то изменял данные. Примерами СУБД, предназначенными непосредственно для разработки локальных пользовательских приложений БД, то есть приложений, работающих на одном локальном компьютере либо в компьютерной, сети являются: Microsoft Visual FoxPro, Microsoft Access,Paradox,fpr Windows, dBase for Windows и др.
|
Клиент-сервер. Технология клиент-сервер подразумевает, что помимо хранения базы данных центральный компьютер (сервер базы данных) должен обеспечивать выполнение основного объема обработки данных. При технологии клиент-сервер запрос на выполнение операции с данными (например, обычная выборка), выдаваемый клиентом (рабочей станцией), порождает на сервере поиск и извлечение данных. Извлеченные данные (но не файлы) транспортируются по сети от сервера к клиенту. Система, использующая технологию клиент-сервер, разделяется на две части: клиентская часть (front-end) обеспечивает графический интерфейс и находится на компьютере пользователя; серверная часть (back-end), которая находится на специально выделенных компьютерах, обеспечивает управление данными, разделение информации, администрирование и безопасность. Примерами СУБД технологии клиент-сервер являются Microsoft SQL Server, Oracle, IBM DB2, Sybase и др. Спецификой архитектуры клиент-сервер является использование специального языка структурированных запросов (Structured Query Language, SQL), обеспечивающего пользователя простым и эффективным инструментом доступа к данным.[3]
Помимо подразделения баз данных по методам обработки можно классифицировать их по используемой модели (или структуре) данных. Модель данных — совокупность структур данных и операций по их обработке. С помощью модели данных можно наглядно представить структуру объектов и установленные между ними связи. Для терминологии моделей данных характерны понятия «элемент данных» и «правила связывания». Элемент данных описывает любой набор данных, а правила связывания определяют алгоритмы взаимосвязи элементов данных. К настоящему времени разработано множество различных моделей данных, но на практике используется три основных. Выделяют иерархическую, сетевую и реляционную модели данных. Соответственно говорят об иерархических, сетевых и реляционных СУБД.
|
Иерархическая модель данных. Иерархически организованные данные встречаются в повседневной жизни очень часто. Например, структура высшего учебного заведения — это многоуровневая иерархическая структура. Иерархическая (древовидная) БД состоит из упорядоченного набора элементов. В этой модели исходные элементы порождают другие элементы, причем эти элементы в свою очередь порождают следующие элементы. Каждый порожденный элемент имеет только один порождающий элемент.
Организационные структуры, списки материалов, оглавление в книгах, планы проектов и многие другие совокупности данных могут быть представлены в иерархическом виде. Автоматически поддерживается целостность ссылок между предками и потомками. Основное правило: никакой потомок не может существовать без своего родителя.
Основным недостатком данной модели является необходимость использования той иерархии, которая была заложена в основу БД при проектировании. Потребность в постоянной реорганизации данных (а часто невозможность этой реорганизации) привели к созданию более общей модели — сетевой.
Сетевая модель данных. Сетевой подход к организации данных является расширением иерархического подхода. Данная модель отличается от иерархической тем, что каждый порожденный элемент может иметь более одного порождающего элемента.
|
Рассмотрим предметную область для базы данных, в которой хранится информация о заказах магазина. Заказчики берут напрокат фильмы, используя два носителя: видеоленту и компакт-диски. Обслуживание заказчиков выполняют продавцы. Каждый продавец обслуживает многих заказчиков. Каждый продавец может пользоваться услугами нескольких магазинов и наоборот. Существует много копий одного и того же фильма и т.д.
Поскольку сетевая БД может представлять непосредственно все виды связей, присущих данным соответствующей организации, по этим данным можно перемещаться, исследовать и запрашивать их всевозможными способами, то есть сетевая модель не связана всего лишь одной иерархией. Однако для того чтобы составить запрос к сетевой БД, необходимо достаточно глубоко вникнуть в ее структуру (иметь под рукой схему этой БД) и выработать механизм навигации по базе данных, что является существенным недостатком этой модели БД.
Реляционная модель данных. Основная идея реляционной модели данных заключается в том, чтобы представить любой набор данных в виде двумерной таблицы. В простейшем случае реляционная модель описывает единственную двумерную таблицу, но чаще всего эта модель описывает структуру и взаимоотношения между несколькими различными таблицами.
Итак, целью информационной системы является обработка данных об объектах реального мира, с учетом связей между объектами. В теории БД данные часто называют атрибутами, а объекты — сущностями. Объект, атрибут и связь — фундаментальные понятия ИС.[4]
Объект (или сущность) — это нечто существующее и различимое, то есть объектом можно назвать то «нечто», для которого существуют название и способ отличать один подобный объект от другого. Например, каждая школа — это объект. Объектами являются также человек, класс в школе, фирма, сплав, химическое соединение и т. д. Объектами могут быть не только материальные предметы, но и более абстрактные понятия, отражающие реальный мир. Например, события, регионы, произведения искусства; книги (не как полиграфическая продукция, а как произведения), театральные постановки, кинофильмы; правовые нормы, философские теории и проч.
Атрибут (или данное) — это некоторый показатель, который характеризует некий объект и принимает для конкретного экземпляра объекта некоторое числовое, текстовое или иное значение. Информационная система оперирует наборами объектов, спроектированными применительно к данной предметной области, используя при этом конкретные значения атрибутов (данных) тех или иных объектах.
Развитие реляционных баз данных началось в конце 60-х годов, когда появились первые работы, в которых обсуждались возможности использования при проектировании баз данных привычных и естественных способов представления данных — так называемых табличных даталогических моделей.
Основоположником теории реляционных баз данных считается сотрудник фирмы IBM доктор Э. Кодд, опубликовавший 6 июня 1970 г. статью A Relational Model of Data for Large Shared Data Banks (Реляционная модель данных для больших коллективных банков данных). В этой статье впервые был использован термин «реляционная модель данных», что и положило начало реляционным базам данных.[5]
Теория реляционных баз данных, разработанная в 70-х годах в США доктором Э. Коддом, имеет под собой мощную математическую основу, описывающую правила эффективной организации данных. Разработанная Э. Коддом теоретическая база стала основой для разработки теории проектирования баз данных.
Э. Кодд, будучи математиком по образованию, предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он доказал, что любой набор данных можно представить в виде двумерных таблиц особого вида, известных в математике как «отношения».
Реляционной считается такая база данных, в которой все данные представлены для пользователя в виде прямоугольных таблиц значений данных, и все операции над базой данных сводятся к манипуляциям с таблицами.
Таблица состоит из столбцов (полей) и строк (записей); имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), а каждая ее строка — конкретный объект. Так, таблица Спортивная секция содержит сведения обо всех детях, занимающихся в данной спортивной секции, а ее строки представляют собой набор значений атрибутов каждого конкретного ребенка. Каждый столбец таблицы — это совокупность значений конкретного атрибута объекта. Столбец Вес, например, представляет собой совокупность всех весовых категорий детей, занимающихся в секции. В столбце Пол могут содержаться только два различных значения: «муж.» и «жен.». Эти значения выбираются из множества всех возможных значений атрибута объекта, которое называется доменом (domain). Так, значения в столбце выбираются из множества всех возможных весов детей.[6]
В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементам данных. Если при вычислении логического условия относительно элемента данных в результате получено значение «истина», то этот элемент принадлежит домену. В простейшем случае домен определяется как допустимое потенциальное множество значений одного типа. Например, совокупность дат рождения всех сотрудников составляет «домен дат рождения», а имена всех сотрудников составляют «домен имен сотрудников». Домен дат рождения имеет тип данных, позволяющий хранить информацию о моментах времени, а домен имен сотрудников должен иметь символьный тип данных.
В один домен могут входить значения из нескольких столбцов, объединенных, помимо одинакового типа данных, еще и логически. Например, домен может состоять из столбца с датой поступления на работу и столбца с датой увольнения. Но в этот домен нельзя включить столбец с датой рождения, так как дата поступления или увольнения с работы не связана с датой рождения.
Если два значения берутся из одного и того же домена, то можно выполнять сравнение этих двух значений. Например, если два значения взяты из домена дат рождения, то можно сравнить их и определить, кто из сотрудников старше. Если же значения берутся из разных доменов, то их сравнение не допускается, так как, по всей вероятности, оно не имеет смысла. Например, из сравнения имени и даты рождения сотрудника ничего определенного не выйдет.
В большинстве систем управления реляционными базами данных понятие домена не реализовано. Каждый элемент данных в отношении может быть определен с указанием его адреса в формате A[i, j], где А — элемент данных, i — строка отношений, j — номер атрибута отношения.
Количество атрибутов в отношении определяет его порядок (или степень. Множество значений А [ i, j ] при постоянном i и всех возможных j образуют кортеж (или попросту строку таблицы). Количество всех кортежей в отношении определяет его мощность, или кардинальное число. Мощность отношения, в отличие от порядка отношения, может со временем меняться. Совокупность всех кортежей образует тело отношения (или собственно таблицу). [7]
Поскольку отношения являются математическими множествами, которые по определению не могут содержать совпадающих элементов, никакие два кортежа в отношении не могут быть дубликатами друг друга в любой момент времени.
Каждый столбец (поле) имеет имя, которое обычно записывается в верхней части таблицы. При проектировании таблиц в рамках конкретной СУБД имеется возможность выбрать для каждого поля его тип, то есть определить набор правил по его отображению, а также определить те операции, которые можно выполнять над данными, хранящимися в этом поле. Наборы типов могут различаться у разных СУБД.[8]
Имя поля должно быть уникальным в таблице, однако различные таблицы могут иметь поля с одинаковыми именами. Любая таблица должна иметь, по крайней мере, одно поле; поля расположены в таблице в соответствии с порядком следования их имен при ее создании. В отличие от полей, строки не имеют имен; порядок их следования в таблице не определен, а количество логически не ограничено.
Так как строки в таблице не упорядочены, невозможно выбрать строку по ее позиции — среди них не существует «первой», «второй», «последней». Любая таблица имеет один или несколько столбцов, значения в которых однозначно идентифицируют каждую ее строку. Такой столбец (или комбинация столбцов) называется первичным ключом (primary key). В таблице Спортивная секция первичный ключ — это столбец Ф.И.О. Такой выбор первичного ключа имеет существенный недостаток: невозможно записать в секцию двух детей с одним и тем же значение поля Ф.И.О., что на практике встречается не так уж редко. Именно поэтому часто вводят искусственное поле, предназначенное для нумерации записей в таблице. Таким полем, например, может быть его порядковый номер в журнале для каждого ребенка, который сможет обеспечить уникальность каждой записи в таблице. Ключ должен обладать следующими свойствами. Уникальностью. В каждый момент времени никакие два различных кортежа отношения не имеют одинакового значения для комбинации входящих в ключ атрибутов. То есть в таблице не может быть двух строк, имеющих одинаковый идентификационный номер или номер паспорта.
Минимальностью. Ни один из входящих в ключ атрибутов не может быть исключен из ключа без нарушения уникальности. Это означает, что не стоит создавать ключ, включающий и номер паспорта, и идентификационный номер. Достаточно использовать любой из этих атрибутов, чтобы однозначно идентифицировать кортеж. Не стоит также включать в ключ неуникальный атрибут, то есть запрещается использование в качестве ключа комбинации идентификационного номера и имени служащего. При исключении имени служащего из ключа все равно можно уникально идентифицировать каждую строку.
Выполнение условия уникальности является обязательным. В то же время при необходимости может быть допущено нарушение условия минимальности.
Каждое отношение имеет, по крайней мере, один возможный ключ, поскольку совокупность всех его атрибутов удовлетворяет условию уникальности — это следует из самого определения отношения.
Один из возможных ключей произвольно выбирается в качестве первичного ключа. Остальные возможные ключи, если они есть, принимаются за альтернативные ключи. Например, если в качестве первичного ключа выбрать идентификационный номер, то номер паспорта будет альтернативным ключом.[9]
Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key). Рассмотрим пример. При описании модели реляционной базы данных для одного и того же понятия часто употребляют различные термины, что зависит от уровня описания (теория или практика) и системы (Access, SQL Server, dBase).
Администрирование
На любом предприятии где используются в работе средства SQL Server 2000, обязан быть человек, ответственный за администрирование баз данных, их резервное копирование на случай сбоя. Также необходимо разграничить доступ к информации внутри предприятия. Некоторая информация может быть доступна всему персоналу, другая часть информации не должна выходить за рамки отдела. Например, доступ ко всей информации по заработной плате сотрудников должен иметь только работник бухгалтерии, занимающийся ее начислением. Все остальные сотрудники предприятия в этом случае владеют информацией только о размере своей заработной платы. Третья категория информации является строго конфиденциальной и должна быть доступна только определенным людям. Примером может служить сведения о собственных оригинальных разработках и технологиях, которые компания стремится уберечь от конкурентов. Выход такой информации за пределы компании может принести большие убытки.
Кроме кражи информации имеется возможность ее повреждения вследствие ошибки оператора или неправильно написанного приложения. Последствия таких действий могут повлечь за собой серьезные финансовые потери. Например, если данные о клиентах будут потеряны, придется заново собирать нужную информацию. А это потеря времени, финансов, да и конкуренты в это время воспользуются ситуацией и захватят рынок.
В современных условиях, когда информация имеет огромное значение, принятие мер для предотвращения несанкционированного доступа, предупреждения потери или повреждения информации становятся неотъемлемой частью работы любой компании. В последнее время все больше предприятий отказываются от бумажных хранилищ информации и переходят к компьютерной обработке документов. Система хранения информации должна быть максимально защищена как от случайного, так и от преднамеренного повреждения или искажения информации. При создании базы данных разработчик должен спланировать ее таким образом, чтобы любой пользователь не мог сделать что-либо, не имея на это соответствующих прав. Не следует надеяться на компетентность пользователя и его порядочность. Возможно исправление или удаление данных не по злому умыслу, а просто из-за невнимательности или ошибки. Система, насколько это возможно, должна препятствовать подобным действиям.[10]
Система управления базами данных Microsoft SQL Server 2000 имеет разнообразные средства администрирования для обеспечения защиты данных