- •Трехуровневая архитектура
- •Основные утилиты
- •Анализатор запросов Query Analyzer
- •Расширенный синтаксис оператора создания таблиц create table
- •Ограничения – эффективное средство обеспечения целостности данных.
- •Типы ограничений
- •Ограничения ключей
- •Ограничения первого ключа
- •Ограничения внешнего ключа
- •Добавление внешнего ключа в существующую таблицу:
- •Ограничение уникальности
- •Ограничение проверки
- •Ограничения стандартных значений
- •Объекты sql Server – правила и стандартные значения
- •Сравнение средств поддержки целостности данных
- •Системы безопасности субд sql Server
- •Компоненты структуры безопастности
- •Серверные роли и роли бд, определяемые пользователем роли
- •Фиксированные роли сервера
- •Фиксированные роли бд
- •Индексация в субд
Фиксированные роли бд
-
db_owner
Полный доступ к БД(множество пользователей, обладающих правами владельца БД).
db_accessadmin
Создание и удаление пользователей БД из числа уже имеющихся
db_securityadmin
Не дает возможность создавать новых пользователей , но позволяет управлять разрешениями, ролями и членами ролей
db_ddladadmin
Выполнение любых команд DDL(но нельзя GRANT, DENY и REVOKEN)
db_backupoperator
Выполнение команд модуля DBCC(DBCC CHECKPOINT, DBCC DBREINDEX, и т п), а также команды BACKUP - резервного копирования БД
db_datareader
Возможность чтения данных во всех таблицах БД
db_datawriter
Право применения INSERT, UPDATE, DELETE в любой таблице БД
db_denydatareader
Запрет просмотра данных в любой таблице БД
db_denydatawriter
Запрет применения INSERT, UPDATE, DELETE во всех таблице БД
В отличае от сервера БД могут иметь пользовательские роли и роли приложения, которые создает администратор с помощью Enterprise Manager или Transact-SQL индивидуально для групп пользователей и групп приложений, наделяя их необходимыми правми доступа к конкретной БД.
Создание пользовательской роли БД:
Sp_addrole [@rolename=]<’имя_роли’>[,[@ownername=]<’владелец_роли’>]
В любую роль БД можно включать:
Пользователь сервера
Роли сервера
Пользователей Windows
Группы пользователей Windows
Добавление пользователей
Sp_addroleemember [@rolename=]<’имя_роли’>,
[@membername=]<’имя_пользователя’>]
EXES Sp_addrolemember ‘OutTestRole’, ‘RealUser”
Удаление пользователей из роли:
EXES Sp_droprolemember ‘OutTestRole’, ‘RealUser”
Удаление роли
EXES Sp_droprolemember ‘OutTestRole’
РОЛИ ПРИЛОЖЕНИЙ:
Роль приложения позволяет выдавать права доступа не к конкретному пользователю или их группе, а приложению в целом.
Они не могут использоваться для подключения к БД.
Получив доступ к данным под бюджетом другой учетной записи, приложение активизирует роль приложения.
Далее в сеансе работы приложение будет обладать правами данной роли.
Индексация в субд
Понятие индекса
Основная проблема в СУБД – это поиск нужных данных за минимальное время.
Быстрый поиск может быть выполнен в случае, если данные отсортированы.
Сортировка данных в таблице невозможно, т.к. критериев поиска моет быть несколько.
Поэтому для таблицы с данными создаются специальные таблицы для каждого критерия поиска, которые называются ИНДЕКСЫ.
Индекс – это структура данных для быстрого поиска записей в таблице по значению ключа.
МЕТОДЫ ОРГАНИЗАЦИИ ИНДЕКСА
Первичный ключ
Плотным индексом(некластерный индекс) Индексно прямой файл
Неплотным индексом(кластерный индекс) Индексно последовательный файл
Б-деревья
Вторичный ключ
Инвертируемые списки
Кластерный индекс
Алгоритм поиска данных
Алгоритм удаления записи:
Начало => поиск индексного блока => удаление записи в индексном блоке => запись индексного блока => чтение блока основного файла => пометить запись на удаление в блоке => запись блока основного файла => конец
Некластерный индекс
Алгоритм добавления данных
Начало = поиск индексного блока = чтение блока основной области = добавление записи в блок основной области = переполнение – (да) перестроение индекса - (нет) запись блока основной области = конец.
Алгоритм удаления записи
Начало = поиск индексного блока = чтение блока основной памяти = удаление записи в блоке основной области = запись блока основной области = конец.
Индекс Б-дерево
Со второго уровня используется неплотный индекс
ОПЕРАТОР СОЗДАНИЯ ИНДЕКСА.
СУБД всегда создает индекс для первичного ключа таблицы.
Для создания индексов для других полей используется оператор SQL.
CREATE [UNIQUE] INDEX имя_индекса
ON имя_таблицы (имя_столбци [ASC|DESC][….])
Пример. Создать индекс для таблицы ЗАКАЗ по вторичному ключу
CREATE INDEX Заказ_FK_инд
ON Заказ (MFR, КодТов)
В каждой СУБД оператор создания индексов содержит дополнительные предложения специфические для каждой СУБД.
ОПЕРАТОР СОЗДАНИЯ ИНДЕКСА
Оператор для создания индекса в transact – SQL
CREATE [UNIDUE] создание уникального индекса
[CLASTEED|NOCLASTERED] создание неплотного или плотного индекса
INDEX имя_индекса
ON {имя_таблицы|имя_представления}
(имя_столбца[ASC|DESC][….]) по возрастанию или убыванию
WITH
[<параметры>][….n]]]
[ON имя_файла_группы] расположение индекса в файлах ОС БД
<параметры> - это резервирование на каждой странице индекса
свободного пространства
{PAD_INDEX|FILLFACTOR = %запол. | степень заполнения свободного пространства.
IGNORE_DUP_KEY|DROP_EXISTING|
STATIDTICS_NORECOMPUTE|SORT_IN_TEMPDB
}
……………………………………………………………………………………………………
Базы данных. Экзамен
Боброва
Наталья Леонидовна Страница