|
Программирование >> Sql: полное руководство
Имя столбца Тип данных Информация READONLY CHAR(l) Y, если представление доступно только для чтения, N - в противном случае VALID CHAR(l) Y, если определение предстаьпения является коррект- ным, N - в противном случае FUNC PATHF VARCHAR(254) Путь К каталогу файловой системы, необходимый для разрешения ссылок на функции в представлении TEXT VARCHAR (3600) Текст определения Представления ( SELECT ... ) В таблице syscat.viewdep в DB2 (табл. 16.7) содержится информация о зависимости представления от других таблиц и представлений. Для каждого отношения зависимости отводится одна строка, поэтому представление с тремя исходными таблицами будет занимать три строки.
С помошью этих двух таблиц можно посмотреть определения представлений базы данных и быстро найти исходные таблицы любого представления. Как и в большинстве СУБД, в 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |