|
Программирование >> Sql: полное руководство
Схемы в SQL2 Схема базы данных в SQL2 - это высокоуровневый контейнер ее объектов. Схема является именованным элементом базы данных и включает определения следующих объектов: таблиц вместе со связанными с ними структурами (столбцами, первичными и внещними ключами, офаничениями и т.п.); представлений - виртуальных таблиц, создаваемых на основе реальных таблиц базы данных (о представлениях рассказывается в следующей главе); доменов - пользовательских типов данных с дополнительными ограничениями на значения столбцов в таблицах схемы; ш утверждений - условий целостности базы данных, ограничивающих возможные сочетания данных из разных таблиц схемы; привилегий, предоставляемых пользователям на доступ к данным и их обновление, а также на модификацию сфуктуры базы данных (о привилегиях рассказывается в главе 15); наборов символов - структур, предназначенных для поддержки национальных языков и представления нелатинских символов (например, диакритических знаков, используемых во многих европейских языках, или иероглифов); порядков сортировки, задающих правила сортировки текста для различных наборов символов; правил конвертирования текста, управляющих преобразованием текста из одного набора символов в другой и сравнением текстовых данных, использующих различные наборы символов. Схема создается с помощью инсфукции create schema, синтаксическая диаграмма которой изображена на рис. 13.14. Вот соответствующее стандарту SQL2 определение простой двухтабличной схемы для пользователя Джо, приведенной на рис. 13.12: CREATE SCHEMA JSCHEMA AUTHORIZATION JOE CREATE TABLE PEOPLE (NAME VARCHAROO) , AGE INTEGER) CREATE TABLE PLACES (CITY VARCHAROO) , STATE VARCHAROO) ) GRANT ALL PRIVILEGES ON PEOPLE TO PUBLIC GRANT SELECT ON PLACES TO MARY Эта схема определяет две таблицы и предоставляет разрещения на доступ к ним со стороны других пользователей. Она не содержит определений никаких дополнительных структур, таких как представления или утверждения. Обратите внимание на то, что инструкции create table, ВХОДЯЩИС в ИНСТРУКЦИЮ create schema, - ЭТО полноценные инсфукции создания таблиц, описанные ранее в этой главе. Если ввести их в интерактивном режиме, то, согласно стандарту, СУБД создаст указанные таблицы в используемой по умолчанию схеме текущего сеанса. )-CREATE SCHEMA -имя схемы- I-AUTHORIZATION имя польэователя -AUTHORIZATION имя пользователя - - DEFAULT CHARACTER SET имя набора символов CREATE TABLE- CREATE VIEW- - CREATE DOMAIN- - CREATE ASSERTION ...определение таблицы- ...определение представления ...определение (Зомена- CREATE CHARACTER SET- CREATE COLLATION- CREATE TRANSLATION- GRANT привилегии- ...определение утверждения- .. определение набора символов- ...определение порядка сортировки- ..определение правила конвертирования ...определение привилегии- Рис. 13.Ы.04Нга хмческая диаграмма инструкции CREATE ЯСНШй Следует также отметить, что в SQL2 схема связана с конкретным пользователем. Один пользователь может быть владельцем нескольких различных схем. Для сохранения совместимости со стандартом SQL! стандарт SQL2 позволяет задавать при создании схемы следующее: имя схемы плюс имя пользователя (как в последнем примере); только имя схемы; в этом случае пользователь, выполнивший инструкцию create schema, автоматически становится владельцем схемы; только имя пользователя. В этом случае именем схемы становится имя пользователя. Это соответствует стандарту SQLI и практике многих коммерческих СУБД, не допускающих создания нескольких схем для одного пользователя. Схема, которая вам больше не нужна, может быть удалена с помощью инструкции drop schema (рис. 13.15). В этой инструкции необходимо задать одно из правил удаления, о которых мы уже говорили при обсуждении удаления столбцов, - либо cascade, либо restrict. Если указать правило cascade, тогда все структуры в определении схемы (таблицы, представления, утверждения и т.п.) будут автоматически удалены. Если же выбрать правило restrict, то инструкция не будет выполнена При наличии в схеме хотя бы одной из этих структур. Таким образом, правило restrict требует, чтобы перед удалением схемы из нее были удалены все вложенные структуры; это защищает вас от случайного удаления нужных данных или определений. Стандарт SQL2 не предлагает специальной инструкции alter schema. Для Изменения схемы используются обычные инструкции изменения входящих в нее объектов, как, например, alter table.
Когда пользователь (или программа) обращается к базе данных, поддерживающей SQL2, он всегда получает доступ к конкретной схеме, определенной как схема, используемая по умолчанию. Именно к ней неявно обращается любая инструкция DDL, выполняемая для создания, удаления или изменения элементов схемы. Можно сказать, что именем этой схемы неявно уточняются имена всех таблиц, указываемых в инструкциях SQL. Однако, как уже упоминалось в главе 5, ничто не мещает вам явно уточнять имена таблиц, чтобы работать и с другими схемами базы данных, если только у вас есть соответствующие привилегии. Согласно стандарту SQL2, имя таблицы уточняется именем схемы. К примеру, если набор таблиц нащей учебной базы данных был создан как часть схемы sales, то полное (уточненное) имя таблицы offices будет таким: SALES.OFFICES Если схема была создана только с указанием имени пользователя, тогда имя таблицы строится так, как описано в главе 5. Имя пользователя становится именем схемы и указывается перед именем таблицы через точку. У инструкции create schema есть еще одно скрытое преимущество. Как вы помните из описания инструкции create table, создавать ссылочные циклы (две или более таблицы, ссылающиеся друг на друга, используя отнощения первичного и внешнего ключа) сложновато. Сначала создается первая таблица без определения внешнего ключа, затем, после того как будет создана другая таблица (или таблицы), определение внешнего ключа добавляется посредством инструкции alter table. В инстртсции create schema Эта проблема решена, так как до тех пор пока не будут созданы все таблицы, СУБД не проверяет определяемые схемой условия ссылочной целостности. На практике для создания нового набора связанных между собой таблиц обычно используется инструкция create schema. Для последующего добавления, удаления и модификации отдельных таблиц применяются инструкции create table, drop table и alter table. Bo многие известные СУБД уже включены некоторые формы инструкции create schema, хотя между ними есть существенные различия. Например, в Oracle инструкция create schema позволяет создавать только таблицы, представления и привилегии и, кроме того, требует, чтобы имя схемы совпадало с именем пользователя. Аналогично работает эта инструкция и в Informix Universal Server, только набор структур, которые могут входить в определение схемы, дополнпн индексами, триггерами и синонимами (псевдонимами). Подобные возможности предоставляет и Sybase Adaptive Server. Во всех трех СУБД предлагаемые возможности соответствуют начальному уровню совместимости (Entry Level) со стандартом SQL2.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |