
- •Лекция 01: Вводные замечания Основные понятия, принципы и ограничения реляционных баз данных Основные определения
- •Принципы, реализуемые реляционными субд
- •Ограничения реляционных баз данных
- •Реляционная судб ms sql Server
- •Ms sql Server как система управления обработкой транзакций
- •Ms sql Server как система поддержки принятия решений
- •Службы ms sql Server Серверная часть системы
- •Клиентская часть системы
- •Лекция 02: Что делают и за что отвечают администраторы баз данных Microsoft sql Server
- •Инсталляция и конфигурирование
- •Инсталляция программного обеспечения
- •Конфигурирование аппаратуры и программного обеспечения
- •Безопасность
- •Аудит системы
- •Обычная работа
- •Резервное копирование и восстановление
- •Управление пользователями
- •Прочая обычная работа
- •Уровень качества обслуживания
- •Мониторинг и настройки производительности
- •Состав системы и планирование мощности
- •Обеспечение периодов работоспособности системы
- •Планирование периодов неработоспособности
- •Восстановление после аварий
- •Документирование
- •Документация о конфигурации
- •Системный журнал
- •Документация о структуре системы
- •Планы обычного технического обслуживания
- •Планы восстановления после аварий
- •Проектирование и разработка
- •Создание модели данных и анализ
- •Проектирование базы данных
- •Разработка хранимых процедур
- •Разработка приложений
- •Информационная помощь другим сотрудникам
- •Прочие обязанности администратора баз данных
- •Администрирование кластера
- •Работа в службе технических консультаций для пользователей
- •Оценка закупаемого оборудования и программного обеспечения
- •Слежение за мощностью системы
- •Типы данных
- •Значение null
- •Правила порождения идентификаторов
- •Системные таблицы
- •Временные таблицы
- •Пользовательские таблицы
- •Физическая архитектура баз данных
- •Страницы и группы страниц
- •Файлы и группы файлов
- •Лекция 04: Основы программирования в ms sql Server Реляционная алгебра
- •Операции реляционной алгебры
- •Реализация операций реляционной алгебры в языке sql
- •Описание синтаксиса языка Transact-sql Управляющие конструкции
- •Логические операторы
- •Лекция 05: Создание и использование умолчаний, ограничений и правил
- •Умолчания
- •Определение и модифицирование умолчаний с помощью t-sql
- •Оператор create table с атрибутом default
- •Оператор alter table с атрибутом default
- •Оператор create default и процедура sp_bindefault
- •Процедура sp_unbindefault
- •Ограничения
- •Создание и модифицирование ограничений с помощью t-sql Ограничение not null
- •Ограничение unique
- •Ограничение primary key
- •Ограничение foreign key
- •Ограничение check
- •Правила
- •Создание Rule-объекта с помощью t-sql
- •Лекция 06: Создание и использование индексов Что такое индекс?
- •Понятия индексирования
- •Индексные ключи
- •Простые индексы
- •Составные индексы
- •Уникальность индекса
- •Уникальный индекс
- •Неуникальные индексы
- •Типы индексов
- •Кластеризованные индексы
- •Некластеризованные индексы
- •Полнотекстовые индексы
- •Использование коэффициента заполнения для предупреждения расщеплений страниц
- •Создание индексов
- •Использование Management Studio
- •Категория «Общие»
- •Категория «Идентификация»
- •Категория «Конструктор таблиц»
- •Спецификация пространства данных
- •Характеристики заполнения
- •Использование t-sql
- •Лекция 07: Программируемые объекты в ms sql Server Пользовательские функции sql Server
- •Функции Scalar
- •Функции Inline
- •Функции Multistatement
- •Изменение функций
- •Удаление функций
- •Использование sql Server Management Studio
- •Хранимые процедуры
- •Примеры использования хранимых процедур
- •Лекция 08: Другие программируемые объекты ms sql Server Определение триггера в стандарте языка sql
- •Реализация триггеров в среде ms sql Server
- •Примеры использования триггеров
- •Курсоры
- •Запрос курсора
- •Обработка курсоров
- •Преимущества использования курсоров
- •Курсоры базовой таблицы
- •Статические курсоры
- •Последовательные курсоры
- •Последовательные курсоры «только для чтения»
- •Курсоры, управляемые набором ключей
- •Работа с объединениями
- •Правила выбора типа курсора
- •Получение блокировок
- •Неявное преобразование типа курсора
- •Лекция 09: Проектирование системы Microsoft sql Server
- •Системные требования
- •Системное приложение
- •Oltp (системы оперативной обработки транзакций)
- •Dss (системы поддержки принятия решений)
- •Системы пакетной обработки данных
- •Требования
- •Требования к уровню обслуживания
- •Производительность
- •Мощность
- •Обеспечение работоспособности
- •Размещение базы данных
- •Журнал транзакций
- •Файлы данных
- •Приложение
- •Архитектура
- •Производительность и масштабируемость
- •Проектирование системы безопасности
- •Уровни системы безопасности Система безопасности уровня сервера
- •Система безопасности уровня базы данных
- •Права собственности на объект
- •Лекция 10: Microsoft sql Server и Microsoft Cluster Services Разновидности отказов
- •Обзор mscs
- •Основные понятия
- •Компоненты кластера
- •Программное обеспечение mscs для управления кластером
- •Взаимосвязь между серверами
- •Разделяемая дисковая система
- •Подсистемы ввода-вывода
- •Внутренняя raid-система
- •Внешняя raid-система
- •Категории приложений, работающих с кластерами
- •Режимы mscs
- •Активно-пассивные кластеры
- •Активно-активные кластеры
- •Примеры кластеризованных систем
- •Пример 1 – система с высокой готовностью со статическим балансированием нагрузки
- •Пример 2 – система с «горячим резервированием» с максимальной готовностью
- •Пример 3 – кластеризация части сервера
- •Пример 4 – только виртуальные серверы, без переходов по отказам
- •Конфигурирование sql Server для работы на кластере
- •Планирование конфигурации
- •Задание времени восстановления
- •Конфигурирование sql Server для активно-пассивных кластеров
- •Конфигурирование sql Server для активно-активных кластеров
- •Лекция 11: Транзакции и блокировка транзакций
- •Что такое транзакция?
- •Acid-свойства
- •Атомарность
- •Согласованность
- •Изолированность
- •Поведение параллельных транзакций
- •Задание уровня изолированности
- •Устойчивость
- •Режимы транзакций
- •Режим автофиксации
- •Явный режим
- •Фиксирование транзакций
- •Создание вложенных транзакций
- •Неявный режим
- •Откаты транзакций
- •Автоматические откаты
- •Программируемые откаты
- •Точки сохранения
- •Блокировка транзакций
- •Возможности управления блокировками
- •Уровни блокировок
- •Режимы блокировки
- •Разделяемая блокировка
- •Блокировка изменений
- •Монопольная блокировка
- •Блокировка намерения
- •Блокировка схемы
- •Блокировка массовых изменений
- •Блокирование и взаимоблокировки
- •Лекция 12: Управление пользователями и системой безопасности
- •Разрешение удалённого доступа
- •Разрешение удалённых соединений
- •Обеспечение безопасности внешнего доступа
- •Управление доступом к экземплярам sql Server
- •Выбор режима проверки подлинности
- •Настройка режима проверки подлинности
- •Соединение с экземпляром sql Server
- •Предоставление доступа пользователям и группам Windows
- •Предоставление доступа именам входа sql Server
- •Принудительное применение политики паролей
- •Управление разрешениями для экземпляра
- •Получение информации о принадлежности к серверной роли
- •Запрет доступа пользователям
- •Рекомендации по управлению доступом
- •Применение схем и ролей. Общие принципы
- •Управление доступом в службах отчётов
- •Управление доступом в службах уведомлений
- •Управление доступом в интеграционных службах
- •Управление доступом в службах репликации
- •Управление доступом для sql Server Agent
- •Управление доступом для Database Mail
- •Управление доступом к базе данных с помощью протокола http
- •Лекция 13: Репликации
- •Что такое репликация базы данных?
- •Понятия репликации Компоненты репликации
- •Издатели
- •Дистрибьюторы
- •Подписчики
- •Типы репликации
- •Репликация моментальных снимков
- •Репликация транзакций
- •Репликация слиянием
- •Данные репликации
- •Публикации
- •Push-подписка и pull-подписка
- •Push-подписка (принудительная)
- •Pull-подписка (по запросу)
- •Агенты репликации
- •Snapshot Agent (Агент создания снимков состояния)
- •Репликация слиянием
- •Репликация моментальных снимков
- •Лекция 14: Средства автоматического администрирования
- •Средства автоматического конфигурирования sql Server
- •Динамическое управление памятью
- •Как действует динамическое управление памятью
- •Пул памяти
- •Параметры конфигурирования памяти sql Server
- •Другие параметры динамического конфигурирования
- •Параметр locks (блокировки)
- •Параметр recovery interval (интервал восстановления)
- •Параметр user connections (количество соединений с пользователями)
- •Статистика
- •Команда create statistics
- •Процедура sp_createstats
- •Команда update statistics
- •Процедура sp_autostats
- •Контрольные точки
- •Планы обслуживания баз данных
- •Использование мастера для создания плана обслуживания
- •Лекция 15: Автоматизация административных задач с помощью службы sqlServerAgent
- •Задания
- •Создание задания в Management Studio
- •Использование t-sql
- •Просмотр журнала выполнения задания
- •Использование Management Studio
- •Использование t-sql
- •Предупреждения
- •Протоколирование сообщений в журнале событий
- •Создание предупреждения о событии sql Server
- •Создание предупреждения о производительности sql Server
- •Операторы
- •Лекция 16: Резервное копирование Microsoft sql Server
- •Воспроизведение
- •Отказы системы
- •Отказы оборудования
- •Отказы программного обеспечения
- •Человеческие ошибки
- •Журнальное протоколирование в sql Server Журнал транзакций
- •Поток откладываемой записи
- •Последовательная запись в журнал
- •Размер журнала транзакций
- •Воспроизведение с помощью журнала транзакций
- •Свойства журнала транзакций
- •Непротоколируемые операции
- •Bulk copy и программа bcp
- •Текстовые операции
- •Контрольные точки
- •Операции контрольной точки
- •Конфигурирование интервала между контрольными точками
- •Методы резервного копирования
- •Полное резервное копирование
- •Разностное резервное копирование
- •Резервное копирование журнала транзакций
- •Резервное копирование группы файлов
- •Резервное копирование файла данных
- •Комбинирование разностных резервных копий и резервных копий журнала транзакций
- •Выполнение резервного копирования
- •Создание логических устройств резервного копирования
- •Создание устройств резервного копирования с помощью t-sql
- •Создание удалённого устройства резервного копирования
- •Резервное копирование с помощью Management Studio
- •Лекция 17: Полная модель восстановления
- •Модель восстановления с неполным протоколированием
- •Восстановление базы данных из резервных копий
- •Извлечение информации резервного копирования
- •Восстановление базы данных через интерфейс среды sql Server Management Studio
- •Восстановление базы данных при простой стратегии резервного копирования с использованием t-sql
- •Восстановление базы данных при полной стратегии резервного копирования с использованием t-sql
- •Восстановление системных баз данных
- •Восстановление базы данных master
- •Восстановление баз данных msdb и model
Ограничение foreign key
Ограничение FOREIGN KEY определяет внешний ключ который задаёт связь между двумя таблицами. Колонка или колонки внешнего ключа одной таблицы ссылаются на потенциальный ключ (одна или несколько колонок) в другой таблице. При вставке строки в таблицу с ограничением FOREIGN KEY значения, которые должны быть внесены в колонку или колонки, определённые как внешний ключ, сравниваются со значениями в потенциальном ключе ссылочной таблицы. Если ни одна из строк ссылочной таблицы не соответствует значениям во внешнем ключе, то вставка новой строки не выполняется. Но если значения внешнего ключа, которые нужно внести в таблицу, все же имеются в потенциальном ключе другой таблицы, то вставка новой строки будет выполнена. Допустимо значение NULL, в поле с ограничением FOREIGN KEY.
Проверка ограничений FOREIGN KEY происходит также в тех случаях, когда реализуется попытка обновить какую-либо строку в ссылочной таблице или в таблице с внешним ключом. Нельзя обновить какое-либо значение потенциального ключа или внешнего ключа, если это приведёт к нарушению ограничения. Существует одно исключение из этого правила, когда обновление ссылочной таблицы производится с помощью опции ON UPDATE CASCADE оператора T-SQL CREATE TABLE. Кроме того, ограничения FOREIGN KEY проверяются, если при удалении строк из ссылочной таблицы. Нельзя удалить строку из ссылочной таблицы, если строка какой-либо таблицы с внешним ключом (таблицы, содержащей ограничение FOREIGN KEY) содержит ссылку на значение в колонке внешнего ключа.
Иными словами, для каждой строки в таблице с внешним ключом должна существовать соответствующая строка в ссылочной таблице, и эту строку нельзя удалить, пока на неё имеется ссылка. Существует также исключение из этого правила: можно удалить строку из ссылочной таблицы с помощью опции ON DELETE CASCADE оператора T-SQL CREATE TABLE.
Внешний ключ может ссылаться только на те колонки, которые содержат в ссылочной таблице ограничение PRIMARY KEY или UNIQUE. При попытке создать внешний ключ, который ссылается на колонку, не являющуюся частью одного из этих ограничений SQL Server возвратит сообщение об ошибке. Кроме того, тип данных и размер колонки или колонок внешнего ключа должны совпадать со ссылочной колонкой или колонками.
Чтобы получить более ясное представление о внешних ключах, рассмотрим некоторые примеры. Сначала создадим таблицу с именем items, которая содержит ограничение PRIMARY KEY по колонке item_id, как в следующем операторе:
CREATE TABLE items (
item_name char(15) NOT NULL,
item_id smallint NOT NULL IDENTITY(1,1),
price smallmoney NULL,
item_desc varchar(30) NOT NULL DEFAULT 'none',
CONSTRAINT PK_item_id PRIMARY KEY (item_id)
)
GO
Затем создадим таблицу с именем inventory, содержащую ограничение FOREIGN KEY с именем FK_item_id, которое ссылается на колонку item_id в таблице items, как в следующем операторе:
CREATE TABLE inventory (
store_id tinyint NOT NULL,
item_id smallint NOT NULL,
item_quantity tinyint NOT NULL,
CONSTRAINT FK_item_id FOREIGN KEY (item_id)
REFERENCES items(item_id)
)
GO
Чтобы увидеть, каким образом связаны эти таблицы, создадим схему (диаграмму) базы данных (рис. 5.2). В данном примере items – это ссылочная таблица с потенциальным ключом item_id. Это единственно возможный потенциальный ключ, поскольку он является первичным ключом в данной таблице и эта таблица не содержит никаких ограничений UNIQUE. Таблица inventory содержит ограничение FOREIGN KEY, определённое по её колонке item_id. С помощью этого ограничения создаётся связь по внешнему ключу между этими двумя таблицами. Обе связанные колонки имеют тип данных smallint. Ограничение FOREIGN KEY в таблице inventory по колонке item_id гарантирует, что в колонку item_id нельзя ввести никакое значение, если этого значения нет в колонке item_id таблицы items. Иными словами, если товар отсутствует в таблице items, то он не может присутствовать в таблице inventory. Кроме того, из таблицы items нельзя удалить строку, если на неё имеется ссылка из какой-либо строки в таблице inventory. Иными словами, если какой-либо товар присутствует в таблице items и таблице inventory, этот товар нельзя удалить из таблицы items, пока он присутствует в таблице inventory. Таким образом, внешние ключи используются для поддержки согласованности базы данных.
рис. 5.2. Схема базы данных, где показана связь по внешнему ключу между таблицами items и inventory
Чтобы модифицировать ограничение FOREIGN KEY с помощью операторов T-SQL, необходимо сначала удалить старое ограничение и затем создать новое с помощью оператора ALTER TABLE. Этот метод действует аналогично модифицированию ограничения PRIMARY KEY. Ниже приводятся операторы для удаления исходного ограничения по таблице inventory и последующего добавления нового ограничения:
ALTER TABLE inventory
DROP CONSTRAINT FK_item_id
GO
ALTER TABLE inventory
ADD CONSTRAINT FK_item_id FOREIGN KEY (item_id)
REFERENCES items(item_id)
GO
Если добавляется ограничение FOREIGN KEY к существующей колонке таблицы, SQL Server проверяет существующие строки таблицы, чтобы убедиться в том, что для значений этой колонки (за исключением null-значений) имеются соответствующие значения в колонке с ограничением PRIMARY KEY или UNIQUE ссылочной таблицы. Чтобы создать ограничение FOREIGN KEY без проверки системой SQL Server совпадения с существующими значениями, следует использовать опцию WITH NOCHECK оператора ALTER TABLE, как это показано ниже:
ALTER TABLE inventory
WITH NOCHECK ADD CONSTRAINT FK_item_id
FOREIGN KEY (item_id)
REFERENCES items(item_id)
GO
Опция WITH NOCHECK препятствует тому, чтобы SQL Server проверял существующие строки таблицы, и это позволяет добавить соответствующее ограничение к таблице независимо от существующих значений. После добавления этого ограничения SQL Server обеспечивает целостность по внешнему ключу для новых строк.
Можно также активизировать или отключать использование ограничения FOREIGN KEY. Если необходимо ввести строку, которая не согласуется с существующим ограничением, то можно временно отключить это ограничение, ввести строку и затем снова активизировать ограничение. Ключевое слово NOCHECK указывает, что данное ограничение следует игнорировать (отключить), а ключевое слово CHECK указывает, что ограничение следует активизировать. Следующие операторы выполняют отключение и повторную активизацию ограничения FOREIGN KEY с помощью ключевых слов NOCHECK и CHECK:
ALTER TABLE inventory
NOCHECK CONSTRAINT FK_item_id --Отключает ограничение
GO
—Здесь должен быть оператор INSERT
GO
ALTER TABLE inventory
CHECK CONSTRAINT FK_item_id --Повторно активизирует ограничение
GO