- •"Мати - российский государственный технологический университет имени к.Э. Циолковского"
- •Курс лекций по дисциплине «базы данных»
- •Москва 2013
- •Введение
- •Для чего нужны базы данных
- •Основные определения
- •Классификация бд
- •Реляционные бд
- •Структура таблиц и типы данных
- •Целостность данных
- •Поддержание ссылочной целостности
- •Правила Кодда
- •Реляционная алгебра
- •Теоретико-множественные операторы Объединение
- •Проекция
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение
- •Деление
- •Создание таблиц
- •Выборка данных
- •Объединение таблиц
- •Добавление данных
- •Insert into имя_таблицы
- •Values (значение 1, значение 2, …)
- •Values ('Комиксы', 'Не знаю, какая у них история');
- •Values ('Комиксы', 'Не знаю, какая у них история');
- •Values ('Комиксы');
- •Удаление данных
- •Изменение данных
- •Проектирование баз данных
- •Концептуальное проектирование и построение er-модели
- •Логическое проектирование
- •Физическое проектирование
- •Нормализация базы данных
- •Первая нормальная форма.
- •Индексы
- •Общие сведения
- •Кластерные индексы
- •Некластерные индексы
- •Создание индекса
- •Многопользовательский доступ к данным
- •Технология «клиент-сервер»
- •Транзакции
- •Проблемы параллельного доступа.
- •Блокировки и уровни изоляции
- •Грануляция блокировок (уровни блокирования)
- •Хранимые процедуры
- •Понятие хранимой процедуры
- •Типы хранимых процедур
- •Создание, изменение и удаление хранимых процедур
- •Приложения
Некластерные индексы
При использовании некластерного индекса строки таблицы могут храниться на диске в любом порядке. Сам индекс представляет собой дерево ссылок на соответствующие записи. Каждой записи в таблице назначается идентификатор. Один листовой элемент индекса соответствует одной записи. По этой причине, а также потому, что указатели некластерного индекса имеют больший размер, чем у кластерных индексов (поскольку содержат идентификатор записи, а не просто идентификатор страницы), некластерные индексы обычно занимают намного больше места.
Обратите внимание, в данном примере есть две записи со значением «Летов» - значит, создается также два указателя в индексе, по одному на каждую запись.
При создании в таблице ограничения UNIQUE для ограничиваемого столбца автоматически создается некластерный индекс, если не был явно указан другой тип индекса.
Создание индекса
Общая схема SQL-инструкции для создания индексов:
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX
имя_индекса ON имя_таблицы (столбец [,…]);
Команда содержит следующие параметры:
UNIQUE – запрещает наличие повторяющихся значений для индекса. Обычно используется для столбцов первичного ключа. По умолчанию индекс не является уникальным.
CLUSTERED – создает кластерный индекс.
NONCLUSTERED – создает некластерный индекс.
имя_индекса – определяет имя индекса, уникальное в пределах таблицы.
столбец – определяет столбцы, включаемые в индекс.
Например, создадим уникальный кластерный индекс по столбцу «Sirname» таблицы «Contacts». Индекс будет иметь имя «index1».
CREATE UNIQUE CLUSTERED INDEX
index1 ON Contacts (Sirname);
Создадим неуникальный некластерный индекс index2.
CREATE INDEX
index2 ON Contacts (Sirname);
При построении индексов можно опираться на следующие правила.
Не создавайте кластерные индексы для таблиц, в которых будут часто обновляться данные. При любом изменении происходит физическое перестроение таблицы по индексу, что замедляет работу БД.
При извлечении из таблицы очень большого числа строк использование индекса – только потеря времени.
Индексы лучше создавать для столбцов, значения в которых редко повторяются.
Индекс должен быть максимально узким (меньшего объема). Любой индекс занимает место на диске, кроме того, если в таблице создан кластерный индекс, он будет использоваться для поиска во всех некластерных индексах (как идентификатор записи). Если кластерный ключ действительно широкий, тогда все некластерные индексы будут (без необходимости) широкими.
Индексы полезны при сортировке. Если сортировка происходит по индексируемому столбцу (или нескольким столбцам одного индекса), нет необходимости переупорядочивать данные.
Многопользовательский доступ к данным
Технология «клиент-сервер»
Сервер – компьютер, предназначенный для выполнения определенных служебных задач (напр., файл-сервер).
Также сервер – программное обеспечение, которое отвечает на запросы клиентов и предоставляет им доступ к ресурсам или услугам.
Виды серверов:
FTP-сервер (ftp – протокол для передачи файлов);
WEB-сервер (принимает от клиентов http-запросы, возвращает http-ответы);
сервер БД;
SMTP-сервер;
прокси-сервер (позволяет клиентам выполнять косвенные запросы к другим сетевым службам) и др.
Клиент – это аппаратный или программный компонент, который отправляет серверу запросы, в ответ получает информацию и предоставляет её пользователю.
По сути, сервер владеет и распоряжается информационными ресурсами системы, клиент имеет возможность ими воспользоваться.
В случае если обработка и представление данных происходят на машине клиента, это толстый клиент.
При использовании тонких клиентов большая часть обработки данных происходит на сервере. В отличие от толстого, компьютеру – тонкому клиенту не требуется специального ПО.
При работе с базами данных часто используется следующая схема:
Тонкий клиент (веб-браузер) обращается к веб-серверу по протоколу http, веб-сервер отправляет запрос к серверу БД, получает данные, обрабатывает их, формирует html-страницу и возвращает её клиенту.
