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

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


Таблто 16 8. Таблица SYSiJFERENCES (СУБД1В2) t

---. .---

Имя столбца

Тип данных

Информация

CONSTNAME

VARCHAR (8)

Имя отношения

TABSCHEtIA

char (8)

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

TABNAME

VARCHAR(18)

Имя таблицы-потомка

DEEINER

char (8)

Владелец табтицы, являющейся в отношении потомком

REFKEYNAME

VARCHAR (18)

Имя ключа таблицы-предка

REFTABSC4EMA

ChAR(8)

Схема, содержашая табл и ц>-предок

REFTABNAME

VARCHAR (18)

Имя таблицы, являюшейся в отношении предком

colcount

SMALLINT

Число столбцов виешпего ключа

DELETERULE

char(l)

Правило удаления для огношения таблиц (Л - ничего не предпринимать, С - CASCADE, R - restrict)

UPDATERULE

char(l)

Правило обновления для отношения таблиц (А ~ ничего не предпринимать, R - restrict)

CREA7E time

TIMESTAMP

Дата и время создания отношения

FK CObNAMES

VARCHAR(320)

Названия столбцов внешнего ключа

pk COLNAMES

VARCHAR(3?0)

Названия столбцов первичного ключа

Имена столбцов внешнего ключа и соответствующих им столбцов первичного ключа перечислены в текстовом виде в столбцах fk colnames и pk colnames таблицы syscat.references Более полезная информация содержится в другой системной таблице - syscat.keycoluse (табл 16 9) Для каждого столбца каждого внешнего ключа, первичного ключа и условия уникальности в этой системной таблице отводится одна строка Специальная последовательность чисел определяет порядок следования столбцов в составном внешнем ключе. С помошью запроса к этой таблице, подобного приведенному ниже, можно узнать имена столбцов, связывающих некоторую таблицу с ее предком

Вывести список столбцов, связываюш,их таблицу orders с таблицей products отношением, имеющим имя isfor.

select colname, colseq from syscat.keycoldse where constname = isfor

ordep by

colseq

Таблица 16.9. Таблица SYSCAT. KEYCOLUSE (СУБД DB2)

Имя столбца

Тип данных

Информация

constname

varchar(18)

Имя описываемого ограничения (условия уникальности,

первичного ключа или внешнего ключа)

tabschema

char (8)

Схема, содержащая данное ограничение

TA3NA me

varchar(18)

Имя таблицы, к которой применяется ограничение

colname

varchar (18)

Имя столбца, участвутошею в офаничений

colseq

smallint

Позиция, занимаемая столбцом в ограничении ,



Информация о первичных ключах и отношениях предок/потомок, в которых они участвуют, содержится также в системных таблицах syscat.tables и syscat.columns, описанных ранее в табл. 16 2 и 16.4. Если таблица имеет первичный ключ, то ее строка в таблице syscat . tables имеет в столбце keycolumns значение, отличное от нуля и равное числу столбцов первичного ключа (1 для простого ключа, 2 или более для составного ключа). В таблице syscat . columns строки столбцов, входящих в состав первичных ключей, имеют в столбце keyseq значение, не равное нулю. Оно указывает позицию (1, 2 и т.д.), занимаемую столбцом в первичном ключе.

Чтобы найти первичный ключ какой-либо таблицы, вы можете сделать запрос к таблице syscat.columns.

Вывести список столбцов, образующих первичный ключ таблицы products.

SELECT COLNAME, KEYSEQ, TYPENAME, REMARKS FROM SYSCAT. COLUMNS WHERE TABNAME = PRODUCTS

AND KEYSEQ > 0 ORDER BY KEYSEQ

В системных каталогах других СУБД поддержка первичных и внешних ключей осуществляется схожим образом Например, в Oracle имеется системное представление user c0nstraints, аналогичное таблице syscat.references. Информация о столбцах внешних и первичных ключей содержится в представлении USER C0NS C0LUMNS, которое аналогично таблице syscat. keyc0luse. В SQL Server структура системного каталога подобна описанной выше, а информация о внешних ключах распределена между таблицами sysforeignkeys и sysreferences.

В Informix Universal Server применяется подход, близкий используемому в DB2, но с теми же отличиями, которые уже были описаны при рассмотрении того, как в системном каталоге представлена информация о столбцах Для каждого офаничения, определенного в базе данных, создается сфока в системной таблице syscon-straints, где записано имя ограничения и его тип (условие на значения, первичный ключ, внешний ключ и т д ). В этой таблице офаничению назначается также внутренний идентификатор, используемый при ссылке на данное офаничение в других таблицах системного каталога. Таблица, к которой применяется офаничение, тоже идентифицируется внуфенним номером (он служит в качестве внешнего ключа к таблице systables). Более подробная информация о внешних ключах содержится в таблице sysreferences. В ней Офаничение, первичный ключ и родительская таблица определяются внуфенними идентификаторами, указывающими на таблицы SYSCONSTRAINTS И systables. В таблице sysreferences описаны правила удаления и обновления для отношения, создаваемого внешним ключом, и другие необходимые данные

Информация о пользователях

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



в SQL Server информация о пользователях хранится в системной таблице sys-users (табл. 16.10). Каждая строка этой таблицы описывает одного пользователя или Фуппу пользователей, входящих в схему защиты базы данных В Informix применяется схожий подход, и даже соответствующая системная таблица тоже называется sysusers. в Oracle эта таблица называется all users. Вот два эквивалентных запроса для SQL Server и Oracle, посредством которых на экран выводится список зарегистрированных пользователей:

Вывести все идентификаторы пользователей, зарегистрированных в SQL Sener.

SELECT NAME

FROM SYSaSERS WHERE DID <> GID

Вывести все идентификаторы пользователей, зарегистрированных вХ)гас1е.

SELECT USERNAME FROM ALL USERS

Таблица 16.10. Некоторые столбцы таблицы SYSUSERS (СУБД SQL Server)

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

uid SMALLINT Внутренний идентификатор пользователя в базе данных

gid SMALLINT Внутренний идентификатор группы пользователей в базе

данных

name SYSNAME Имя пользователя или группы

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

Вывести все идентификаторы пользователей, зарегистрированных в DB2.

SELECT DISTINCT GRANTEE FROM SYSCAT.DBAUTH WHERE GRANTEETYPE = U

Информация о привилегиях

Помимо информации о структуре базы данных, системный каталог хранит, как правило, информацию, которая необходима СУБД для обеспечения безопасности базы данных. Как уже говорилось в главе 15, в разных СУБД применяются различные варианты базовой схемы выдачи привилегий, существующей в SQL. Это находит свое отражение в структуре системных каталогов различных СУБД.

DB2 имеет одну из наиболее сложных схем пользовательских привилегий, которая охватывает даже отдельные столбцы таблиц. В табл. 16.11 приведены названия таблиц системного каталога DB2, которые хранят информацию о привилегиях, и кратко описана роль каждой из них.



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

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