Какими свойствами обладают базы данных
Понятие базы данных и системы управления базами данных
База данных (БД) — именованная совокупность данных, отражающая состояние объектов и их отношений в рассматриваемой предметной области, или иначе БД — это совокупность взаимосвязанных данных при такой минимальной избыточности, которая допускает их использование оптимальным образом для одного или нескольких приложений в определенной предметной области.[3]
В любом бизнесе имеются данные, что в свою очередь требует создания некоторого организованного метода или механизма управления этими данными. Такой механизм принято называть системой управления базами данных (СУБД). Основываясь на современных технологиях, доказавших свою пользу системы управления базами данных начали развиваться в других направлениях, отвечая требованиям растущего бизнеса, все возрастающих объемов корпоративных данных и, конечно же, технологий, связанных с Internet.
Современная волна информационных технологий управления основывается на использовании систем управления реляционными базами данных (СУРБД), которые являются развитием традиционных СУБД. Реляционные базы данных и технологии клиент/сервер являются типичной комбинацией, позволяющей современным компаниям успешно обрабатывать данные и оставаться конкурентоспособными в своих секторах рынка.
Основные свойства базы данных
Для успешной реализации системы на основе базы данных на первом месте стоит проектирование структуры данных, а затем только осуществляется разработка приложений. Плохо спроектированная база данных будет поставлять некорректную информацию, порождать ошибки, способные привести к принятию неправильных решений.
Проектируемая БД должна обладать определенными свойствами. Ниже перечислены основные свойства базы данных.
Целостность. В каждый момент существования базы данных сведения, содержащиеся в ней, должны быть непротиворечивы. Целостность БД достигается вследствие введения ограничений целостности, в частности, к ним относятся ограничения, связанные с нормализацией БД. Желательно отслеживать диапазон допустимых значений, соотношения между значениями в полях, особенности написания формата. Существуют ограничения, работающие только при удалении записей.
Восстанавливаемость. Данное свойство предполагает возможность восстановления БД после сбоя системы или отдельных видов порчи системы. Сюда относится проверка наличия файлов, составляющих приложение. В основном свойство восстанавливаемости обеспечивается дублированием БД и использованием техники повышенной надежности.
Безопасность. Безопасность БД предполагает защиту данных от преднамеренного и непреднамеренного доступа, модификации или разрушения. Применяется запрещение несанкционированного доступа, защита от копирования и криптографическая защита. Также необходимы и административные меры, например ограничение доступа к носителям информации.
Эффективность. Свойство эффективности обычно понимается как:
минимальное время реакции на запрос пользователя;
минимальные потребности в памяти;
сочетание этих параметров.
Предельные размеры и эксплуатационные ограничения. Предельные размеры, а также другие ограничения, накладываемые эксплуатацией данной БД, могут существенно повлиять на проектное решение.[3]
Самодокументированность. БД должна иметь словарь данных в специально отведенном месте, которое используется для хранения информации о самой базе данных. Словарь содержит информацию: об архитектуре базы, о хранимых процедурах, о пользовательских привилегиях и т.д.
Независимость данных от программ. Структура данных должна быть независима от программ, использующих эти данные, так чтобы данные можно было добавлять или перестраивать без изменения этих программ.
Целостность данных. В общем случае целостность данных означает корректность данных и их непротиворечивость. Для обеспечения целостности накладывают ограничение целостности. Эти ограничения могут иметь вид логических выражений, значения которых всегда должны быть «истина». Если хотя бы одно из выражений принимает значение «ложь» — то целостность нарушена. (Например, вес детали должен быть положителен, а возраст родителей не может быть меньше возраста ребенка).
Целостность транзакций. Транзакцией можно назвать банковскую операцию (перевод денег). В БД под транзакцией понимают неделимую с точки зрения воздействия на базу данных последовательность операторов манипулирования данными (чтение, вставка, модификация), приводящая к одному из двух возможных результатов: либо последовательность выполняется, все операторы правильные, либо транзакция откатывается, в случае если хотя бы один оператор не выполнен успешно. Обработка транзакций гарантирует целостность БД.
Изолированность, т.е. создание такого режима функционирования, когда каждому пользователю кажется, что база доступна только ему.
Безопасность данных. Защита данных от несанкционированной модификации, разрушения.
Масштабируемость.
Производительность.
СУБД
К основным функциям СУБД относятся:
— непосредственность управления данными во внешней и оперативной памяти;
— поддержание целостности данных и управление транзакциями;
— обеспечение безопасности данных;
— обеспечение параллельного доступа к данным нескольких пользователей.
Состав СУБД:
— ядро, которое отвечает за управление данными во внешней и оперативной
памяти;
— процессор языка базы данных, обеспечивающий оптимизацию запросов и
создания машинно-независимого внутреннего кода;
— подсистему поддержки времени исполнения, которая интерпретирует
программы манипуляции данными, создающие пользовательский интерфейс;
— сервисные программы (внешние утилиты), обеспечивающие дополнительные
возможности по обслуживанию информационной системы.
По технологии решения задач, решаемых СУБД, БД подразделяют на два вида:
— централизованная БД хранится целиком на ВЗУ одной вычислительной системы; если система входит в состав сети, то возможен доступ к этой БД других систем;
— распределенная БД состоит из нескольких, иногда пересекающихся или дублирующих друг друга БД, хранящихся на ВЗУ разных узлов сети.
СУБД предоставляет доступ к данным БД двумя способами:
— локальный доступ предполагает, что СУБД обрабатывает БД, которая хранится на ВЗУ той же ЭВМ;
— удаленный доступ – это обращение к БД, которая хранится на одном из узлов сети; удаленный доступ может быть выполнен по технологии файл-сервер или клиент-сервер.
Технология файл-сервер предполагает выделение одной из вычислительных систем, называемой сервером, для хранения БД. Все остальные компьютеры сети (клиенты) исполняют роль рабочих станций, которые копируют требуемую часть централизованной БД в свою память, где и происходит обработка.
Технология клиент-сервер предполагает, что сервер, выделенный для хранения централизованной БД, дополнительно производит обработку запросов клиентских рабочих станций. Клиент посылает запрос серверу. Сервер пересылает клиенту данные, являющиеся результатом поиска в БД по ее запросу.
База данных – это совокупность сведений о каких-либо объектах реального мира.
Например, совокупность сведений о владельцах автомобилей (ФИО, адрес, марка автомобиля, когда приобретён, номерной знак и т.д.)
СУБД – система управления базами данных. СУБД – это программный комплекс для работы с базой данных.
Информационная система (ИС) – совокупность базы данных и аппаратно-программного комплекса для работы с базой данных.
ИС служат для того, чтобы обрабатывать запросы пользователя и давать на них ответы.
Мы будем изучать ИС, в которых информация в базе данных хранится в виде таблиц. Такие базы данных называют реляционными.
Таблицы реляционных баз данных обладают определёнными свойствами.
Каждая таблица имеет фиксированное число столбцов, а число строк может изменяться в процессе эксплуатации.
Строки называются записями, а столбцы полями.
Для каждого поля должны быть определены уникальное имя, тип данных, содержащихся в поле, и другие свойства поля. Надо различать имя поля и значение поля. Например, если имя поля «Фамилия», то Иванов – это значение этого поля.
Каждая таблица должна иметь первичный ключ.
Первичный ключ – минимальный набор полей, однозначно определяющий запись в таблице.
Поскольку количество полей в первичном ключе должно быть минимальным, то идеальный случай, когда первичный ключ состоит из одного поля. Поэтому подбор полей для первичного ключа надо начинать с одного поля. Если подходящего поля не окажется, то следующий этап будет состоять в подборе пары полей и т.д., пока не будет найдена подходящая совокупность полей. Если всех полей записи недостаточно, чтобы образовать первичный ключ, то необходимо добавить в таблицу новые поля.
При создании базы данных стоит задача представления исходных данных в виде таблиц.
Процесс преобразования исходных данных в двумерные таблицы называется нормализацией.
Рассмотрим конкретный пример.
Пусть некоторая фирма занимается торговлей кондитерскими изделиями. Клиентами фирмы являются рестораны, кафе, клубы и т.д. Для учета заказов фирма заносит в учетную тетрадь следующую информацию:
Номер заказа;
Дата;
Наименование клиента;
Адрес клиента;
Название продукта;
Количество товара (кг);
Цена продукта (руб/кг);
Стоимость заказа (руб).
Итак, сначала надо произвести нормализацию данных, т.е. определить какие будут нужны таблицы для хранения этих данных.
В принципе можно базу данных создать из одной таблицы, в которой полями будут служить названия столбцов учетной тетради. Первичным ключом такой таблицы может служить номер заказа.
Однако организация этой базы данных одной таблицей содержит ряд недостатков.
Например, в таблице имеются поля наименование клиента и адрес клиента, которые не зависят от номера заказа. Набирая их каждый раз, мы будем проделывать массу лишней работы. Кроме того, при удалении записи, в которой сведения о данном клиенте больше нигде не содержаться, мы потеряем информацию о нём.
Чтобы избавиться от этого недостатка поступают так. Создают ещё одну таблицу с полями:
Код клиента;
Наименование клиента;
Адрес клиента.
Из первой таблицы удаляют поля наименование клиента и адрес клиента и добавляют поле код клиента. Первичным ключом второй таблицы, очевидно, служит поле код клиента.
Еще один недостаток заключается в том, что стоимость заказа определяется произведением цены продукта на количество товара и, следовательно, всегда может быть вычислена, если в этом возникнет необходимость. Поэтому поле стоимость вообще должно быть исключено из таблицы.
Ну и наконец, можно выделить в отдельную таблицу сведения о продукте. Полями такой таблицы будут: код продукта, наименование продукта и цена.
Итак, проектируемая база данных должна содержать три таблицы, которые можно назвать «Заказы», «Клиенты», «Продукты».
Заказы | ||||
Номер заказа | Код клиента | Код продукта | Количество | Дата |
Первичный ключ у этой таблицы – «номер заказа».
Клиенты | ||
Код клиента | Наименование | Адрес |
Первичный ключ у таблицы клиенты — поле «код клиента».
Продукты | ||
Код продукта | Название | Цена |
Первичный ключ – «код продукта».
Теперь надо определить какой тип данных будет содержаться в каждом из полей таблиц.
Свойства полей. Типы данных
Поля номер заказа, код клиента, код продукта, количество и цена будут числовыми. Но числа бывают разные целые и с плавающей точкой. Логично поля номер заказа, код клиента и код продукта сделать целыми числами, а количество и цена – с плавающей точкой.
Поле дата будет иметь специальный тип – дата.
Поля наименование, название, адрес будут иметь текстовый тип данных.
Кроме указания типа данных бывает нужно указать размер поля и формат поля.
Для всех текстовых полей рекомендуется обязательно указать размер поля. В нашем случае, для полей «наименование» и «название» достаточно будет указать размер в 50 символов, а для «адреса» – 80 символов.
В СУБД Microsoft Access поля могут содержать следующие типы данных.
Текстовый (Текст или числа, не требующие проведения расчетов, например номера телефонов. Число знаков, не превышающее 255).
Числовой (Числовые данные, используемые для проведения расчетов. 1, 2, 4 или 8 байт.).
Дата/время (Даты и время, относящиеся к годам с 100 по 9999.).
Логический (одно из двух возможных значений (Да/Нет, True/False или Вкл/Выкл).
Гиперссылка (Текст или комбинация текста и чисел, хранимые как текст и используемые в качестве адреса гиперссылки.)
Счётчик (Уникальные, последовательно возрастающие на 1 или случайные числа, автоматически вводящиеся при добавлении каждой новой записи в таблицу).
Денежный (Денежные значения и числовые данные (от одного до четырех знаков в дробной части), используемые в математических расчетах, проводящихся с точностью до 15 знаков в целой и до 4 знаков в дробной части.).
Поле объекта ОLE (Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозапись или другие данные в двоичном формате), связанный или внедренный в таблицу Microsoft Access.)
Свойства поля зависят от типа данных. Наиболее важные следующие свойства.
Общими для всех типов данных являются следующие свойства:
Обязательное поле – (допустимые значения – Да или Нет. Если поле обязательное, то пока в него не внесут данные, перейти к следующей записи будет невозможно);
Индексированное поле – (допустимые значения — (да(допускаются совпадения), да(совпадения не допускаются), нет. Если поле индексированное, то в случае поиска данных по этому полю время поиска будет минимальным. Если совпадения не допускаются, то таблица не может иметь записи с одинаковым значением данного поля.)
Для числовых данных
Размер поля (байт 0-255, целое –32768 +32767, длинное целое –2 109 +2 109, одинарное с плавающей точкой –3 1035 +3 1038, двойное с плавающей точкой).
Формат поля (основной, денежный, евро, фиксированный, процентный, экспоненциальный).
Число десятичных знаков (влияет на отображаемые данные, только если формат поля фиксированный).
Значение по умолчанию (то значение, которое будет присутствовать в поле, до ввода первого значения).
Обязательное поле.
Индексированное поле.
Для текстовых данных
Размер поля (сколько символов может содержать поле).
Обязательное поле.
Пустые строки (возможные значения — да, нет. Может ли поле не иметь данных).
Для данных Дата/время
Формат поля (краткий формат даты, полный формат даты…).
Контрольные вопросы
1. Что такое база данных?
2. Какие базы данных называются реляционными?
3. Какие базы данных называются фактографическими?
4. Что такое СУБД?
5. Какими обязательными свойствами должны обладать таблицы реляционной базы данных?
6. Что такое поле и запись в реляционных базах данных?
7. Что такое первичный ключ?
8. Что такое нормализация данных?
9. Какие типы данных могут содержать поля таблиц СУБД Microsoft Access?
10. Какими свойствами обладают поля данных?
11. Что такое индексированное поле?
12. Когда индексированное поле может содержать повторяющиеся данные, а когда нет?
13. Какими свойствами должно обладать поле, чтобы в нём отображалось определённое число десятичных знаков после запятой?
14. Что такое значение по умолчанию и когда имеет смысл задавать это значение?
Основными средствами СУБД, предназначенными для пользователей, являются:
· средства описания структуры базы данных (средства описания структур таблиц, например, в MS Access);
· средства конструирования экранных форм, предназначенных для ввода и просмотра данных;
· средства создания запросов для выборки данных;
· средства формирования отчетов для вывода на печать результатов обработки данных;
· языковые средства и средства разработки приложений (см. п. 2.5.2).
Таким образом, СУБД выполняет роль посредника между пользователями приложений и данными (рис 7.1).
. . .
Данные
Рис. 7.1. Схема взаимодействия пользователей с БД
Основными свойствами СУБД и баз данных являются:
1. Обеспечение независимости программ от данных, позволяющей сохранить программы при модификации структуры БД.
2. Непротиворечивость данных; целостность БД; возможность многоаспектного доступа.
3. Защита и восстановление данных при аварийных ситуациях, аппаратных и программных сбоях, ошибках пользователя.
4. Защита данных от несанкционированного доступа средствами разграничения доступа для различных пользователей.
5. Наличие языка запросов высокого уровня, ориентированного на конечного пользователя, который обеспечивает вывод информации из БД по любому запросу, и предоставление ее в виде соответствующих отчетных форм, удобных для пользователя.
Поясним свойства 2 — 4. В многопользовательской системе с БД параллельная обработка заключается в предоставлении одновременного доступа к таблицам, полям, записям БД многим пользователям и приложениям. Для этого в сетевых версиях централизованных СУБД существуют специальные механизмы: синхронизации транзакций и управления доступом. Транзакция – это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД.
Механизмы синхронизации транзакций основаны на технике блокирования ресурсов. Они позволяют производить обновление данных при параллельной работе пользователей (два пользователя обновляют одну и ту же запись, но разные поля, или один пользователь блокирует строку для обновления, а другой может ее читать). Однако в результате конфликтов между двумя или более транзакциями по доступу к объектам БД возможны тупиковые ситуации, и в таких случаях необходимо выполнять откат (ликвидировать все изменения, произведенные в БД) одной или более транзакций.
Механизмы управления доступом обеспечивают конкретным пользователям операции над БД в рамках тех полномочий, которые им предоставлены. Полномочия заключаются в возможности либо просто считывать, либо еще и изменять, либо и удалять, и создавать объекты БД.
Восстановление данных требуется после аппаратных и программных сбоев.Обычно рассматриваются два возможных вида аппаратных сбоев: мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания) и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти. Примерами программных сбоев могут быть: аварийное завершение работы СУБД (по причине ошибки в программе или в результате некоторого аппаратного сбоя) или аварийное завершение пользовательской программы, в результате которого некоторая транзакция остается незавершенной.
В любом случае для восстановления БД нужно располагать некоторой дополнительной информацией. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений БД.
Журнал – это особая часть БД, недоступная пользователям СУБД, в которую поступают записи обо всех изменениях основной части БД. При этом придерживаются стратегии «упреждающей» записи в журнал.
При мягком сбое во внешней памяти основной части БД могут находиться объекты, модифицированные транзакциями, не закончившимися к моменту сбоя, и могут отсутствовать объекты, модифицированные транзакциями, которые к моменту сбоя успешно завершились (по причине использования буферов оперативной памяти, содержимое которых при мягком сбое пропадает). Для восстановления сначала производят откат незавершенных транзакций, а потом повторно воспроизводят те операции завершенных транзакций, результаты которых не отображены во внешней памяти.
Для восстановления БД после жесткого сбоя используют журнал и архивную копию БД (полную копию БД к моменту начала заполнения журнала). Восстановление БД состоит в том, что, исходя из архивной копии, по журналу воспроизводится работа всех транзакций, которые закончились к моменту сбоя.