Использование представлений в таблицах каталога

Поскольку SYSTEMCATALOG — это таблица, вы можете использовать ее в представлении. Фактически можно считать, что имеется такое представление с именем SYSTEMTABLES. Это представление SYSTEMCATALOG содержит только те таблицы, которые входят в системный каталог; это обычно таблицы базы данных, типа таблицы Продавцов, которые показаны в SYSTEMCATALOG, но не в SYS- TEMTABLES. Давайте предположим, что только таблицы каталога являются собственностью пользователя SYSTEM. Если вы захотите, вы можете определить другое представление, которое бы специально исключало таблицы каталога из вы- вода:
CREATE VIEW Datatables AS SELECT * FROM SYSTEMCATALOG WHERE owner < > ‘SYSTEM’;
РАЗРЕШИТЬ ПОЛЬЗОВАТЕЛЯМ ВИДЕТЬ(ТОЛЬКО) ИХ СОБСТВЕННЫЕ ОБЪЕКТЫ
Кроме того, имеются другое Использование представлений каталога. Предположим вам нужно, чтобы каждый ПОЛЬЗОВАТЕЛЬ был способен сделать запрос каталога, для получения информации только из таблиц, которыми он владеет. Пока значение USER, в команде SQL постоянно для ID доступа пользователя выдающего команду, оно может всегда быть использоваться, чтобы давать доступ пользователям только к их собственным таблицам. Вы можете, для начала создать следующее представление:
CREATE VIEW Owntables AS SELECT * FROM SYSTEMCATALOG WHERE Owner = USER;

Теперь вы можете предоставить всем пользователям доступ к этому представлению:
GRANT SELECT ON Owntables TO PUBLIC;

Каждый ПОЛЬЗОВАТЕЛЬ теперь способен выбирать (SELECT) только те строки из SYSTEMCATALOG, владельцем которых он сам является.
ПРЕДСТАВЛЕНИЕ SYSTEMCOLUMNS Одно небольшое добавление к этому, позволит каждому пользователю просматривать таблицу SYS- TEMCOLUMNS для столбцов из его собственных таблиц. Сначала, давайте рассмотрим ту часть таблицы SYSTEMCOLUMNS, которая описывает наши типовые таблицы( другими словами, исключим сам каталог):

tname
cname
datatype
cnumber
tabowner

Salespeople
snum
integer

1

Diane

Salespeople
sname
char

2

Diane

Salespeople
city
char

3

Diane

Salespeople
comm
decimal

4

Diane

Customers
cnum
integer

1

Claire

Customers
cname
char

2

Claire

Customers
city
char

3

Claire

Customers
rating
integer

4

Claire

Customers
snum
integer

5

Claire

Orders
onum
integer

1

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

SYSTEMCATALOG
SYSTEM

8

B
 

Некоторые SQL реализации, будут обеспечивать вас большим количеством данных чем показано в этих столбцах, но показанное являются основой для любых реализаций.
Для иллюстрации процедуры предложенной в начале этого раздела, имеет- с способ, позволяющий каждому пользователю видеть информацию SYS- TEMCOLUMNS только для принадлежащих ему таблиц:
CREATE VIEW Owncolumns AS SELECT * FROM SYSTEMCOLUMNS WHERE tabowner = USER; GRANT SELECT ON Owncolumns TO PUBLIC;

 
 

‹ Типичный системный каталог
Вверх
Комментарий в содержании каталога ›

Оцените статью
Айтистанция
Добавить комментарий

Adblock
detector