- •В.И. Швецов, А.Н. Визгунов, И.Б. Мееров
- •БАЗЫ ДАННЫХ
- •ОГЛАВЛЕНИЕ
- •ПРЕДИСЛОВИЕ
- •1.1. Развитие основных понятий представления данных
- •1.2. Системы управления базами данных
- •3. Обеспечение логической и физической независимости данных.
- •4. Защита логической целостности базы данных.
- •5. Защита физической целостности.
- •7. Синхронизация работы нескольких пользователей.
- •8. Управление ресурсами среды хранения.
- •9. Поддержка деятельности системного персонала.
- •1.4. Краткий обзор литературы и других доступных источников
- •1.5. Различные представления о данных в базах данных
- •1.6.1. Модель с централизованной архитектурой
- •1.6.2. Модель с автономным персональными ЭВМ
- •1.7. Краткий обзор СУБД
- •1.7.1. Настольные СУБД
- •1.7.2. Серверные СУБД
- •1.8. Основные этапы проектирования базы данных
- •ГЛАВА 2. КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ БАЗЫ ДАННЫХ
- •2.1. Сложный пример предметной области
- •2.2. Способы описания предметной области
- •2.4. Описание информационных потребностей пользователя
- •2.5. Построение ER-диаграмм
- •2.7. Построение концептуальной модели
- •2.7.1. Моделирование локальных представлений
- •2.7.2. Объединение локальных моделей
- •Слияние идентичных элементов
- •Установление связей между наборами сущностей разных моделей
- •Введение агрегированных элементов
- •Обобщение подобных типов сущностей
- •2.9. Ограничения целостности
- •3.1. Общие представления о модели данных
- •3.2. Сетевая модель данных
- •3.3. Иерархическая модель данных
- •3.4. Реляционная модель данных
- •3.5. Многомерная модель данных
- •ГЛАВА 4. ФОРМАЛИЗАЦИЯ РЕЛЯЦИОННОЙ МОДЕЛИ
- •4.2. Манипулирование данными в реляционной модели
- •4.3. Операции реляционной алгебры
- •4.4.1. Проблема выбора рациональных схем отношений
- •Полное множество функциональных зависимостей
- •4.4.3. Декомпозиция схемы отношения
- •Вторая нормальная форма (2НФ)
- •Третья нормальная форма (3НФ)
- •Мотивировка третьей нормальной формы
- •Нормальная форма Бойса-Кодда (НФБК)
- •Мотивировка нормальной формы Бойса-Кодда
- •4.4.5. Пример нормализации до 3НФ
- •ГЛАВА 5. ФИЗИЧЕСКИЕ МОДЕЛИ ДАННЫХ (СТРУКТУРЫ ХРАНЕНИЯ)
- •5.1. Структура памяти ЭВМ
- •5.2. Представление экземпляра логической записи
- •5.4. Структуры хранения данных во внешней памяти ЭВМ
- •5.4.1. Последовательное размещение физических записей
- •Поиск записи с заданным значением ключа
- •Чтение записи с заданным значением ключа
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка и удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.4. Использование индексов (индексирование)
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.5. Бинарное дерево (В-дерево)
- •Поиск и чтение записи с заданным значением ключа
- •Модификация (корректировка) записи
- •Удаление записи
- •Добавление записи
- •5.4.6. Размещение записей с использованием хэширования
- •Поиск записи с заданным значением ключа и чтение
- •Модификации записи
- •Удаление записи
- •Добавление записи
- •5.4.7. Комбинированные структуры хранения
- •6.1.1. Архитектура базы данных
- •Логический уровень
- •Физический уровень
- •Файлы и группы файлов
- •Страницы и группы страниц
- •6.2.1. Проблемы доступа и обработки данных
- •6.2.2. Навигационный подход
- •6.3. Понятие языка SQL и его основные части
- •6.3.1. История возникновения и стандарты языка SQL
- •6.3.2. Достоинства языка SQL
- •6.3.3. Разновидности SQL
- •6.4.1. Использование SQL для выбора информации из таблицы
- •Простейший запрос
- •Использование агрегатных функций. Простые запросы
- •Форматирование вывода. Выражения в запросе. Упорядочение
- •6.4.4. Язык SQL и операции реляционной алгебры
- •6.5. Программный (встроенный) SQL
- •6.5.1. Статический SQL
- •6.6.1. Библиотека DB-Library
- •6.6.2. Протокол ODBC
- •6.6.3. Протокол OCI
- •6.6.4. Протокол JDBC
- •ГЛАВА 7. ТЕНДЕНЦИИ РАЗВИТИЯ БАЗ ДАННЫХ
- •Объектно-ориентированное программирование
- •Объектно-ориентированные базы данных
- •Объектно-реляционные базы данных
- •7.2. Распределенные базы данных
- •СПИСОК ЛИТЕРАТУРЫ
- •УЧЕБНАЯ ПРОГРАММА КУРСА
- •Цели и задачи курса
- •Дисциплины, изучение которых необходимо для данного курса
- •Программа курса (36 ч. лекций, 18 ч. лабораторных работ)
- •2. Концептуальное моделирование базы данных (6 часов)
- •4. Формализация реляционной модели (6 часов)
- •5. Физические модели данных (структуры хранения) (4 часа)
- •7. Тенденции развития баз данных
- •Список литературы
- •УЧЕБНЫЕ ПОСОБИЯ
- •ОСНОВНЫЕ РЕКОМЕНДУЕМЫЕ МОНОГРАФИИ
- •ЛИТЕРАТУРА ПО ПРОГРАММНЫМ СРЕДСТВАМ
- •ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА
- •ЛАБОРАТОРНЫЙ ПРАКТИКУМ
- •ОПИСАНИЕ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •ВИДЫ ПРЕДМЕТНЫХ ОБЛАСТЕЙ
- •1. Страховая компания
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •2. Гостиница
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •3. Ломбард
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •4. Реализация готовой продукции
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •5. Ведение заказов
- •Описание предметной области
- •Таблицы
- •6. Бюро по трудоустройству
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •7. Нотариальная контора
- •Описание предметной области
- •Таблицы
- •8. Фирма по продаже запчастей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •9. Курсы по повышению квалификации
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •10. Определение факультативов для студентов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •11. Распределение учебной нагрузки
- •Описание предметной области
- •Таблицы
- •12. Распределение дополнительных обязанностей
- •Описание предметной области
- •Таблицы
- •13. Техническое обслуживание станков
- •Описание предметной области
- •Таблицы
- •14. Туристическая фирма
- •Описание предметной области
- •Таблицы
- •15. Грузовые перевозки
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •16. Учет телефонных переговоров
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •17. Учет внутриофисных расходов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •18. Библиотека
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •19. Прокат автомобилей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •20. Выдача банком кредитов
- •Описание предметной области
- •Таблицы
- •21. Инвестирование свободных средств
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •22. Занятость актеров театра
- •Описание предметной области
- •Таблицы
- •23. Платная поликлиника
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •25. Учет телекомпанией стоимости прошедшей в эфире рекламы
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •26. Интернет-магазин
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •27. Ювелирная мастерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •28. Парикмахерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •29. Химчистка
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •30. Сдача в аренду торговых площадей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •ПРИМЕР ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Краткое задание
- •Пример выполнения
- •Вариант 2.
- •Вариант 3.
- •Сетевая модель
- •Иерархическая модель
- •Реляционная модель
- •Лабораторная работа №2
- •Краткое задание
- •Пример выполнения
- •Таблица Абитуриенты
- •Таблица Экзамены
- •Таблица Оценки
- •Схема данных
- •Абитуриенты-Оценки
- •Экзамены-Оценки
- •Импорт данных
- •Таблица «Абитуриенты»
- •Таблица «Экзамены»
- •Таблица «Оценки»
- •Лабораторная работа №3
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №4
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №5
- •Краткое задание
- •Пример выполнения
- •Описание расширенной предметной области
- •Состав хранимой информации
- •Диаграммы «Сущность-Связь»
- •Таблицы в 3НФ
- •Скрипты для создания объектов базы данных в СУБД Oracle
- •Лабораторная работа №6
- •Краткое задание
- •Пример выполнения
База данных в виде набора файлов находится на жестком диске специально выделенного компьютера (сервера сети).
СУБД располагается также на сервере сети.
Существует специально выделенный сервер приложений, на котором располагается программное обеспечение (ПО) делового анализа [8] (бизнес-логика).
Существует множество клиентских компьютеров, на каждом из которых установлен т.н. «тонкий клиент» – клиентское приложение, реализующее интерфейс пользователя.
На каждом из клиентских компьютеров пользователи имеют возможность запустить приложение – тонкий клиент. Используя предоставляемый приложением пользовательский интерфейс, он инициирует обращение к ПО делового анализа, расположенному на сервере приложений.
Сервер приложений анализирует требования пользователя и формирует запросы к БД. Для общения используется специальный язык запросов SQL, т.е. по сети от сервера приложений к серверу БД передается лишь текст запроса.
СУБД инкапсулирует внутри себя все сведения о физической структуре БД, расположенной на сервере.
СУБД инициирует обращения к данным, находящимся на сервере, в результате которых результат выполнения запроса копируется на сервер приложений.
Сервер приложений возвращает результат в клиентское приложение (пользователю).
Приложение, используя пользовательский интерфейс, отображает результат выполнения запросов.
1.7. Краткий обзор СУБД
Первые специализированные программы для хранения обработки данных стали появляться в конце 60-х, начале 70-х годов двадцатого века. СУБД помогала пользователям компьютеров организовывать и структурировать данные. Несмотря на то, что первые СУБД функционировали на больших ЭВМ (мэйнфреймах), с появлением персональных компьютеров активное использование БД и СУБД переместилось на них и стало доступным не только для индустриальных гигантов и исследовательских центров, но и для обычных пользователей (малый и средний бизнес, образовательные учреждения, предприятия бытовой сферы, муниципальные организации).
43
СУБД сыграли важную роль в развитии компьютерных сетей и Интернета [8]. Так, вследствие развития технологий представления и обмена данными в сочетании с появлением современных сетевых протоколов произошел отход от представления вычислительной системы как отдельно стоящего персонального компьютера сначала в сторону многопользовательских систем, выполненных в рамках технологий компьютерных сетей, территориально ограниченных рамками одного здания, а далее в направлении распределенных баз данных, территориально расположенных на различных компьютерах, иногда в разных частях света. В настоящее время, благодаря сети Интернет пользователю достаточно иметь лишь Web-браузер для успешной работы с базой данных, находящейся далеко за пределами здания, в котором расположен центральный офис его организации.
В литературе неоднократно можно встретить упоминания того, что сегодня рынок СУБД – это большой бизнес. Независимые компании по производству программного обеспечения и крупные поставщики продают программы для управления базами данных на миллиарды долларов ежегодно. В большинстве корпоративных приложений, обеспечивающих ежедневную деятельность крупных компаний и организаций, используются базы данных. Эти приложения подразделяются на несколько быстро развивающихся категорий [8]:
Планирование ресурсов предприятий (Enterprise Resource Planning – ERP).
Регулирование отношений с клиентами (Customer Relationship Management – CRM).
Управление системой поставок (Supply Chain Management – SCM). Автоматизация продаж (Sales Force Automation – SFA).
Финансовые приложения.
Производители компьютерного оборудования разрабатывают и поставляют серверы, которые специально сконфигурированы для функционирования в качестве серверов баз данных. Коммерческое использование этих систем дает ежегодный оборот в миллиарды долларов. Базы данных обеспечивают информацией большинство Webузлов, ориентированных на транзакции, и используются для отслеживания и анализа взаимодействия с Web-узлами. Таким образом, проблема управления базами данных затрагивает все сегменты рынка компьютерных технологий [8].
Многие авторы классифицируют СУБД на 2 большие категории: т.н. «настольные» и «серверные».
44
СУБД
НАСТОЛЬНЫЕ
Dbase, FoxPro, Paradox, …
СЕРВЕРНЫЕ
DB2, Oracle, SQL Server,
Informix, InterBase…
Рис. 11. Настольные и серверные СУБД
1.7.1. Настольные СУБД
Несмотря на то, что многие авторы высказывают мнение, что время этих СУБД прошло, они по-прежнему используются и некоторые из них достаточно активно. К числу подобных СУБД относятся DBase, FoxPro, Paradox, MS Access.
Конечно, настольные СУБД обладали, обладают и будут обладать всеми недостатками файл-серверной архитектуры. Не вызывают сомнения слова о плохой защищенности данных, медленной работе, трудностях с поддержкой ограничений целостности, проблемах с дублированием данных при миграции и резервном копировании, трудностях администрирования, катастрофического снижения скорости обработки при возрастании объемов данных и т.д. и т.п.
Однако, на наш взгляд используемые для решения проблемы средства должны соответствовать сложности решаемой проблемы. Так, вряд ли имеет смысл тратить на разработку и внедрение информационной системы средства, существенно большие, чем весь годовой оборот предприятия, а для многих предприятий сферы малого (а, возможно, и среднего) бизнеса дело обстоит именно так. Следует понимать, что расходы на приобретение готового программного обеспечения (в частности, серверной СУБД), а также разработку соответствующей информационной системы, функционирующей под управлением это СУБД, составят от нескольких десятков тысяч до нескольких миллионов долларов.
Итак, где же и как используются на сегодняшний день перечисленные выше СУБД? Прежде всего, это государственные (муниципальные) учреждения, сфера образования, сфера обслуживания, малый и средний бизнес. Специфика возникающих там задач заключается в том, что объемы данных не являются катастрофически большими, час-
45
тота обновлений не бывает слишком большой, организация территориально обычно расположена в одном небольшом здании, количество пользователей колеблется от одного до 10-15 человек. В подобных условиях использование настольных СУБД для управления информационными системами является вполне оправданным и с успехом применяется.
Более того, последние версии настольных СУБД приобрели некоторые качества, необходимые для нормальной работы, такие, например, как поддержка ограничений целостности и механизма транзакций (подробно понятие транзакции и механизм транзакций будет описан далее).
Некоторые настольные СУБД функционируют в среде Microsoft Windows, а также «обзавелись» средствами реализации оконного пользовательского интерфейса, например, Microsoft Access (рис. 12) и Visual FoxPro.
Рис. 12. Пользовательский интерфейс СУБД Access
Для тех СУБД, новые версии которых более не выпускаются, жизнь все равно не кончилась. Так, до сих пор используются базы дан-
46