Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Теория реляционных баз данных: нормализация, отношения и объединения. Основные концепции реляционных баз данных Концепция реляционных баз данных

Прежде чем подробно рассматривать каждый из этих шагов, остановимся на основных концепциях реляционных баз данных. В реляционной теории одним из главных является понятие отношения. Математически отношение определяется следующим образом. Пусть даны n множеств D1,D2,...,Dn. Тогда R есть отношение над этими множествами, если R есть множество упорядоченных наборов вида< d1,d2,...,dn>, где d1 - элемент из D1, d2 - элемент из D2, ..., dn - элемент из Dn. При этом наборы вида называются кортежами, а множества D1,D2,...,Dn - доменами. Каждый кортеж состоит из элементов, выбираемых из своих доменов. Эти элементы называются атрибутами, а их значения - значениями атрибутов представляет нам графическое изображение отношения с разных точек зрения.

Рис.

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

  • · отношение, таблица, файл (для локальных баз данных)
  • · кортеж, строка, запись
  • · атрибут, столбец, поле.

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

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

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

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

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

Замечание . Существует два подхода к удалению и изменению записей из главной таблицы:

  • 1. Запретить удаление всех записей, а также изменение первичных ключей главной таблицы, на которые имеются ссылки подчиненной таблицы.
  • 2. Распространить всякие изменения в первичном ключе главной таблицы на подчиненную таблицу, а именно:
    • o если в главной таблице удалена запись, то в подчиненной таблице должны быть удалены все записи, ссылающиеся на удаляемую;
    • o если в главной таблице изменен первичный ключ записи, то в подчиненной таблице должны быть изменены все внешние ключи записей, ссылающихся на изменяемую.

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

база данные реляционный индексирование

ПРОГРАММИРОВАНИЕ В СРЕДЕ DELPHI 6

Базы данных. Создание отчета с помощью Word.

Утверждено Редакционно-издательским советом

университета в качестве лабораторного практикума

Воронеж 2004


УДК 681.3

Воробьёв Э.И., Короткевич Д.Э.. Программирование в среде Delphi 6: Лабораторный практикум: Ч. 2: Базы данных. Создание отчета с помощью Word. Потоки. Воронеж: Воронеж. гос. техн. ун-т, 2004. 107 с.

Во второй части лабораторного практикума рассматриваются теоретические и практические сведения для написания программ в среде Delphi 6 на тему: «Проектирование баз данных, создание отчетов в программе Word и использование потоков при создании высокопроизводительных приложений».

Издание соответствует требованиям Государственного образовательного стандарта высшего профессионального образования по направлению 230100 «Информатика и вычислительная техника», специальности 230104 «Системы автоматизированного проектирования», дисциплине «Программирование на языках высокого уровня».

Табл. 3. Ил. 19. Библиогр.: 7 назв.

Научный редактор: д-р техн. наук, проф. Я.Е. Львович

Рецензенты: кафедра вычислительной техники Воронеж- ской лесотехнической академии (зав. кафедрой д-р техн. наук, проф. В.Е. Межов);

д-р техн. наук, проф. О.Ю.Макаров

© Воробьёв Э.И., Короткевич Д.Э., 2004

© Оформление. Воронежский государственный

технический университет, 2004


Введение

Концепция баз данных

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

Теория реляционных баз данных

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

