|
Программирование >> Понятие sql
ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ В ТАБЛИЦАХ КАТАЛОГА Поскольку 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 (имя таблицы), 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 ; и этот пустой комментарий затрет предыдущий.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |