Схемы в AdventureWorks

В образце базы данных OLTP AdventureWorks такие объекты, как таблицы, представления и процедуры, содержатся в схемах. Схемы изменяют способ доступа к этим объектам. В этом разделе представлен краткий обзор схем, описывается их использование в базе данных AdventureWorks и предлагаются методы для доступа к объектам, содержащимся в схемах.

Схемы в AdventureWorks

В SQL Server 2005 и более поздних версиях схемы отделены от пользователей: являясь участниками базы данных, пользователи владеют схемами и объектами, содержащимися в них. Дополнительные сведения см. в разделе Отделение пользователей от схем.

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

Схема

Данные, связанные с объектами схемы

Примеры

HumanResources

Сотрудники компании Adventure Works Cycles.

Таблица Employee

Таблица Department

Person

ФИО и адреса частных лиц: заказчиков, поставщиков и сотрудников.

Таблица Contact

Таблица Address

Таблица StateProvince

Production

Продукция, производимая и реализуемая компанией Adventure Works Cycles.

Таблица BillOfMaterials

Таблица Product

Таблица WorkOrder

Purchasing

Поставщики готовой продукции и комплектующих.

Таблица PurchaseOrderDetail

Таблица PurchaseOrderHeader

Таблица Vendor

Sales

Данные о заказчиках и продажах.

Таблица Customer

Таблица SalesOrderDetail

Таблица SalesOrderHeader

Доступ к содержащимся в схемах объектам

У пользователей всегда есть схема по умолчанию. Схема по умолчанию — это схема, в которой сервер производит поиск при разрешении имен неквалифицированных объектов, указанных в инструкциях DML или DDL. Поэтому при ссылках на объекты, содержащиеся в схеме по умолчанию, имя схемы указывать необязательно. Например, инструкция SELECT * FROM table_name выполняется успешно, если table_name находится в схеме по умолчанию.

ПримечаниеПримечание

Если при создании пользователя схема по умолчанию не указана, то схемой по умолчанию является dbo. Дополнительные сведения см. в разделе CREATE USER (Transact-SQL).

Для обращения к объектам схемы, не являющейся схемой по умолчанию, должен быть указан как минимум двухкомпонентный идентификатор (schema_name**.**object_name). Это справедливо для всех инструкций DDL и DML, ссылающихся на объекты в области схемы.

В следующем примере используются две инструкции SELECT для отображения ссылающихся объектов вне схемы по умолчанию. Если схемой по умолчанию не является HumanResources, первая инструкция завершается неудачно, т. к. таблица Department не содержится в схеме по умолчанию. Вторая инструкция выполняется успешно, потому что в ней указывается схема, в которой содержится объект.

USE AdventureWorks;GO--This statement fails.SELECT Name, GroupNameFROM Department;GO--This statement succeeds.SELECT Name, GroupNameFROM HumanResources.Department;GO

Альтернативные варианты обращения к схемам в AdventureWorks

В примерах кода в электронной документации по SQL Server и дополнительных образцах, которые можно установить вместе с SQL Server, используется как минимум двухкомпонентный идентификатор для всех объектов в области схемы. Эти примеры будут работать независимо от пользовательской схемы по умолчанию.

Пользователи, которые используют базу данных AdventureWorks для своих собственных образцов и тестирования, могут использовать альтернативный вариант вместо двухкомпонентных идентификаторов. Сценарии, поставляемые с SQL Server в файле SQLServerEngineSamples.msi, содержат два варианта обращения к схемам AdventureWorks.

Перенос объектов в схему DBO

Сценарий AlterSchemaToDbo.sql переносит каждый объект области схемы из AdventureWorks в схему dbo. После запуска этого сценария пользователям со схемой по умолчанию dbo необязательно указывать двухкомпонентный идентификатор при обращении к объектам AdventureWorks в инструкциях DDL и DML.

Важное примечаниеВажно!

Примеры кода и образцы, поставляемые с SQL Server, не будут запускаться после выполнения AlterSchemaToDbo.sql, если имена схем в коде не будут удалены или заменены на имена схем dbo.

Сценарий AlterSchemaFromDbo.sql передает или возвращает объекты из схемы dbo в схемы, в которых они были перед запуском сценария AlterSchemaToDbo.sql.

Использование синонимов

Синоним — это другое имя, которое дается объекту области схемы. В инструкциях DDL и DML вместо базового объекта указывается синоним.

Сценарий CreateSynonymsDbo.sql создает синоним для каждого объекта области схемы в AdventureWorks. Имя синонима то же, что и имя базового объекта, однако синоним использует схему dbo. Например, синонимом для HumanResources.Department является dbo.Department. Это дает следующие преимущества:

  • Если dbo является схемой по умолчанию, то двухкомпонентный идентификатор для указания этих объектов в инструкциях DDL и DML не требуется.

  • Примеры кода и образцы, входящие в комплект SQL Server, можно использовать без изменений.

Сценарий DropSynonymsDbo.sql удаляет синонимы, созданные сценарием CreateSynonymsDbo.sql. Дополнительные сведения о синонимах см. в разделе Использование синонимов.

  • Дополнительные сведения об установке этих сценариев см. в разделе Readme_AdventureWorksScripts.