Базы данных делятся на локальные (установленные на компьютере клиента, там же где и работает программа) и удалённые (установленные на сервере, удалённом компьютере). Серверные базы данных располагаются на удалённом компьютере и работают под управлением серверного программного обеспечения. К их главным преимуществам можно отнести возможность работы с одной базой данных одновременно несколькими пользователями, и при этом осуществляется минимальная нагрузка на сеть. Есть ещё сетевые базы данных, которые создают слишком большую нагрузку на сеть и неудобны в работе как для программиста, так и для конечного пользователя. Когда программа присоединяется к сетевой базе данных, то она выкачивает с сервера практически полную его копию. Если Вы внесли изменения, то Ваша копия полностью закачивается обратно. Это очень неудобно, потому что создаётся большая нагрузка на сеть из-за излишней перекачки данных. При клиент-серверной технологии программа клиент посылает простой текстовый запрос на сервер на получение каких-либо данных. Сервер обрабатывает его и возвращает только необходимую порцию данных. Когда нужно изменить какие-то данные опять посылается запрос к серверу на их изменение, и сервер изменяет данные в своей базе. Таким образом, по сети происходит перекачка в основном только текстовых запросов, которые в основном занимают меньше килобайта. Все данные обрабатывает сервер, а значит, машина клиента загружается намного меньше и не так сильно требовательна к ресурсам. Сервер отсылает клиенту только самые необходимые данные, а значит, отсутствует излишняя перекачка копии всей базы. Благодаря всему этому сетевые базы данных уже устарели и практически не используются. Их практически полностью вытесняет технология клиент-сервер. А вот локальные базы данных будут жить всегда. Может измениться формат их хранения или добавиться какие-то новые функции, но сами базы данных будут существовать. Для дальнейшего рассмотрения нам надо определить новое понятие – таблица . Пока что говорились только общие принципы, поэтому использовалось общее понятие баз данных . Таблица базы данных – это как двухмерный массив, в котором в столбец выстроены данные (яркий пример таблицы – Excel). База данных – грубо говоря, это всего лишь файл, в котором может храниться от одной до нескольких таблиц. Большинство локальных баз данных могут хранить только одну таблицу (dBase, Paradox, XML). Но есть представители локальных баз, где в одном файле заключено несколько таблиц (например Access).

Локальные базы данных

Из локальных баз данных рассмотрим реляционные как самые распространённые. Что такое реляционная база данных? Это таблица, в которой в качестве столбцов выступают имена хранимых в ней данных, а каждая строка хранит сами данные. Таблица базы данных похожа на электронную таблицу Excel (если быть точнее, то Excel хранит свои данные в виде собственного формата, построенного на основе технологии баз данных). Локальные таблицы баз данных могут храниться на локальном жёстком диске или централизовано сохраняться на сетевой диск файлового сервера. Эти файлы можно копировать с помощью стандартных средств как любой другой файл, потому что сами таблицы базы данных не привязаны к определённому месту расположения. Главное, чтобы программа могла найти таблицу. В каждой таблице должно быть одно уникальное поле, которое однозначно будет идентифицировать строку. Это поле называется ключевым. Эти поля очень часто используются для связывания нескольких таблиц между собой. Но даже если таблица не связана, ключевое поле всё равно обязательно. В качестве ключа желательно использовать численный тип и если позволяет база данных, то будет лучше если он будет типа "autoincrement" (автоматически увеличивающееся/уменьшающееся число или счётчик). Имена столбцов в таблице базе данных также должны быть уникальными, но в этом случае не обязательно числовыми. Их можно называть как угодно, лишь бы было уникально и понятно. Каждый столбец (поле базы данных) обязательно должен иметь определённый тип. Количество типов и их разновидности зависят от типа базы данных, например формат dBASE (файлы с расширением DBF) поддерживает только 6 типов, а Paradox уже до 15. База данных может храниться в одном файле (Access) или в нескольких (Paradox, dBase). Точнее сказать, данные таблицы всегда хранятся в одном файле, а вот дополнительная информация может располагаться в отдельных файлах. В качестве дополнительной информации могут быть индексы, ограничения или список значений по умолчанию для конкретных полей. Если хотя бы один из файлов запортится или будет удалён, то данные могут стать недоступными для редактирования.

Что такое индексы ? Очень часто данные из таблиц подвергаются каким-то изменениям, поэтому прежде чем произвести редактирование над какой-либо строкой, необходимо её найти. Даже статические таблицы, использующиеся в качестве справочников, тоже подвергаются операциям поиска перед выводом запрашиваемых данных. Поиск достаточно трудоёмкая операция, особенно если таблица содержит очень много строк. Индексы направлены на ускорение этой процедуры, а так же могут использоваться в качестве отправной точки при сортировке. На данном этапе достаточно знать, что не проиндексированное поле невозможно упорядочить.

Если надо, чтобы какая-то таблица была упорядочена по полю «Фамилия », то это поле надо сначала проиндексировать. Затем нужно только указать, что таблица должна работать сейчас с таким-то индексом, и она сортируется автоматически.

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

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

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

Требования к базам данных

Итак, хорошо спроектированная база данных:

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

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

