Программирование >>  Sql: полное руководство 

1 ... 126 127 128 [ 129 ] 130 131 132 ... 264


Имя столбца Тип данных Информация

READONLY CHAR(l) Y, если представление доступно только для чтения,

N - в противном случае

VALID CHAR(l) Y, если определение предстаьпения является коррект-

ным, N - в противном случае

FUNC PATHF VARCHAR(254) Путь К каталогу файловой системы, необходимый для

разрешения ссылок на функции в представлении

TEXT VARCHAR (3600) Текст определения Представления ( SELECT ... )

В таблице syscat.viewdep в DB2 (табл. 16.7) содержится информация о зависимости представления от других таблиц и представлений. Для каждого отношения зависимости отводится одна строка, поэтому представление с тремя исходными таблицами будет занимать три строки.

Таблица 16.7. Таблица SYSCATJIEmEP (СУБД DB2)

Имя столбца

Тип данных

Информация

viewschema

char(8)

Схема, содержащая представление

viewname

varchar (18)

Имя представления

definer

char(8)

Идентификатор владельца предстаьпения

btyfe

char(1)

Тип объекта, от которого зависит представление

(Т - таблица, V - представление; Л - псевдоним)

bschema

char(18)

Схема, содержащая объект, от которого зависит представление

tabauth

smallint

Флаги, обозначающие привилегии на объект, от которого зависит представление

С помошью этих двух таблиц можно посмотреть определения представлений базы данных и быстро найти исходные таблицы любого представления. Как и в большинстве СУБД, в DB2 информация о представлениях тесно связана с информацией о таблицах. Это означает, что нужные сведения часто можно получить несколькими способами. Вот, например, непосредственный запрос к системной таблице syscat.views, возврашаю-Щий имена всех представлений базы данньк вместе с именами их владельцев:

Вывести список всех представлений базы данных, а также их владельцев.

select distinct VIEWSCHEm, viewname, definer from syscat.views

Обратите внимание на то, что предикат distinct удаляет из списка те представления, определение которых слишком длинное, из-за чего они представлены в таблице несколькими строками. Наверное, более простой способ получить ту же информацию - обратиться к системной таблице syscat.tables, отбирая записи, соответствуюшие представлениям:

Вывести список всех представлений базы данных, а также их владельцев.

select tabschema, tabname, definer from syscat.tables where type = ч



в большинстве ведуших СУБД предсташтения описываются в системном каталоге схожим образом. В Informix Universal Server, например, имеется системная таблица sysviews, содержашая описания предсташтений. В каждой ее строке хранится 64-сим-вольный фрагмент инструкции select, формирующей предстааление. Если представление занимает несколько фрагментов, каждому из них присваивается порядковый номер, как и в DB2. В таблице sysviews содержится лишь один дополнительный столбец, в котором находятся идентификаторы таблиц, связывающие таблицу SYSviEws с соответствующими загшсями таблицы systables Таким образом, дублируется меньше информации, но вам придется вьшолнять явное объединение обеих системных таблиц, чтобы получить информацию о представлении.

В OracleS SQL-текст определения представления также записан в системном каталоге. Как и в случае таблиц и столбцов, имеется два системных представления - user viEWS, содержащее информацию обо всех представлениях, пзинадлежащих текущему пользователю, и all views, содержащее информацию обо всех представлениях, к которым текущий пользователь имеет доступ В отличие от DB2 и Informix, разбивающих определения крупных представлений на части, в Oracle каждому представлению соответствует одна строка. Его определение хранится в столбце типа l0b (большой объект) и может содержать тысячи символов. Имеется также столбец text length, в котором записана длина определения представления. Вот как в СУБД Oracle можно получить информацию о представлениях:

Вывести определения всех представлений, принадлежащих текущему пользователю.

SELECT VIEW NAME, TEXT FROM USER VIEWS

Комментарии

В СУБД DB2 вы можете давать комментарии (до 254 сикшолов) для каждой таблицы, представления или столбца базы данных. Комментарии позволяют сохранить в системном каталоге краткое описание таблицы или других данных. Комментарии хранятся в системных таблицах syscat. tables и syscat . columns. В отличие от других элементов определения таблицы или столбца, комментарии не задаются в инструкции create table. Вместо этого следует использовать инструкцию comment (рис. 16.2).

I- COMMENT ON

- TABLE имя та6лицы

is твкст коммвнтария

COLUMN полное имя стол6ца -

имя та6лицы (-х- имя столбца is твкст коммвнтария -у-) -I- , -

Рис. 16.2. Синтаксическая диаграмма инструкции COMMENT

Вот несколько примеров использования инструкции comment: Создать комментарий для таблицы offices.

COMMENT ON TABLE OFFICES

IS Эта таблица содержит данные о наших торговых офисах



Дать комментарии к столбцам target и sales таблицы offices.

comment on offices

(target is Это плановый годовой объем продаж офиса, sales is Это текущий объем продаж офиса)

Эта инструкция поддерживается и в СУБД Oracle, но, в отличие от других СУБД, здесь комментарии сохраняются в отдельных системных представлениях user tab comments И user col comments.

В DB2 разрешается также создавать комментарии к ограничениям, хранимым процедурам, схемам, табличным пространствам, триггерам и другим объектам базы данных. Эта возможность не поддерживается ни в стандарте SQL, ни в большинстве других СУБД.

Информация об отношениях между таблицами

в середине 90-х годов вместе с введением понятия ссылочной целостности в ведущих корпоративных СУБД системные каталоги были расширены информацией о первичных ключах, внешних ключах и создаваемых ими отношениях предок/пото-мок В DB2, когорая была одной из первых СУБД, поддерживающих ссылочную целостность, эта информация находится в системной таблице syscat.references (табл. 16.8). Каждое отношение предок/потомок между двумя таблицами базы данных представлено одной строкой. В этой строке содержатся имена таблицы-предка и таблицы-потомка, имя отношения, а также правила удаления и обновления для этого отношения. Чтобы получить информацию об отношениях в базе данных, вам следует выполнить запрос именно к этой таблице.

Вывести список всех отношений предок/потомок между моими таблицами, включая имя отношения, имя таблицы-предка, имя таблицы-потомка и правило удаления для каждого отношения.

select constname, reftabname, tabname, deleterule from syscat.references where definer = user

Вывести список всех таблиц, как предков, так и потомков, связанных с таблицей salesreps.

select reftabname

from syscat.references

where tabname = salesreps union

select tabname

from syscat.references

AlHERE reftabname = salesreps



1 ... 126 127 128 [ 129 ] 130 131 132 ... 264

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