ТИПОВОЙ ЗАПРОС

Индекс считается неуникальным, если он вызывает продавца, в snum столбце таблицы Заказчиков:
SELECT iname, iowner, tname, cnumber, isunique FROM SYSTEMINDEXES WHERE iname = 'salesperson';
Вывод для этого запроса показывается в Рисунке 24.4.
iname iowner tname cnumber isunique
salesperson Stephan Customers 5 N

Рисунок 24.4: Строка из таблицы SYSTEMINDEXES

SYSTEMUSERAUTH - ПОЛЬЗОВАТЕЛЬСКИЕ И СИСТЕМНЫЕ ПРИВИЛЕГИИ В БАЗЕ ДАННЫХ

Имена столбцов для SYSTEMUSERAUTH и их описание, следующее:
СТОЛБЦЫ ОПИСАНИЕ
username Идентификатор ( ID ) доступа пользователя
password Пароль пользователя вводимый при регистрации
resource Где пользователь имеет права RESOURCE
dba Где пользователь имеет права DBA

Мы будем использовать простую схему системных привилегий, где были представлены три системных привилегии - CONNECT( ПОДКЛЮЧИТЬ ), RESOURCE( РЕСУРСЫ ) и DBA. Все пользователи получают CONNECT по умолчанию при регистрации, поэтому он не описан в таблице выше. Возможные состояния столбцов resource и dba могут быть - Y ( Да, пользователь имеет привилегии) или - No (Нет, пользова- тель не имеет привилегий). Пароли (password) доступны только высоко привилегированным пользователям, если они существуют. Следовательно запрос этой таблицы можно вообще делать только для информации относительно привилегий системы и пользователей.
ТИПОВОЙ ЗАПРОС Чтобы найти всех пользователей которые имеют привилегию RESOURCE, и увидеть какие из них - DBA, вы можете ввести следующее условие:
SELECT username, dba FROM SYSTEMUSERAUTH WHERE resource = 'Y';
Вывод для этого запроса показывается в Рисунке 24.5.

SYSTEMTABAUTH - ПРИВИЛЕГИИ ОБЪЕКТА КОТОРЫЕ НЕ ОПРЕДЕЛЯЮТ СТОЛБЦЫ

Здесь показаны имена столбцов в таблице SYSTEMTABAUTH и их описание:
COLUMN ОПИСАНИЕ
username Пользователь который имеет привилегии
grantor Пользователь который передает привилегии по имени пользователя
tname Имя таблицы в которой существуют привилегии
owner Владелец tname
selauth Имеет ли пользователь привилегию SELECT
insauth Имеет ли пользователь привилегию INSERT
delauth Имеет ли пользователь привилегию DELETE

Возможные значения для каждой из перечисленных привилегий объекта ( имена столбцов которых окончиваются на auth ) - Y, N, и G. G указывает что пользователь имеет привилегию с возможностью передачи привилегий. В каждой строке, по крайней мере один из этих столбцов должен иметь состояние отличное от N (другими словами, иметь хоть какую-то привилегию ).
username dba
Diane N
Adrian Y

Рисунок 24 .5: Пользователи которые имеют привилегию RESOURCE

Первые четыре столбца этой таблицы составляют первичный ключ. Это означает что каждая комбинация из tname, владелец-пользователь ( не забудьте, что две различные таблицы с различными владельцами могут иметь одно и тоже имя ), пользователь и пользователь передающий права ( гарантор ), должна быть уникальной. Каждая строка этой таблицы содержит все привилегии ( которые не являются определенным столбцом ), предоставляются одним определенным пользователем другому определенному пользователю в конкретном объекте. UPDATE и REFERENCES, являются привилегиями, которые могут быть определенными столбцами, и находиться в различных таблицах каталога. Если пользователь получает привилегии в таблице от более чем одного пользователя, такие привилегии могут быть отдельными строками созданными в этой таблице. Это необходимо для каскадного отслеживания при вызове привилегий.
ТИПОВОЙ ЗАПРОС.
Чтобы найти все привелегии SELECT, INSERT, и DELETE, которые Adrian предоставляет пользователям в таблице Заказчиков, вы можете ввести следующее ( вывод показан в Рисунке 24.6 ):
SELECT username, selauth, insauth, delauth FROM SYSTEMTABAUTH WHERE grantor = 'Adrian' ANDtname = 'Customers';
username selauth insauth delauth
Claire G Y N
Norman Y Y Y