3. Обеспечивает естественное, легкое для восприятия структурирование информации. Качественное построение базы позволяет делать запросы к базе более “прозрачными” и легкими для понимания; следовательно, снижается вероятность внесения некорректных данных и улучшается качество сопровождения базы.

4. Удовлетворяет требованиям пользователей к производительности базы данных. При больших объемах информации вопросы сохранения производительности

начинают играть главную роль, сразу “высвечивая” все недочеты этапа проектирования.

Следующие пункты представляют основные шаги проектирования базы данных:

1. Определить информационные потребности базы данных.

2. Проанализировать объекты реального мира, которые необходимо смоделировать в базе данных. Сформировать из этих объектов сущности и характеристики этих сущностей (например, для сущности “деталь” характеристиками могут быть “название”, “цвет”, “вес” и т.п.) и сформировать их список.

3. Поставить в соответствие сущностям и характеристикам - таблицы и столбцы (поля) в нотации выбранной Вами СУБД (Paradox, dBase, FoxPro, Access, Clipper, InterBase, Sybase, Informix, Oracle и т.д.).

4. Определить атрибуты, которые уникальным образом идентифицируют каждый объект.

5. Выработать правила, которые будут устанавливать и поддерживать целостность данных.

6. Установить связи между объектами (таблицами и столбцами), провести нормализацию таблиц.

7. Спланировать вопросы надежности данных и, при необходимости, сохранения секретности информации.


Похожая информация.


РМД была придумана и разработана Э.Кодд в 1970г. Его последователь Дейт.

В основе РМД лежит понятие теоретико-множественного отношения .

Отношение представляет собой двумерную таблицу, содержащую некоторые данные.

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

Атрибут – это свойство характеризующее сущность.

Пусть дано D 1 ,D 2 ,…,D n –n-множеств,

Тогда отношение R-это множество упорядоченных кортежей d i єD i , гдеd i -атрибут,D i –домен.

Пример:

Сотрудник

Арностью отношений (степенью) является общее количество атрибутов в отношении.

Кардинальным числом (мощностью отношений) называют число всех различных кортежей в образующих отношенияR.

Отношением называется некоторое подмножество декартового произведения, включающего один или несколько доменов.

Пр: имеется множество

