
- •Системы управления базами данных введение
- •1. Компоненты субд
- •1.1. Типы и структуры данных
- •1.1.1. Основные типы данных.
- •1.1.2. Обобщенные структуры или модели данных.
- •1.2. Методы доступа к данным.
- •1.2.1.Методы поиска по дереву.
- •1.2.2.Хеширование.
- •2. Представление данных
- •2.1. Представление данных с помощью модели "сущность-связь".
- •2.1.1.Назначение модели.
- •2.1.2.Элементы модели.
- •2.2.Диаграмма "сущность-связь".
- •2.3. Целостность данных.
- •3. Дореляционные модели представления данных.
- •3.1.Иерархическая модель данных.
- •3.1.1.Структура данных.
- •3.1.2.Операции над данными, определенные в иерархической модели:
- •3.1.3.Ограничения целостности.
- •3.2.Сетевая модель данных
- •3.2.1.Структура данных.
- •3.2.2.Операции над данными.
- •3.2.3.Ограничения целостности.
- •4. Реляционный подход к представлению данных
- •4.1.Реляционная модель данных
- •4.1.1.Структура данных.
- •4.1.2.Свойства отношений.
- •4.2.Теория нормальных форм.
- •4.2.1.Функциональные зависимости.
- •4.2.5. Bcnf - нормальная форма Бойса-Кодда.
- •4.2.6. Многозначные зависимости и четвертая нормальная форма (4nf).
- •4.2.7. Зависимости по соединению и пятая нормальная форма (5nf).
- •4.3.Ограничения целостности
- •4.3.1.Целостность сущностей.
- •4.3.2.Целостность ссылок
- •4.4. Реляционная алгебра
- •4.4.1. Операции обработки кортежей.
- •4.4.2. Операции обработки отношений.
- •4.5. Реляционное исчисление.
- •4.6.Язык sql
- •4.7. Вопросы практического программирования.
- •4.8.Навигационный подход к манипулированию данными и персональные субд.
- •4.9.Транзакции, блокировки и многопользовательский доступ к данным.
- •4.10. Определение степени соответствия субд реляционной модели.
- •5. Проектирование реляционных баз данных.
- •5.1. Этапы проектирования данных
- •5.2.Инструментальные средства проектирования информационных систем.
- •5.4.Концептуальное моделирование.
- •5.5.Правила порождения реляционных отношений из модели "сущность-связь"
- •5.5.1. Бинарные связи
- •5.5.3. Иерархические связи.
- •5.6. Проектирование реляционной базы данных на основе декомпозиции универсального отношения.
- •5.7.Обзор некоторых case-систем.
- •5.7.1. Power Designer компании Sybase.
- •5.7.2. Silverrun компании Silverrun Technologies Ltd.
- •5.7.3. BpWin и erWin компании LogicWorks.
- •5.7.4. Designer/2000 компании Oracle.
- •6. Классификация субд.
- •6.1.Ограничения реляционных баз данных.
- •6.2.Постреляционные субд.
- •6.3.Объектно-ориентированные субд.
- •6.3.1. Объектно-ориентированная парадигма.
- •6.3.2. Объектно-ориентированные субд.
- •6.3.3. Стандарт odmg.
- •6.3.4. Объектные расширения реляционных субд. Язык sql-3.
- •6.4. Объектно-реляционные субд.
- •6.5.Нечисловая обработка и ассоциативные процессоры.
- •7. Представление данных по принципу технологии "клиент-сервер".
- •7.1.Архитектура "клиент-сервер".
- •7.1.1. Основные понятия.
- •7.1.2. Модели взаимодействия клиент-сервер.
- •7.1.3. Мониторы транзакций.
- •7.2.Обработка распределенных данных.
- •7.3.Структура сервера базы данных.
- •8.Базы знаний.
- •8.1. Понятие системы баз знаний.
- •8.2.Структура и функции системы баз знаний.
- •8.3.Инструментальные средства построения систем баз знаний.
4.7. Вопросы практического программирования.
Как правило, любой поставщик СУБД предоставляет вместе со своей системой внешнюю утилиту, которая позволяет вводить операторы SQL в режиме командной строки и выдает на консоль результаты их выполнения. Недостатки такого режима работы очевидны: необходимо знать SQL, необходимо помнить схему БД, отсутствует возможность удобного просмотра результатов выполнения запросов. Поэтому, подобные утилиты стали инструментами администраторов баз данных, а для создания пользовательских приложений используются универсальные и специализированные языки программирования. Приложения, написанные таким образом, позволяют пользователю сосредоточиться на решении собственных задач, а не на структурах данных.
Почти все способы организации взаимодействия пользователя с базой данных, рассматриваемые ниже, основаны на модели "клиент-сервер". Т.е. предполагается, что каждое приложение обработки данных разбито, как минимум, на две части:
клиента, который отвечает за организацию пользовательского интерфейса
сервер, который собственно хранит данные, обрабатывает запросы и посылает их результаты клиенту для отображения
При этом предполагается, что каждая часть приложения функционирует на отдельном компьютере, т.е. к выделенному серверу БД с помощью локальной сети подключены персональные компьютеры пользователей (клиенты). Это наиболее популярная сегодня схема организации вычислительной среды.
Язык SQL позволяет только манипулировать данными, но в нем отсутствуют средства создания экранного интерфейса, что необходимо для пользовательских приложений. Для создания этого интерфейса служат универсальные языки третьего поколения (C, C++, Pascal) или проблемно-ориентированные языки четвертого поколения (xBase, Informix 4Gl, Progress, Javа). Эти языки содержат необходимые операторы ввода / вывода на экран, а также операторы структурного программирования (цикла, ветвления). Также эти языки допускают определение структур, соответствующих записям таблиц обрабатываемой базы данных. В исходный текст программы включаются операторы языка SQL, которые во время исполнения передаются серверу БД, который собственно и производит манипулирование данными. Отношения, полученные в результате выполнения сервером SQL-запросов, возвращаются прикладной программе, которая заполняет строками этих отношений заранее определенные структуры. Дальнейшая работа клиентской программы (отображение, корректировка записей) ведется с этими структурами.
4.8.Навигационный подход к манипулированию данными и персональные субд.
Существует один любопытный факт: для пользовательского приложения очень важна обработка не реляционного отношения в целом, как множества неупорядоченных строк, а именно каждой отдельной строки. Для этого служат функции DB_next, DB_prev и прочие, позволяющие перемещаться по строкам. При этом возможен доступ к значениям полей только одной строки, той которая является "текущей". Такой подход к манипулированию данными, при котором пользователь (или его программа) явно различает "предыдущие" и "последующие" строки и может управлять перемещением указателя от одной строки к другой, получил название навигационного подхода.
Ясно, что без навигационного подхода при создании клиентского приложения обойтись невозможно, в то же время для взаимодействия с сервером базы данных предлагается язык SQL как более эффективный. Однако, существует ряд СУБД, в которых навигационный подход распространен и на манипулирование хранимыми данными. Такие системы (dBase, FoxPro, Paradox) появились в начале 80-х годов и были предназначены для создания небольших однопользовательских приложений.
Рассмотрим кратко язык xBase, который поддерживается такими СУБД как dBase, FoxPro, Clipper и, возможно, некоторыми другими. Помимо собственно процедурных операторов (цикл, условие) он включает операторы создания пользовательского интерфейса (меню, окна, экранные формы). Для работы с данными служит следующий набор команд:
USE <имя_таблицы> - открыть таблицу. При этом одна строка таблицы считается "текущей". К полям "текущей" строки можно обращаться по их именам.
GO [ TOP | BOTTOM ] - сделать "текущей" первую / последнюю запись таблицы.
SKIP - сделать текущей следующую запись.
REPLACE <имя_столбца> WITH <значение> [,<имя_столбца> WITH <значение> ...] - изменить значения полей текущей записи
Существуют также команды экранного редактирования записей (EDIT, BROWSE), поиска данных в таблице (FIND) и другие.
Данные персональных СУБД хранятся в обычных файлах (как правило, каждая таблица в отдельном файле), средств описания ограничений целостности не существует. Следовательно, описание данных отделено от самих данных (находится в обрабатывающей программе), поэтому не гарантируется единый способ интерпретации данных для всех пользователей. С развитием компьютерных сетей персональные СУБД стали переходить в разряд многопользовательских. При этом файлы данных размещались на разделяемом сетевом диске. Однако, создание достаточно больших приложений показало, что в этом случае резко снижается производительность и возникают проблемы с поддержанием целостности. Поэтому, в настоящее время практически все персональные СУБД дополнены средствами доступа к SQL-серверам. Теперь они могут служить не только средством для создания небольших локальных приложений, но и для разработки клиентских рабочих мест в архитектуре "клиент-сервер".