- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.2 Архитектура «файл-сервер»
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
3.1.3 Case-технологии и case-системы
Современные информационные системы имеют очень высокую сложность и хранят огромное количество данных. Например, известная система дистанционного обучения Moodle содержит базу данных более чем из 200 таблиц (причем в каждой новой версии появляется по нескольку новых таблиц), а ведь эта система считается системой средней сложности. Интегрированные системы предприятий могут содержать и до 1000 таблиц.
Для автоматизации столь трудоемкого процесса, как анализ предметной области и разработка концептуальной схемы базы данных, требуется особая технология. Такая технология получила название CASE (Computer Aided Software Engeneering - создание программного обеспечения с помощью компьютера). Основные черты CASE - технологии:
разработка информационной системы представляется в виде последовательных четко определенных этапов (Рис.3.7):
Рис.3.7 – Этапы жизненного цикла информационной системы
поддержка всех этапов жизненного цикла ИС, начиная с анализа предметной области до получения и сопровождения готового программного продукта
поддержка репозитария, хранящего спецификации проекта ИС на всех этапах ее разработки
возможность одновременной работы с репозитарием многих разработчиков
автоматизация различных стандартных действий по проектированию и реализации ИС
Как правило, CASE-системы поддерживают следующие этапы процесса разработки информационной системы.
Моделирование и анализ деятельности пользователей в рамках предметной области. Здесь осуществляется функциональная декомпозиция, определение иерархий (вложенности) функций, построение диаграмм потоков данных. Перечень информационных объектов, которыми манипулируют функции, передается на следующий этап проектирования.
Концептуальное моделирование - создание диаграммы "сущность-связь" на основе перечня объектов, полученного на предыдущем этапе.
Преобразование диаграммы "сущность-связь" в физическую схему базы данных, учитывающую особенности выбранной СУБД. Это преобразование выполняется Case-системой автоматически .
Автоматическая генерация SQL-сценария создания базы данных. Результатом выполнения данного этапа является набор SQL-операторов, описывающих создание схемы базы данных с учетом особенностей выбранной СУБД.
Некоторые Case-системы выполняют генерацию прототипов программных модулей прикладного программного обеспечения, заготовки экранных форм и отчетов.
В настоящее время имеется большое количество CASE-систем, поддерживающих разные нотации изображения диаграмм «сущность - связь». Далее рассмотрим одну из наиболее популярных нотаций и основанную на ней методологию IDEF1.
3.1.4 Методология idef1
Метод IDEF1, разработанный Т. Рэмей (T.Ramey), основан на подходе П. Чена. В настоящее время на основе совершенствования методологии IDEF1 создана ее новая версия - методология IDEF1X. IDEF1X разработана с учетом таких требований, как простота изучения и возможность автоматизации. IDEF1X-диаграммы используются рядом распространенных CASE-систем, в частности, это ERwin Data Modeller, Design/IDEF, свободно распространяемая система TOAD Data Modeller и ряд других.
Сущность, как в подходе Чена, обозначается прямоугольником. Список атрибутов приводится внутри прямоугольника, обозначающего сущность. Атрибуты, составляющие ключ сущности, группируются в верхней части прямоугольника и отделяются горизонтальной чертой.
Связь изображается линией, проводимой между сущностью-родителем и дочерней сущностью точкой на конце линии у дочерней сущности. Дополнительно может определяться мощность связи (количество экземпляров дочерней сущности, которое может существовать для каждого экземпляра сущности-родителя). В IDEF1X могут быть выражены следующие мощности связей:
каждый экземпляр сущности-родителя может иметь ноль, один или более связанных с ним экземпляров дочерней сущности;
каждый экземпляр сущности-родителя должен иметь не менее одного связанного с ним экземпляра дочерней сущности;
каждый экземпляр сущности-родителя должен иметь не более одного связанного с ним экземпляра дочерней сущности;
каждый экземпляр сущности-родителя связан с некоторым фиксированным числом экземпляров дочерней сущности.
Если экземпляр дочерней сущности однозначно определяется своей связью с сущностью-родителем, то связь называется идентифицирующей, в противном случае - неидентифицирующей.
Идентифицирующая связь между сущностью-родителем и сущностью-потомком изображается сплошной линией (рис. 3.8). Сущность-потомок в идентифицирующей связи является зависимой сущностью (изображается на диаграмме прямоугольником с закругленными концами).
В приведенном примере Сущность2 имеет составной первичный ключ (Ключ1, Ключ2), т.е. сущность2 не имеет собственного идентификатора, а идентифицируется через первичный ключ родителя .
Рис. 3.8 - Идентифицирующая связь
Пунктирная линия изображает неидентифицирующую связь (рис. 3.9). Сущность-потомок в неидентифицирующей связи будет независимой от ключа родителя, если она не является также сущностью-потомком в какой-либо идентифицирующей связи. Неидентифицирующая связь является более слабой, чем идентифицирующая, а сущность-потомок – более независимой от родителя.
Рис. 3.9 - Неидентифицирующая связь
Некоторые CASE-системы, например ERWin, позволяют изображать на диаграмме связь «многие-ко-многим» в виде сплошной линии с точками на обоих концах (рис.3.10), при этом выполняют автоматическое формирование ассоциированной сущности, которая в физической схеме превращается в таблицу-связку.
Рис. 3.10 - Связь Многие ко многим
В заключение приведем фрагмент диаграммы «сущность-связь», изображенный на рис.3.6, в нотации IDEF1X (рис.3.11).
Рис. 3.11 – Фрагмент диаграммы «сущность-связь» (IDEF1X)
Здесь следует обратить внимание на связи между подразделениями и сотрудниками. Связь слева имеет мощность 1:M (в каждом подразделении много сотрудников), связь справа имеет мощность 1:1 (каждый сотрудник может руководить не более чем одним подразделением). Но обе связи являются необязательными, т.е. сотрудник может не руководить никаким подразделением, а подразделение может какое-то время существовать без сотрудников.