Рисунок 24. 6: Пользователи получившие привилегии от Adrian

Выше показано, что Adrian предоставил Claire привилегии INSERT и SELECT в таблице Заказчиков, позднее предоставив ей права на передачу привилегий. Пользователю Norman, он предоставил привелегии SELECT, INSERT, и DELETE, но не дал возможность передачи привилегий ни в одной из них. Если Claire имела привилегию DELETE в таблице Заказчиков от какого-то другого источника, в этом запросе это показано не будет.

SYSTEMCOLAUTH СТОЛБЦЫ

СТОЛБЦЫ ОПИСАНИЕ
username Пользователь который имеет привилегии
grantor Пользователь который предоставляет привилегии другому пользователю
tname Имя таблицы в которой существуют привилегии
cname Имя столбца в котором существуют привилегии
owner Владелец tname
updauth Имеет ли пользователь привилегию UPDATE в этом столбце
refauth Имеет ли пользователь привилегию REFERENCES в этом столбце

Столбцы updauth и refauth могут быть в состоянии Y, N, или G; но не могут быть одновременно в состоянии N для одной и той же строки. Это - первые пять столбцов таблицы, которы не составляют первичный ключ. Он отличается от первичного ключа SYSTEMTABAUTH в котором содержится поле cname, указывающее на определенный столбец обсуждаемой таблицы для которой применяются одна или обе привилегии. Отдельная строка в этой таблице может существовать для каждого столбца в любой данной таблицы в которой одному пользователю передаются превилегии определенного столбца с помощью другого пользователя. Как и в случае с SYSTEMTABAUTH та же привилегия может быть описана в более чем одной строке этой таблицы если она была передана более чем одним пользователем.
ТИПОВОЙ ЗАПРОС.
Чтобы выяснить, в каких столбцах какой таблицы вы имеете привилегию REFERENCES, вы можете ввести следующий запрос ( вывод показывается в Рисунке 24.7 )
SELECT owner, tname, cname FROM SYSTEMCOLAUTH WHERE refauth IN ('Y', 'G') AND username = USER ORDER BY 1, 2;
который показывает, что эти две таблицы, которые имеют различных владельцев, но одинаковые имя, в действительности, совершенно разные таблицы ( т.е. это не как два синонима для одной таблицы ).
owner tname cname
Diane Customers cnum
Diane Salespeople sname
Diane Salespeople sname
Gillan Customers cnum

Рисунок 24. 7: Столбцы в пользователь имеет привилегию INSERT

SYSTEMSYNONS - СИНОНИМЫ ДЛЯ ТАБЛИЦ В БАЗЕ ДАННЫХ

Это - имена столбцов в таблице SYSTEMSYNONS и их описание:
СТОЛБЦЫ ОПИСАНИЕ
synonym Имя синонима
synowner Пользователь, который является владельцем синонима ( может быть PUBLIC (ОБЩИЙ))
tname Имя таблицы используемой владельцем
tabowner Имя пользователя который является владельцем таблицы
ТИПОВОЙ ЗАПРОС.
Предположим, что Adrian имеет синоним Clients для таблицы Заказчиков принадлежащей Diane, и что имеется общий синоним Customers для этой же таблицы. Вы делаете запрос таблицы для всех синонимов в таблице Заказчиков ( вывод показывается в Рисунке 24.8 ):
SELECT * FROM SYSTEMSYNONS WHERE tname = 'Customers';
synonym synowner tname tabowner
Clients Adrian Customers Diane
Customers PUBLIC Customers Diane

Рисунок 24.8: Синонимы для таблицы Заказчиков