
- •1. Введение в бд
- •2. Теоретические основы бд
- •2.1 Базы данных
- •2.2. Архитектуры обработки информации
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3 Модели баз данных
- •2.3.1 Иерархическая модель данных
- •Ошибка! Ошибка связи.
- •Ошибка! Ошибка связи.
- •2.3.2 Сетевая модель данных
- •Ошибка! Ошибка связи.
- •2.3.3 Реляционная модель данных
- •3. Реляционный подход к организации бд
- •3.1 Базовые понятия реляционных баз данных
- •Ошибка! Ошибка связи.
- •3.2 Фундаментальные свойства отношений
- •3.3 Взаимосвязь отношений
- •4. Реляционная алгебра
- •4.1 Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •4.2 Теоретико-множественные операторы
- •4.3 Специальные реляционные операторы
- •4.4 Зависимые реляционные операторы
- •4.5 Примитивные реляционные операторы
- •4.6 Запросы, невыразимые средствами реляционной алгебры
- •4.7 Кросс-таблицы
- •5. Проектирование бд
- •5.1. Цели и этапы проектирования
- •5.2 Уровни моделирования (проектирования) бд
- •5.3 Критерии оценки качества логической модели данных
- •5.4 Нормализация и ее необходимость
- •5.5 Теория нормализации
- •5.6 Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Ошибка! Ошибка связи.
- •6. Элементы языка sql
- •6.1 Типы данных
- •6.2 Операторы dml (определения объектов базы данных)
- •6.2.1 Операторы работы с таблицами
- •6.3 Операторы dml (операторы манипулирования данными)
- •6.3.1 Примеры использования операторов манипулирования данными
- •Insert - вставка строк в таблицу
- •6.3.2 Update - обновление строк в таблице
- •6.3.3 Delete - удаление строк в таблице
- •6.3.4 Выбор данных из таблицы select
- •6.3.4.1 Общий синтаксис команды select
- •6.3.4.2 Примеры работы с использованием оператора select
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •6.3.4.3 Порядок выполнения оператора select
- •6.3.4.4 Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
- •6.4 Объекты и концепции базы данных
- •6.4.1 Таблицы (Tables)
- •6.4.2 Столбцы (Columns)
- •6.4.3 Типы данных (Data types)
- •Тип данных blob
- •6.4.4 Домены (Domains)
- •6.4.5 Справочные ограничения целостности (Referential integrity constraints)
- •6.4.6 Индексы (Indexes)
- •6.4.7 Представления (Views)
- •6.4.8. Хранимые процедуры (Stored procedures)
- •6.4.9 Триггеры (Triggers)
- •6.4.10 Генераторы (Generators)
- •6.4.11 Защита (Security)
- •6.5 Операторы sql для работы с объектами бд
- •6.5.1 Представления
- •6.5.2 Хранимые процедуры
- •6.5.3 Генераторы
- •6.5.4 Триггеры
- •6.5.5 Индексы
- •6.6 Инструкции sql
- •7. Физическая организация и работа субд
- •7.1 Хранение данных
- •Ошибка! Ошибка связи.
6.6 Инструкции sql
Определение переменных
DECLARE VARIABLE var <тип_данных>;
[DECLARE VARIABLE var <datatype>; ...]
<тип_данных> может быть числового, строкового типа или дата.
Используются переменный обычным образом. Перед именем переменной ставится «:»
FOR <select_выражение> DO <инструкция> |
Повторение инструкции или блока, который следует за DO, для каждой допустимой строки возращенной <select_выражение>.
|
IF (<условие>) THEN <инструкция> [ELSE <инструкция>] |
Проверяет <условие>, и если оно TRUE, выполняет инструкцию или блок, следующий за THEN; иначе, выполняет инструкцию или блок следующий за ELSE, если он существует. |
WHILE (<условие>) DO <инструкция> |
Пока <условие> TRUE, выполняется <инструкция> Первое <условие> проверяется и если оно TRUE, то выполняется <инструкция>. |
Пример использования инструкций:
Следующая процедура возвращает количество сотрудников, работающих в должности переданной строковым параметром (но не ее идентификатором), например «Доцент» и общее количество денег выплачиваемых им в качестве зарплаты.
SET TERM ^ ;
ALTER PROCEDURE num_sotr(
dolg CHAR(10)
)
RETURNS(
num integer,
sum_money integer
)
AS
DECLARE VARIABLE id_d INTEGER;
BEGIN
num=0;
FOR SELECT id_d
FROM dolgnost
WHERE dolg=:dolg
INTO :id_d
DO
BEGIN
SELECT COUNT(*)
FROM a
WHERE
a.id_d=:id_d
INTO num;
END
sum_money=0;
IF (num>0) THEN
BEGIN
sum_money = sum_money * num;
END
END ^
SET TERM ; ^
7. Физическая организация и работа субд
7.1 Хранение данных
Обобщенная структура SQL-сервера:
Ошибка! Ошибка связи.
Реляционные СУБД обладают рядом особенностей, влияющих на организацию внешней памяти. К наиболее важным особенностям можно отнести следующие:
Наличие двух уровней системы: уровня непосредственного управления данными во внешней памяти (а также обычно управления буферами оперативной памяти, управления транзакциями и журнализацией изменений БД) и языкового уровня (например, уровня, реализующего язык SQL). При такой организации подсистема нижнего уровня должна поддерживать во внешней памяти набор базовых структур, конкретная интерпретация которых входит в число функций подсистемы верхнего уровня.
Поддержание отношений-каталогов. Информация, связанная с именованием объектов базы данных и их конкретными свойствами (например, структура ключа индекса), поддерживается подсистемой языкового уровня. С точки зрения структур внешней памяти отношение-каталог ничем не отличается от обычного отношения базы данных.
Регулярность структур данных. Поскольку основным объектом реляционной модели данных является плоская таблица, главный набор объектов внешней памяти может иметь очень простую регулярную структуру.
При этом необходимо обеспечить возможность эффективного выполнения операторов языкового уровня как над одним отношением (простые селекция и проекция), так и над несколькими отношениями (наиболее распространено и трудоемко соединение нескольких отношений). Для этого во внешней памяти должны поддерживаться дополнительные "управляющие" структуры - индексы.
Наконец, для выполнения требования надежного хранения баз данных необходимо поддерживать избыточность хранения данных, что обычно реализуется в виде журнала изменений базы данных.
Основная единица хранения данных на уровне файла БД – страница (page). В схеме хранения страница представляет собой блок фиксированной длины, обрабатываемой при дисковых операциях. вв/выв как единое целое. Т.о., если пользователь затребует 10 строку, то с диска будет считана вся страница ее содержащую. В InterBase размер страницы фиксирован и может составлять 1024, 2048, 4096 и 8192 байт.
В общем случае структура страницы следующая:
Страница является минимальным блоком, в который сервер хранит данные. Для более эффективного управления страницами сервер использует группы страниц – экстенты (extents). Экстент в свою очередь является базовым блоком хранения данных разнотипных таблиц и индексов.
При добавлении/удалении/изменении данных просматриваются экстенты для тех таблиц, для которых эти операции затребованы. В случае, если данные добавляются, то просматриваются страницы соответствующего экстента. Если ни одна из страниц не имеет достаточного места для вставки строк, то для этого выделяется новый экстент. При удалении страницы (и экстенты) не удаляются. Для того, чтобы их физически удалить из файла БД и тем самым уменьшить размер БД необходимо ее упаковывать. Это есть отдельная операция, выполняемая над БД. Для этого в большинстве случаев достаточно сделать резервную копию БД, разрегистрировать ее, а затем восстановить из резервной копии.
БД в общем случае в своем составе имеет файлы следующих типов:
Primary – основной файл. Файл этого типа содержит системную информацию о самой БД и ее объектах и их параметрах.
Secondary – вторичный файл. Файлы этого типа не содержат системную информацию и используются только для хранения данных.
Transaction Log – журнал транзакций. Файлы этого типа используются для хранения информации о транзакциях, выполненных в БД.