Программирование >>  Понятие sql 

1 ... 66 67 68 [ 69 ] 70 71 72 ... 95


ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ В ТАБЛИЦАХ

КАТАЛОГА

Поскольку SYSTEMCATALOG - это таблица, вы можете использовать ее в представлении. Фактически можно считать, что имеется такое представление с именем SYSTEMTABLES.

Это представление SYSTEMCATALOG содержит только те таблицы, которые входят в системный каталог; это обычно таблицы базы данных, типа таблицы Продавцов, которые показаны в SYSTEMCATALOG, но не в SYSTEMTABLES.

Давайте предположим, что только таблицы каталога являются собственностью пользователя 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 Одно небольшое добавление к этому позволит каждому пользователю просматривать таблицу SYSTEMCOLUMNS для столбцов из его собственных таблиц. Сначала, давайте рассмотрим ту часть таблицы SYSTEMCOLUMNS, которая описывает наши типовые таблицы (другими словами, исключим сам каталог):

tname

cname

datatype cnumber tabowner

Salespeople

snum

integer

Diane

Salespeople

sname

char

Diane

Salespeople

city

char

Diane

Salespeople

comm

decimal

Diane

Customers

cnum

integer

Claire



Customers

cname

char

Claire

Customers

city

char

Claire

Customers

rating

integer

Claire

Customers

snum

integer

Claire

Orders

onum

integer

Diane

Orders

odate

date

Diane

Orders

decimal

Diane

Orders

cnum

integer

Diane

Orders

snum

integer

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.

=============== SQL Execution Log ===============

SELECT tname, remarks FROM SYSTEMCATALOG WHERE tname = Orders AND owner = Chris

tname remarks

Orders Current Customers Orders

Рисунок 24.2: Коментарий в SYSTEMCATALOG

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 ;

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



1 ... 66 67 68 [ 69 ] 70 71 72 ... 95

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика