|
|
|
|
|
|
Продолжение табл.7 |
Название |
|
Назначение представления |
Название столбца |
|
Назначение столбца |
|
представления |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
CREATETABAUTH |
|
привилегия CREATETAB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BINDADDAUTH |
|
привилегия BINDADD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CONNECTAUTH |
|
привилегия CONNECT |
|
|
|
|
|||
SCHEMAAUTH |
|
назначения привилегий схемы |
GRANTOR |
|
кто дал привилегию |
|
|
|
|
|
|
|
|
|
|
|
|
GRANTEE |
|
кому дана привилегия |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRANTEETYPE |
|
пользователю/группе |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCHEMANAME |
|
имя схемы |
|
|
|
|
|
|
|
|
|
|
|
ALTERINAUTH |
|
привилегия ALTERIN |
|
|
|
|
|
|
|
|
|
|
|
CREATINAUTH |
|
привилегия CREATIN |
|
|
|
|
|
|
|
|
|
|
|
DROPINAUTH |
|
привилегия DROPIN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TABAUTH |
|
назначения |
привилегий |
GRANTOR |
|
кто дал привилегию |
|
|
таблиц и представлений |
|
|
|
|
|
|
|
|
|
||
|
|
GRANTEE |
|
кому дана привилегия |
||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
GRANTEETYPE |
|
пользователю/группе |
|
|
|
|
|
|
|
|
|
|
|
TABSCHEMA |
|
имя схемы |
|
|
|
|
|
|
|
|
|
|
|
TABNAME |
|
имя таблицы |
|
|
|
|
|
|
|
34
Окончание табл. 7
Название
представления
COLAUTH
Назначение представления |
|
Название столбца |
|
Назначение столбца |
||
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CONTROLAUTH |
|
привилегия CONTROL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ALTERAUTH |
|
привилегия ALTER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DELETEAUTH |
|
привилегия DELETE |
|
|
|
|
|
|
|
|
|
|
|
INSERTAUTH |
|
привилегия INSERT |
|
|
|
|
|
|
|
|
|
|
|
UPDATEAUTH |
|
привилегия UPDATE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECTAUTH |
|
привилегия SELECT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
REFAUTH |
|
привилегия REFERENCE |
|
|
|
|
|
|
|
|
|
|
|
INDEXAUTH |
|
привилегия INDEX |
|
|
|
|
|
||
назначения |
привилегий |
для |
GRANTOR |
|
кто дал привилегию |
|
столбцов |
таблиц |
|
и |
|
|
|
|
GRANTEE |
|
кому дана привилегия |
|||
представлений |
|
|
|
|||
|
|
|
|
|
||
|
|
|
|
|
||
|
|
GRANTEETYPE |
|
пользователю/группе |
||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TABSCHEMA |
|
имя схемы |
|
|
|
|
|
|
|
|
|
|
|
TABNAME |
|
имя таблицы |
|
|
|
|
|
|
|
|
|
|
|
COLNAME |
|
имя столбца |
|
|
|
|
|
|
|
|
|
|
|
PRIVTYPE |
|
привилегия: UPDATE/REFERENCE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRANTABLE |
|
возможность передачи |
|
|
|
|
|
|
|
35
Контрольные вопросы
1.Объяснить принцип работы написанного
триггера.
2.Какие бывают типы триггеров?
3.Когда может срабатывать триггер?
4.В каком порядке срабатывают триггеры?
5.Можно ли менять порядок срабатывания
триггеров?
6.Сработает ли триггер, если оператор, выполненный пользователем, не затрагивает ни одну строку таблицы?
Дополнительные вопросы
1.Исправить ошибки в работе триггера.
2.Модифицировать триггер каким-либо образом.
36
Лабораторная работа № 9 Использование индексов и средств оптимизации запросов
Цель работы
Освоение основных методов и средств оптимизации запросов в средах СУБД Microsoft SQL Server.
Темы для предварительной проработки
Использование |
индексов для ускорения |
выполнения |
запросов. |
|
|
Визуальные |
интерфейсы |
управления |
индексами Microsoft Enterprise Manager.
Средства оптимизации запросов, предоставляемые средой Microsoft SQL Server.
Выполнение работы |
|
|
1. Подготовить рабочие наборы данных: |
|
|
Запустить Microsoft |
Query |
Analyzer, |
подключиться к пользовательской базе данных. |
||
Для того, чтобы использование индексов было |
||
целесообразным, |
необходим |
проводить |
индексацию существенных объемов данных в таблицах. Для получения этих наборов данных нужно скопировать таблицы Customers, Orders, Order Details и Products из демонстрационной базы данных Northwind в пользовательскую базу данных с помощью следующих SQL-операторов (выполняемых в пользовательской базе данных):
SELECT * INTO Customers FROM Northwind..Customers
DECLARE @count INT SELECT @count = 10 WHILE @count >= 0
37
BEGIN
INSERT INTO Customers SELECT * FROM Northwind..Customers
SELECT @count = @count - 1 END
SELECT * INTO Orders FROM Northwind..Orders
SELECT * INTO OrderDetails FROM
Northwind.."Order Details"
SELECT * INTO Products FROM Northwind..Products SELECT @count = 10
WHILE @count >= 0 BEGIN
INSERT INTO Products (ProductName,SupplierID,CategoryID,QuantityPerUnit,
UnitPrice,UnitsInStock,UnitsOnOrder,
ReorderLevel,Discontinued)
SELECT ProductName,SupplierID,CategoryID, QuantityPerUnit,UnitPrice,UnitsInStock,
UnitsOnOrder,ReorderLevel,Discontinued FROM Northwind..Products
SELECT @count = @count - 1 END
Обратите внимание, что здесь используется цикл для увеличения количества записей в таблицах Customers и Products. Хотя это и некорректная операция в плане того, что мы дублируем первичные ключи и другую уникальную информацию, но в данном случае нас интересуют в первую очередь большие объемы информации в таблице, а не строгое следование ограничениям целостности.
Во всех заданиях лабораторной работы будут использоваться скопированные в предыдущем пункте таблицы
38