- •Лекция №1 Информационные системы
- •Лекция № 2 Базы данных и стория появления бд
- •Основная концепция технологии бд:
- •Основные понятия курса (определения):
- •Характеристики субд
- •Основные свойства бд:
- •Лекция №3 Этапы проектирования бд Обобщенная архитектура субд
- •Этапы проектирования бд
- •Лекция №4 Модели данных
- •Реляционная модель данных (рмд)
- •Лекция №5
- •Рмд: языки манипулирования данными (ямд)
- •Лекция №6
- •Нормализация отношений
- •Определение фз
- •Лекция №7 Нормализация отношений (продолжение)
- •Лекция № 8 Платформа sql Server
- •Выпуски sql Server
- •Компоненты sql Server
- •Экземпляры sql Server
- •Системные базы данных
- •Лекция № 9 Файлы и файловые группы
- •Файловая группа по умолчанию
- •Физическая структура файлов данных
- •Страницы
- •Поддержка больших строк
- •Экстенты
- •Журнал транзакций и восстановление
- •Физическая архитектура журнала транзакций
- •Лекция № 10 Опции базы данных
- •Параметры сортировки (collation)
- •Модель восстановления (recovery)
- •Уровень совместимости (compatibility_level)
- •Автоматические
- •Восстановление
- •Состояние
- •Лекция № 11
- •Изменение настроек базы данных
- •Удаление базы данных
- •Лекция № 12 Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Создание таблиц
- •Изменение таблиц
- •Удаление таблиц
- •Системные функции
- •Строковые функции
- •Функции даты (времени)
- •Обновление данных
- •Лекция № 14 Создание индексов и управление индексами Структура хранения данных
- •Структуры кластеризованного индекса
- •Структуры некластеризованного индекса
- •Оптимизация индексов
- •Источники информации об индексах
- •Создание индексов
- •Вычисляемые столбцы
- •Изменение индексов
- •Восстановление индексов
- •Удаление индексов
- •Лекция № 15 Ограничения целостности данных Назначение
- •Типы ограничений целостности данных
- •Определение default значений
- •Ограничение not null
- •Ограничения check
- •Ограничения unique
- •Ограничения primary key
- •Ограничения foreign key
- •Ссылочная целостность
- •Индексирование ограничений foreign key
- •Количество ограничений foreign key в таблице
- •Ограничения столбцов и таблиц
- •Применение триггеров
- •Программирование триггеров
- •Создание триггеров
- •Изменение триггеров
- •Удаление триггеров
- •Лекция № 16 Представления Что такое представление?
- •Использование представлений
- •Источники информации о представлениях Обозреватель объектов sql Server Management Studio
- •Функции динамического управления
- •Создание предавлений
- •Изменение представлений
- •Удаление представлений
- •Обновление данных в представлении
- •Типы представлений Стандартные представления
- •Индексированные представления
- •Секционированные представления
- •Секционированные представления
- •Создание таблиц-элементов
- •Определение распределенных секционированных представлений
- •Правила таблиц
- •Правила столбцов
- •Правила столбцов секционирования
- •Индексированные представления
- •Создание индексированных представлений
- •Лекция № 17 Хранимые процедуры и функции Преимущества хранимых процедур
- •Источники информации о хранимых процедурах Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Перекомпиляция хранимых процедур
- •Преимущества определяемых пользователем функций
- •Источники информации о пользовательских функциях Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Типы определяемых пользователем функции
- •Возвращающие табличное значение определяемые пользователем функции
- •Определяемые пользователем встроенные функции
- •Концепция транзакций
- •Эффекты одновременного доступа
- •Блокировки и управление версиями строк
- •Типы управления одновременным доступом
- •Режимы блокировки
- •Взаимоблокировка
- •Отображение сведений о блокировках
- •Режимы транзакций
- •Автоматическая фиксация транзакций
- •Явные транзакции
- •Неявные транзакции
- •Распределенные транзакции
- •Уровни изоляции в ядре субд
Правила столбцов секционирования
Для секционирования может использоваться только один столбец, и он должен присутствовать в каждой таблице-элементе. Проверочные ограничения определяют данные, доступные в каждой таблице-элементе. Применяются следующие дополнительные правила:
Диапазон ключа проверочных ограничений в таблице не должен пересекаться с диапазонами любой другой таблицы. Любое значение столбца секционирования должно быть сопоставленным только с одной таблицей. Проверочные ограничения могут использовать только следующие операторы: BETWEEN, IN, AND, OR, <, <=, >, >=, =.
Столбец секционирования не может быть столбцом с автоматическим приращением, столбцом со значением по умолчанию или столбцом типа timestamp.
Столбец секционирования должен находиться в одинаковом порядковом расположении в списках выборки всех инструкций SELECT в представлении.
Столбец секционирования не может содержать значения NULL.
Столбец секционирования должен быть частью первичного ключа таблицы.
Столбец секционирования не может быть вычисляемым столбцом.
У столбца секционирования может быть только одно ограничение. Если задано несколько ограничений, то SQL Server игнорирует их все и не учитывает их при выяснении того, является ли это представление секционированным.
Ограничения для обновления столбца секционирования отсутствуют.
Столбец секционирования, соответствующий всем этим правилам, будет поддерживать все оптимизации, которые поддерживаются оптимизатором запросов.
Условия изменения данных в секционированных представлениях
На инструкции, изменяющие секционированные представления, распространяются следующие ограничения:
В инструкции INSERT должны быть указаны значения для всех столбцов представления, даже если в базовых таблицах-элементах действует ограничение DEFAULT для этих столбцов или они поддерживают значения NULL. Для тех столбцов таблиц-элементов, которые имеют значения по умолчанию, в инструкциях нельзя явно использовать ключевое слово DEFAULT.
Значение, вставляемое в столбец секционирования, должно отвечать хотя бы одному из базовых ограничений; в противном случае операция вставки завершится ошибкой из-за нарушения ограничений.
В предложении SET инструкции UPDATE в качестве значения не может быть указано ключевое слово DEFAULT, даже если столбец имеет значение DEFAULT, определенное в соответствующей таблице-элементе.
Столбцы PRIMARY KEY не могут быть изменены при помощи инструкции UPDATE, если таблицы-элементы включают столбцы типов text, ntext или image.
Столбец представления, который является столбцом идентификаторов в одной или нескольких таблицах-элементах, не может быть изменен при помощи инструкции INSERT или UPDATE.
Если одна из таблиц-элементов содержит столбец timestamp, представление не может быть изменено при помощи инструкции INSERT или UPDATE.
Если одна из таблиц-элементов содержит триггер, ограничение ON UPDATE CASCADE/SET NULL/SET DEFAULT или ограничение ON DELETE CASCADE/SET NULL/SET DEFAULT, то представление не может быть изменено.
Выполнение операций INSERT, UPDATE и DELETE для секционированного представления не допускается, если осуществляется самосоединение с тем же представлением или с какой-либо из таблиц-элементов, указанных в инструкции.
Массовый импорт данных в секционированное представление не поддерживается программой bcp и инструкциями BULK INSERT и INSERT... SELECT * FROM OPENROWSET(BULK...).
Детерминированные и недетерминированные функции
SQL Server 2008
SQL Server 2005
Детерминированные функции каждый раз возвращают один и тот же результат, если предоставлять им один и тот же набор входных значений и использовать одно и то же состояние базы данных. Недетерминированные функции могут возвращать каждый раз разные результаты, даже если предоставлять им один и тот же набор входных значений и использовать одно и то же состояние базы данных.
Определяемые пользователями функции имеют несколько свойств, определяющих способность ядра SQL Server Database Engine индексировать результаты функции как с помощью индексов вычисляемых столбцов, вызывающих функцию, так и с помощью индексированных представлений, которые на нее ссылаются. Детерминизм функции - одно из таких свойств. Например, в представлении нельзя создать кластеризованный индекс, если оно ссылается на какие-либо недетерминированные функции.
Детерминизм встроенных функций
На детерминизм встроенных функций повлиять нельзя. Каждая из них детерминирована или недетерминирована в зависимости от реализации в SQL Server.
Все статистические и строковые встроенные функции детерминированы
Следующие встроенные функции, отличные от функций статистических и строковых, всегда детерминированы.
ABS |
DATEDIFF |
POWER |
ACOS |
DAY |
RADIANS |
ASIN |
DEGREES |
ROUND |
ATAN |
EXP |
SIGN |
ATN2 |
FLOOR |
SIN |
CEILING |
ISNULL |
SQUARE |
COALESCE |
ISNUMERIC |
SQRT |
COS |
LOG |
TAN |
COT |
LOG10 |
YEAR |
DATALENGTH |
MONTH |
|
DATEADD |
NULLIF |
|
Следующие функции не всегда детерминированы, их можно использовать в индексированных представлениях или индексах вычисляемых столбцов, только если они заданы детерминированным образом.
CAST |
Детерминирована, кроме случаев использования с datetime, smalldatetime или sql_variant. |
CONVERT |
Детерминирована, кроме следующих случаев:
|
CHECKSUM |
Детерминирована, за исключением CHECKSUM(*). |
ISDATE |
Детерминирована, только если используется с функцией CONVERT, при этом задан аргумент стиля CONVERT. |
RAND |
Функция RAND детерминирована, только если аргумент seed определен. |
Все функции конфигурации, курсора, метаданных, безопасности и системные статистические - недетерминированные.
Функции, вызывающие расширенные хранимые процедуры, недетерминированы, так как расширенные хранимые процедуры могут оказать на базу данных побочное действие. Побочные действия - это такое изменение глобального состояния базы данных, как обновление таблицы, внешнего сетевого ресурса или файла.