KnigaRead.com/

Мартин Грубер - Понимание SQL

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Мартин Грубер, "Понимание SQL" бесплатно, без регистрации.
Перейти на страницу:

Diane

Orders

odate

date

2

Diane

Orders

amt

decimal

3

Diane

Orders

cnum

integer

4

Diane

Orders

snum

integer

5

Diane


Как вы можете видеть, каждая строка этой таблицы показывает столбец таблицы в базе данных. Все столбцы данной таблицы должны иметь разные имена, также как каждая таблица должна иметь данного пользователя, и наконец все комбинации пользователей, таблиц, и имен столбцов должны различаться между собой.

Следовательно табличные столбцы: tname (имя таблицы ), tabowner (владелец таблицы ), и cname (имя столбца ), вместе составляют первичный ключ этой таблицы. Столбец datatype( тип данных ) говорит сам за себя. Столбец cnumber (номер столбца ) указывает на местоположении этого столбца внутри таблицы. Для упрощения, мы опустили параметры длины столбца, точности, и масштаба.

Для справки, показана строка из SYSTFMCATALOG которая ссылается к этой таблице:


tname

owner

numcolumns

type

CO

SYSTEMCOLUMNS

System



8

B


Некоторые SQL реализации, будут обеспечивать вас большим количеством данных чем показано в этих столбцах, но показанное являются основой для любый реализаций.

Для иллюстрации процедуры предложенной в начале этого раздела, имеется способ, позволяющий каждому пользователю видеть информацию SYSTEMCOLUMNS только для принадлежащих ему таблиц:


CREATE VIEW Owncolumns

AS SELECT *

FROM SYSTEMCOLUMNS

WHERE tabowner=USER;


GRANT SELECT ON Owncolumns TO PUBLIC;


КОММЕНТАРИЙ В СОДЕРЖАНИИ КАТАЛОГА

Большинство версий SQL, позволяют вам помещать комментарии(ремарки) в специальные столбцы пояснений таблиц каталогов SYSTEMCATALOG и SYSTEMCOLUMNS, что удобно, так как эти таблицы не всегда могут объяснить свое содержание. Для простоты, мы пока исключали этот столбец из наших иллюстраций.

Можно использовать команду COMMENT ON со строкой текста, чтобы пояснить любую строку в одной из этих таблиц. Состояние - TABLE, для комментирования в SYSTEMCATALOG, и текст - COLUMN, для SYSTEMCOLUMNS.

Например:


COMMENT ON TABLE Chris.Orders

IS 'Current Customer Orders';


Текст будет помещен в столбец пояснений SYSTEMCATALOG. Обычно, максимальная длина таких пояснений - 254 символов.

Сам комментарий, указывается для конкретной строки, одна с tname=Orders, а другая owner=Chris. Мы увидим этот комментарий в строке для таблицы Порядков в SYSTEMCATALOG:


SELECT tname, remarks

FROM SYSTEMCATALOG

WHERE tname='Orders'

AND owner='Chris';


Вывод для этого запроса показывается в Таблица 24.2.

SYSTEMCOLUMNS работает точно так же. Сначала, мы создаем комментарий


COMMENT ON COLUMN Orders.onum

IS 'Order #';


затем выбираем эту строку из SYSTEMCOLUMNS:


SELECT cnumber, datatype, cname, remarks

FROM SYSTEMCOLUMNS

WHERE tname='Orders'

AND tabowner='Chris'

AND cname=onum;


Вывод для этого запроса показывается в Таблице 24.3.

Чтобы изменить комментарий, вы можете просто ввести новую команду COMMENT ON для той же строки. Новый комментарий будет записан поверх старого. Если вы хотите удалить комментарий, напишите поверх него пустой комментарий, подобно следующему:


COMMENT ON COLUMN Orders.onum

IS ";


и этот пустой комментарий затрет предыдущий.


SQL Execution Log

SELECT tname, remarks FROM SYSTEMCATALOG

WHERE tname='Orders' AND owner='Chris'


tname

remarks

Orders

Current Customers Orders


Таблица 24.2: Коментарий в SYSTEMCATALOG


SQL Execution Log

SELECT cnumber, datatype, cname, remarks

FROM SYSTEMCOLUMNS WHERE tname='Orders' AND tabowner='Chris'

AND cname='onum'

cnumber

datatype

cname

remarks

1

integer

onum

Orders #


Таблица 24.3: Коментарий в SYSTEMCOLUMNS

ОСТАЛЬНОЕ ИЗ КАТАЛОГА

Здесь показаны оставшиеся из ващих системных таблиц определения, с типовым запросом для каждого:


SYSTEMINDEXES - ИНДЕКСАЦИЯ В БАЗЕ ДАННЫХ


Имена столбцов в таблице SYSTEMINDEXES и их описания - следующие:


СТОЛБЦЫ

ОПИСАНИЕ

iname

Имя индекса (используемого для его исключения )

iowner

Имя пользователя который создал индекс

tname

Имя таблицы которая содержит индекс

cnumber

Номер столбца в таблице

tabowner

Пользователь который владеет таблицей содержащей индекс

numcolumns

Число столбцов в индексе

cposition

Позиция текущего столбца среди набора индексов

isunique

Уникален ли индекс (Y или N )


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

Индекс считается неуникальным, если он вызывает продавца, в snum столбце таблицы Заказчиков:


SELECT iname, iowner, tname, cnumber, isunique

FROM SYSTEMINDEXES

WHERE iname='salesperson';


Вывод для этого запроса показывается в Таблице 24.4.


SQL Execution Log

SELECT iname, iowner, tname, cnumber, isunique

FROM SYSTEMINDEXES WHERE iname='salespeople';

iname

iowner

tname

cnumber

isunique

salesperson

Stephan

Customers

5

N


Таблица 24.4: Строка из таблицы SYSTEMINDEXES

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

Имена столбцов для SYSTEMUSERAUTH и их описание, следующее:


Столбцы

Описание

username

Идентификатор (ID ) доступа пользователя

password

Пароль пользователя вводимый при регистрации

resource

Где пользователь имеет права RESOURCE

dba

Где пользователь имеет права DBA


Мы будем использовать простую схему системных привилегий, которая представлена в Главе 22, где были представлены три системных привилегии - 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 (другими словами, иметь хоть какую-то привилегию).


SQL Execution Log

SELECT username, dba FROM SYSTEMUSERAUTH

WHERE resource='Y' ;


username

dba

Diane

N

Adrian

Y


Таблица 24 .5: Пользователи которые имеют привилегию RESOURCE

Первые четыре столбца этой таблицы составляют первичный ключ. Это означает что каждая комбинация из tname, владелец-пользователь (не забудьте, что две различные таблицы с различными владельцами могут иметь одно и тоже имя ), пользователь и пользователь передающий права(гарантор ), должна быть уникальной. Каждая строка этой таблицы содержит все привилегии (которые не являются определенным столбцом ), предоставляются одним определенным пользователем другому определенному пользователю в конкретном объекте. UPDATE и REFERENCES, являются привилегиями, которые могут быть определенными столбцами, и находиться в различных таблицах каталога. Если пользователь получает привилегии в таблице от более чем одного пользователя, такие привилегии могут быть отдельными строками созданными в этой таблице. Это необходимо для каскадного отслеживания при вызове привилегий.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*