Смекни!
smekni.com

Организация баз данных (стр. 24 из 39)

На практике коммерческие реляционные СУБД поддерживают стандартные представления каталога путем создания соответствующих представлений на основе таблиц своих собственных системных каталогов. Информация в системных каталогах большинства СУБД достаточно близка к требуемой в стандарте, поэтому определения стандартных представлений каталога, создаваемых в этих СУБД, будут относительно простыми.

Представления системного каталога, требуемые стандартом SQL2, приведены в табл. 11.2. В ней дается краткое описание информации, которая содержится в каждом представлении. В стандарте определены также три домена, которые .используются представлениями системного каталога и являются доступными для пользователей. Эти домены приведены в табл. 11.3.

табл. 11.2 Представления системного каталога, установленные стандартом SQL2

Представление в системном каталоге Содержимое
INFORMATION_SСНЕМА_CATALOG_NAME Одна строка с именем базы данных для каждого пользователя ("каталога" по терминологии стандарта SQL2), описываемого данной информационной схемой
SCHEMATA Одна строка для каждой информационной схемы в базе данных, принадлежащей текущему пользователю; содержит имя схемы, набор символов по умолчанию и т.д.
DOMAINS Одна строка для каждого домена, доступного текущему пользователю; содержит имя домена, базовый тип данных, набор символов, максимальную длину, степень, точность и т.д.
DOMAIN_CONSTRAINTS Одна строка для каждого ограничительного условия домена; содержит имя условия и его характеристики
TABLES Одна строка для каждой таблицы или представления, доступных пользователю; содержит имя и признак того, идет ли речь о таблице или представлении
VIEWS Одна строка для каждого представления, доступного пользователю; содержит имя, информацию о режиме контроля и возможности обновления.
COLUMNS Одна строка для каждого столбца, доступного пользователю; содержит имя столбца, имя таблицы или представления, которые содержат данный столбец, тип содержащихся в нем данных, степень, точность, набор символов и т.д.
TABLE_PRIVILEGES Одна строка для .каждой привилегии на таблицу, предоставленной пользователю или предоставленной им другому пользователю; содержит имя таблицы, тип привилегии, указание на то, кто предоставил привилегию, кому она предоставлена и имеет ли пользователь право предоставления этой привилегии
COLUMN_PRIVILEGES Одна строка для каждой привилегии на столбец, предоставленной пользователю или предоставленной им другому пользователю; содержит имя таблицы и столбца, тип привилегии, указание на то, кто предоставил привилегию, кому она предоставлена и имеет ли пользователь право предоставления этой привилегии
USAGE_PRIVILEGES Одна строка для каждой привилегии, предоставленной пользователю или пользователем на какой-либо домен, набор символов и т.п.
TABLE_CONSTRAINTS Одна строка на каждое ограничительное условие (первичный ключ, внешний ключ, условие уникальности или условие проверки), заданное для таблицы, которой владеет пользователь; содержит имя условия и таблицы, тип условия и его характеристики
REFERENTIAL_CONSTRAINTS Одна строка для каждого ссылочного ограничения (определения внешнего ключа) на таблицу, которой владеет пользователь; содержит имя ограничения, имя таблицы-потомка и имя таблицы-предка
CHECK__CONSTRAINTS Одна строка на каждое условие проверки для таблицы, которой владеет пользователь
KEY_COLUMN_USAGE Одна строка для каждого столбца первичного или внешнего ключа, на который (столбец) наложено ), условие уникальности и который входит в таблицу, принадлежащую пользователю; строка содержит имя таблицы, имя столбца и позицию столбца в ключе
ASSERTIONS Одна строка для каждого утверждения, которым владеет пользователь; содержит имя утверждения и его характеристики
CHARACTER_SETS Одна строка для каждого определения набора символов, доступного пользователю
COLLATIONS Одна строка для каждого определения последовательности сравнения, доступного пользователю
TRANSLATIONS Одна строка для каждого определения преобразования, доступного пользователю
VIEW_TABLE_USAGE Одна строка для каждой таблицы, на которую имеется ссылка в определениях представлений, принадлежащих пользователю; строка содержит имя таблицы
VIEW_COLUMN_USAGE Одна строка для каждого столбца, на который имеется ссылка в представлениях, принадлежащих пользователю; строка содержит имя столбца и таблицы, в которую входит столбец
CONSTRAINT_TABLE_
USAGE
Одна строка для каждой таблицы, на которую имеется ссылка в условии проверки, условии уникальности, утверждении и определении внешнего ключа, принадлежащих пользователю
CONSTRAINT_COLUMN_
USAGE
Одна строка для каждого столбца, на который имеется ссылка в условии проверки, условии уникальности, утверждении и определении внешнего ключа, принадлежащих пользователю
SQL_LANGUAGES Одна строка для каждого языка (например, COBOL, С и т.д.), поддерживаемого СУБД данного типа; в строке указывается уровень соответствия языка стандарту SQL2, тип поддерживаемого диалекта SQL и т.д.

табл. 11.3 Домены, определенные в стандарте SQL2

Системный домен Область значений домена
SQL_IDENTIFIER Домен всех символьных строк переменной длины, которые являются допустимыми идентификаторами SQL согласно стандарту SQL2. Любое значение, взятое из этого (домена, является допустимым именем таблицы, именем столбца и т.д.
CHARACTER_DATA Домен всех символьных строк переменной длины, имеющих длину от нуля до максимального значения, поддерживаемого данной СУБД. Значение, взятое из этого домена, является допустимой символьной строкой.
CARDINAL_NUMBER Домен всех неотрицательных чисел от нуля до максимального целого числа, с которым может работать данная СУБД. Значение, взятое из этого домена, является нулем или допустимым положительным числом.

Вот примеры нескольких запросов, используемых для извлечения информации о структуре базы данных из представлений системного каталога, определенных в стандарте SQL2:

1. Вывести имена всех таблиц и представлений пользователя, работающего в настоящий момент с базой данных.

SELECT TABLE_NAME

FROM TABLES

2. Вывести имя, позицию и тип данных для каждого столбца во всех представлениях.