D 1* D 2* D 3 ={(A,B,3),(A,B,4),(A,B,5),(A,C,3),(A,C,4),(A,C,5),(2,B,3),(2,B,4),(2,B,5),(2,C,3),(2,C,4),

Схемой отношений называется конечное множество имен атрибутов отношения.

Домен – множество всех возможных значений какого-либо атрибута отношения.

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

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

    в отношении R не может быть двух различных кортежей с одинаковым значениям (это называется свойством уникальности).

    никакое подмножество Р не обладает свойством уникальности.

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

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

Ключи обычно используются для следующих целей:

    исключение дублирования значений ключевых атрибутов.

    упорядочивание кортежей.

    ускорение работы с кортежами отношений.

    организация связывания таблиц.

Пусть в отношении R1 имеется неключевой атрибутA, значение которого является значением ключевого атрибутаBдругого отношенияR2, тогда говорят что атрибутAотношенияR1 являетсявнешним ключом .

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

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

    каждая запись в таблице должна быть уникальна.

    значение элементов одного столбца должны принадлежать одному и тому же домену.

    имена столбцов должны быть уникальными.

ADD – данная операция сообщает об ошибках в следующих случаях:

    Добавляемый кортеж не соответствует схеме отношения.

    Некоторое значение кортежа не принадлежит соответствующему домену.

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

DEL дляудаления достаточноуказать значение ключаудаленного кортежа. Ошибка возникает только в том случае, если удаляемый кортеж в отношении отсутствует.

CH дляданной операции все ошибки добавления и удаления имеют место.

1.5.1. Базы данных и системы управления базами данных. Для решения информационно-поисковых задач, начиная с 60-70-х годов ХХ века, используется структурированное представление информации, относящейся к рассматриваемой предметной области. Структуризация информации производится с помощью особого вида моделей представления данных, отражающих свойства информационных объектов и имеющиеся связи между ними.

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

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

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

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

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

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

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

Подобная «развязка» данных задач позволила:

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

    обеспечить увеличение объема хранимой информации на внешних запоминающих устройствах.

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

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

    Предоставить пользователю удобный интерфейс для формирования:

    логической структуры данных (уровень логического проектирования БД) с помощью языка структурных схем;

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

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

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

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

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

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

Комментарий 3 . Применение СУБД обеспечивает контролируемый доступ к базе данных за счет наличия:

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

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

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

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

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

В процессе научных исследований, посвященных тому, как именно должна быть устроена СУБД, предлагались различные способы реализации. Самым жизнеспособным из них оказалась предложенная американским комитетом по стандартизации ANSI (American National Standards Institute) трехуровневая система организации БД, изображенная на рис. 3:

Рис. 3. Трехуровневая модель базы данных

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

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

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

Эта архитектура позволяет обеспечить логическую (между уровнями 1 и 2) и физическую (между уровнями 2 и 3) независимость при работе с данными. Логическая независимость предполагает возможность изменения одного приложения без корректировки других приложений, работающих с этой же базой данных. Физическая независимость предполагает возможность переноса хранимой информации с одних носителей на другие при сохранении работоспособности всех приложений, работающих с данной базой данных. Это именно то, чего не хватало при использовании файловых систем. Выделение концептуального уровня позволило разработать аппарат централизованного управления базой данных.

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

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

Например, пусть имеется отношение

R(Город, Адрес, Почтовый_индекс).

Очевидно, что атрибуты Город Адрес Почтовый_индекс. В то же время Почтовый_индекс Город (хотя и не адрес). Оба множества могут быть возможными ключами.

Шаг 2. Переместить любую селекцию в дереве как можно ниже - законы I.4, IY.1, IY.3, IY.5.

Шаг 3. Переместить любую проекцию в низ дерева - законы I.2, IY.5, IY.6.

Шаг 4. Скомбинировать любой каскад селекций (проекций) в одиночную селекцию (проекцию) I.1, I.2, I.5 или селекцию с последующей проекцией.

Шаг 5. Разбить внутренние узлы дерева на группы: объединить двухместные операции с предшествующими или последующим узлу унарными операциями S и P.

Шаг 6. Перейти к более высокому уровню иерархии.

Пример оптимизации. Пусть дана база данных Библиотека:

ИЗД[АТЕЛИ](Название_издательства, Место, Адрес_издательства),

ЧИТ[АТЕЛИ](Фамилия, Адрес, Город, N_форм[уляра]),

ВЫД[АЧИ](N_форм[уляра], N_бк, Дата), где бк - библиотечный каталог, а для обозначения таблиц и полей используем сокращения (без букв в квадратных скобках).

Запрос: найти, у кого находятся книги, выданные до 01.01.1997.Д

Ему соответствует на языке АЛЬФА запрос (рис. 4.8, а)

p НАЗВАНИЕ s ДАТА J 1.1.1997 p S (S F (ВЫД, ЧИТ, КН)),

где F = ЧИТ.N_форм = ВЫД.N_формКН.N_бк = ВЫД.N_бк,

На рис. 4.8, а в условии F разделяют две селекции и перемещают как можно ниже в дереве. Селекция

s ДАТА≤1.1.1997 (4.2)

ниже проекции и двух селекций по законам I.1, I.5.

Селекция (4.2) применяется к произведению (ВЫД×ЧИТ)×КН. Дата - единственный атрибут отношения ВЫД потому

s ДАТА≤1.1.1997 ((ВЫД×ЧИТ)×КН)

(s ДАТА≤1.1.1997 (ВЫД×ЧИТ))×КН

((s ДАТА≤1.1.1997 (ВЫД))×ЧИТ)×КН.

Селекцию можно переместить вниз по дереву. Селекция с условием КН.N_бк = ВЫД.N_бк не может быть перемещена ниже любого декартова произведения, поскольку имеет атрибуты как отношения КН, так и других отношений.

s ЧИТ.N_ФОРМ = s ВЫД.N_ФОРМ может быть перемещена ниже и применена к произведению

s ДАТА≤1.1.1997 ((ВЫД)×ЧИТ).

ВЫД.N_форм есть имя атрибута отношения, полученного в s ДАТА≤1.1.1997 (ВЫД), ибо это атрибут отношения ВЫД.

По закону I.2 две проекции комбинируются в одну pНАЗВАНИЕ и результат отражается в рис. 4.8, б.

По закону I.4 p НАЗВАНИЕ и s кн.N_бк=выд.N_бк заменим на каскад

p НАЗВАНИЕ,

s кн.N_бк=выд.N_бк,

p название кн.N_бк, выд.N_бк. (4.3)

По закону IY.6 выражение (4.3) заменяется на p название кн.N_бк, примененное к отношению КН, и

p выд.N_бк, (4.4)

примененное к левому оператору декартова произведения более высокого уровня (рис. 4.8, б).

Последняя проекция (4.4) взаимодействует с нижней селекцией по закону I.4 и получается каскад:

p выд.N_бк,

s чит.N_форм=выд.N_форм,

p выд.N_бк, чит.N_форм, выд.N_форм. (4.5)

Проекция (4.5) «просеивается» через декартово произведение по закону IY.6 и частично - через s ДАТА≤1.1.1997 (ВЫД) по закону I.4. Кроме того, проекция p выд.N_бк, выд.N_форм, дата - излишняя (это - все атрибуты ВЫД) и исключается. Тогда окончательный результат принимает вид рис. 4.9,
на котором группы операторов обведены пунктирными линиями. Любое из декартовых произведений является фактически эквисоединением, если его скомбинировать с селекцией, находящейся в дереве выше. Иными словами, селекция для ВЫД и проекция для ЧИТ могут быть скомбинированы в группы I и II, при этом сначала выполняются операции группы I, а затем - группы II.

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

Если принять в качестве критерия минимум соединений и декартовых произведений [ c. 204], то для класса так называемых конъюнктивных запросов возможно провести однозначную оптимизацию.

Синхронизация процессов доступа

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

Здесь возникают понятия «достоверность», «логический элемент работы или транзакция», «объект (запись, столбец, таблица, файл)», «управление параллелелизмом», «восстановление БД».

Первоначально поговорим об однопользовательском режиме.

Под транзакцией понимается:

    1) входное сообщение, передаваемое в систему и отражающее некоторое реальное событие в компьютере (БД);

    2) процесс изменения в БД, вызванный передачей одного входного сообщения.

К транзакции преддъявляются следующие основные требования:

    1) она выполняется полностью или не выполняется совсем;

    2) транзакция должна иметь возможность возврата, при этом независим возврат в начальное состояние до момента изменения состояния всех объектов;

    3) транзакция должна быть воспроизводима: при воспроизводстве блокировку необходимо осуществлять до момента просмотра всех объектов.

Возможна двухфазная и трехфазная схема транзакции. Последняя болеe сложная и применяется в ограниченном объеме (например, в системе управления распределенной БД SDD-1) и будет рассмотрена позднее. Сейчас же поговорим о широко применяемой двухфазной схеме транзакции.

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

Перейдем к многопользовательскому режиму (рис. 4.11).
Здесь задача синхронизации процессов усложняется за счет взаимодействия нескольких пользователей.

Для любой транзакции ТР возможны две группы действий:

    1) изменение состояния (запись) - R;

    2) считывание (чтение) состояния - W.

Для двух взаимодействующих транзакций ТР 1 и ТР 2 возможны следующие случаи.

    Одновременное изменение ТР 1 и ТР 2 , при этом возможны наложение данных (потеря обновления) или ошибка в первой транзакции (взаимозависимость восстановления).

    Изменение R 1 и считывание W 2 с двумя возможными последствиями:

    а) изменение с помощью ТР 1 значения, считываемого ТР 2 (воспроизводимость считывания);

    б) откат перед окончанием работы ТР 1 (поскольку нет изменений в ТР 2) и возврат ТР 1 в прежнее состояние.

    Чтение ТР 1 и изменение ТР 2 (нет гарантии воспроизводимости).

Для устранения этих нежелательных явлений возможны такие способы управления.

    Блокировка монопольная или согласованная.

    Отложенные изменения.

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

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

Блокировка выполняется только для одной транзакции и одного объекта.

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

    Перед обработкой объекта должна быть выполнена его блокировка.

    После обработки объект должен быть разблокирован.

    Перед разблокировкой не должна выполняться повторная блокировка.

    Неблокированный объект не должен освобождаться.

Для параллельного выполнения

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

При использовании согласованных блокировок возможно:

    1) предупреждение о блокировке для всей области;

    2) блокировка части области, связанной с данной транзакцией.

Похожие публикации