- •Реляционная модель данных. Общая характеристика. Целостность реляционных данных.
- •Технологии проектирования реляционных бд. Этапы разработки базы данных. Критерии оценки качества логической модели данных.
- •Проектирование реляционных баз данных на основе принципов нормализации. Понятие метода нормализации отношений. Декомпозиция без потерь и функциональные зависимости. 1-я форма.
- •Минимальные функциональные зависимости и вторая нормальная форма.
- •Нетранзитивные функциональные зависимости и третья нормальная форма.
- •Перекрывающиеся возможные ключи и нормальная форма Бойса-Кодда.
- •Проектирование реляционных баз данных с использованием семантических моделей. Семантическая модель Entity-Relationship. Основные понятия er-модели. Уникальные идентификаторы типов сущности.
- •Нормальные формы er-диаграмм.
- •Получение реляционной схемы из er-диаграммы. Базовые приемы. Представление в реляционной схеме супертипов и подтипов сущности. Представление в реляционной схеме взаимно исключающих связей.
- •Методология idef1x.
- •Основные понятия диаграмм классов uml. Получение схемы рбд из диаграммы классов uml.
- •15.Case-системы проектирования информационных систем. Назначение и разновидности case-систем.
- •16.Классификация архитектур построения приложений баз данных.
- •17.Базовая архитектура сервера баз данных.
- •18.Технология хранилищ данных. Концепция хранилищ данных. Отличия хранилищ данных от систем oltp.
- •Отличия хранилищ данных от систем oltp
- •19.Системы оперативной аналитическая обработка (olap). Связь olap и хд. Структура информационно-аналитической системы и место olap в ней.
- •Связь olap и хд
- •Структура информационно-аналитической системы и место olap в ней
- •Логическая многомерная модель
- •Архитектуры olap
- •О преимуществах и недостатках различных архитектур Реляционное хранилище
- •24.Основы sql. Формат оператора select. Использование предложения where для задания условия отбора и внутреннего соединения таблиц.
- •25.Основы sql. Формат оператора select. Использование псевдонимов таблиц. Определение сортировки. Устранение повторяющихся значений. Расчет значений вычисляемых столбцов.
- •26.Основы sql. Формат оператора select. Агрегатные функции. Группировка записей. Наложение ограничений на группировку записей.
- •27.Основы sql. Формат оператора select. Вложение подзапросов.
- •28.Основы sql. Формат оператора select. Внешние соединения
- •29.Основы sql. Формат оператора select. Объединение запросов – union. Использование is null. Использование операции сцепления строк.
- •30.Основы sql. Формат оператора insert. Явное указание списка значений. Формирование значений при помощи оператора select.
- •1.1.2.1.Явное указание списка значений
- •1.1.2.2.Формирование значений при помощи оператора select
- •31. Основы sql. Формат операторов update и delete.
- •1.1.4.Оператор delete Формат оператора удаления записей
- •32. Основы sql. Работа с просмотрами (view).
- •1.1.5.Работа с просмотрами (view) Понятие просмотра как виртуальной таблицы
- •1.1.5.1.Способы формирования просмотра
- •1.1.5.2.Обновляемые и не обновляемые просмотры
- •1.1.5.3.Дополнительные параметры просмотра
- •Основы sql. Понятие хранимой процедуры. Алгоритмический язык хранимых процедур. Создание хп.
- •Основы sql. Понятие хранимой процедуры. Алгоритмический язык хранимых процедур. Создание хп, параметры и переменные в хп.
- •1.1.6.Создание хранимой процедуры Хранимая процедура создается оператором:
- •1.1.7.Алгоритмический язык хранимых процедур Формат объявления локальных переменных:
- •Операторные скобки :Используются для указания границ составного оператора begin ... End ;
- •Основы sql. Понятие хранимой процедуры. Алгоритмический язык хранимых процедур. Формат оператора select в хп.
- •Оператор for select … do
- •1.1.8.Изменение хп
- •36. Основы sql. Понятие хранимой процедуры. Алгоритмический язык хранимых процедур. Операторы if, while, exit, suspend. Оператор вызова хп.
- •Оператор execute procedure Оператор вызова другой хранимой процедуры:
- •37. Понятие и особенности триггера. Использование триггеров для реализации каскадных воздействий.
- •1.1.9.Создание триггеров
- •38. Понятие и особенности триггера. Использование триггеров для реализации бизнес-правил.Использование генераторов.
- •1.1.10.Изменение существующего триггера:
- •39. Основы sql. Понятие транзакции. Уровни изоляции транзакций.
- •1.2.1.Уровни изоляции транзакций
- •40. Физическое проектировании бд. Способы повышения производительности работы с бд. Определение структуры индексов. Денормализация. Оптимизация запросов.
- •1.3.1.Денормализация для оптимизации
- •Целесообразность создания индексов. Их необходимо создавать в случае, когда по столбцу или группе столбцов:
- •Уменьшение общего количества индексов.
- •41. Реализация доступа к базам данных на примере Borland Delphi. Понятие набора данных. Механизмы доступа.
- •Компоненты для доступа к данным, реализующие:
- •Визуальные компоненты, реализующие интерфейс пользователя;
- •42. Реализация доступа к базам данных на примере Borland Delphi. Применение многозвенных архитектур.
40. Физическое проектировании бд. Способы повышения производительности работы с бд. Определение структуры индексов. Денормализация. Оптимизация запросов.
1.3.Физическое проектирование баз данных. Основная часть проблем физического проектирования баз данных в большой степени зависит от особенностей используемого сервера баз данных. В частности, это относится к планированию размещения в дисковой памяти различных частей базы данных: таблиц, индексов, журналов и т.д. Чем больше индексов существует над таблицами базы данных, тем более вероятным будет выполнение запросов по выборке данных и тем медленнее будут выполняться операции модификации базы данных.
В большинстве систем индекс создается автоматически для каждого определенного в таблице первичного, возможного и внешнего ключа. Что касается дополнительных индексов, вводимых для целей более эффективного выполнения запросов, то с ними нужно быть очень аккуратным. Требуется тщательный предварительный анализ наиболее важного набора запросов (к сожалению далеко не всегда это возможно). Нужно также отдавать себе отчет в том, что создание нового индекса для большой заполненной таблицы - это серьезная дорогостоящая операция (как правило, СУБД выполняет сортировку строк таблицы в соответствии со значением ключевого атрибута).
Далее, хотя в языке SQL и в большинстве его реализаций допускается динамическое изменение реляционной схемы базы данных, не все такие изменения выполняются дешево и безопасно. Дешево и безопасно можно создать новую таблицу с набором индексов и добавить столбец к существующей заполненной таблице. Дорого и опасно уничтожается большая заполненная таблица или ее отдельный столбец.
Достаточно часто абсолютно правильно спроектированная реляционная схема базы данных мешает эффективному выполнению транзакций в конкретной прикладной области при использовании конкретного сервера баз данных. Обычно это связано с особенностями синхронизации параллельно выполняемых транзакций.
Предположим, например, что для синхронизации используется механизм блокировки строк таблиц, и существует дополнительный оператор LOCK TABLE, позволяющий явно блокировать таблицу целиком. В базе данных содержится таблица с информацией о сотрудниках большой компании, каждый из которых приписан к отделу, включающему большое число сотрудников. В большинстве транзакций приложения работа происходит только с одним отделом, но из-за большого числа строк, относящихся к этому отделу, используется оператор LOCK TABLE (иначе таблицы синхронизатора могли бы переполниться). Тем самым, в других транзакциях нельзя будет изменить информацию о сотруднике, работающем совсем в другом отделе. Одно из возможных решений проблемы состоит в том, чтобы завести столько отдельных таблиц, сколько существует отделов. Это позволит приложению в целом работать более эффективно, хотя и не оправданно с точки зрения теории.
1.3.1.Денормализация для оптимизации
На каждом шаге нормализации порождаются потенциальные соединения отношений. Для некоторых приложений это несущественно, для других - критично. Известно, что если для выполнения запроса к базе данных требуется выполнить десять соединений, то ни один из современных серверов баз данных не обеспечивает умеренное время ответа. Поэтому иногда приходится жертвовать идеями и работать с недостаточно нормализованной схемой БД. Конечно, при работе с такой схемой могут возникать аномалии изменений, но с ними можно бороться другими способами, например, с помощью триггеров.
Оптимизация запросов к БД связана с построением адекватной запросам и оптимальной структуры индексов таблиц БД и оптимизации собственно текстов запросов.
Оптимальная структура индексов. От структуры индексов таблиц БД в огромной степени зависит эффективность выполнения запросов. При выполнении запросов сервер БД обычно сначала просматривает список индексов, определенных для участвующих в запросе таблиц. Затем выбирается одна из двух схем выполнения запроса – использовать имеющиеся индексы или последовательно просмотреть таблицы. Оптимизатор сервера стремиться выполнить запрос с максимальным быстродействием и с минимальными накладными расходами.
Эффективность
использования индекса при поиске
информации в таблице БД сильно зависит
от того, построен ли