Схемы в AdventureWorks
В образце базы данных OLTP AdventureWorks такие объекты, как таблицы, представления и процедуры, содержатся в схемах. Схемы изменяют способ доступа к этим объектам. В этом разделе представлен краткий обзор схем, описывается их использование в базе данных AdventureWorks и предлагаются методы для доступа к объектам, содержащимся в схемах.
Схемы в AdventureWorks
В Microsoft SQL Server 2005 схемы отделены от пользователей; являясь участниками базы данных, пользователи владеют схемами и объектами, содержащимися в них. Дополнительные сведения см. в разделе Отделение пользователей от схем.
В следующей таблице описываются схемы, которые используются в AdventureWorks, и приводятся названия таблиц в каждой схеме.
Схема | Данные, связанные с объектами схемы | Примеры |
---|---|---|
HumanResources |
Сотрудники компании Adventure Works Cycles. |
|
Person |
ФИО и адреса частных лиц: заказчиков, поставщиков и сотрудников. |
|
Production |
Продукция, производимая и реализуемая компанией Adventure Works Cycles. |
|
Purchasing |
Поставщики готовой продукции и комплектующих. |
|
Sales |
Данные о заказчиках и продажах. |
Доступ к содержащимся в схемах объектам
У пользователей всегда есть схема по умолчанию. Схема по умолчанию — это схема, в которой сервер производит поиск при разрешении имен неквалифицированных объектов, указанных в инструкциях 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, GroupName
FROM Department;
GO
--This statement succeeds.
SELECT Name, GroupName
FROM HumanResources.Department;
GO
Альтернативные варианты обращения к схемам в AdventureWorks
В примерах кода в электронной документации по SQL Server и дополнительных примерах и образцах, которые можно установить вместе с SQL Server 2005, используется как минимум двухкомпонентный идентификатор для всех объектов в области схем. Эти примеры будут работать независимо от пользовательской схемы по умолчанию.
Пользователи, которые используют базу данных AdventureWorks для своих собственных образцов и тестирования, могут использовать альтернативный вариант вместо двухкомпонентных идентификаторов. Сценарии, поставляемые с SQL Server 2005 в файле SQLServerEngineSamples.msi, содержат два варианта обращения к схемам AdventureWorks.
Перенос объектов в схему DBO
Сценарий AlterSchemaToDbo.sql переносит каждый объект области схемы из AdventureWorks в схему dbo. После запуска этого сценария пользователям со схемой по умолчанию dbo необязательно указывать двухкомпонентный идентификатор при обращении к объектам AdventureWorks в инструкциях DDL и DML.
![]() |
---|
Примеры кода, поставляемые с SQL Server 2005, не будут запускаться после выполнения AlterSchemaToDbo.sql, если имена схем в коде не будут удалены или заменены на имена схем dbo. |
Сценарий AlterSchemaFromDbo.sql передает или возвращает объекты из схемы dbo в схемы, в которых они были перед запуском сценария AlterSchemaToDbo.sql.
Использование синонимов
Синоним — это другое имя, которое дается объекту области схемы. В инструкциях DDL и DML вместо базового объекта указывается синоним.
Сценарий CreateSynonymsDbo.sql создает синоним для каждого объекта области схемы в AdventureWorks. Имя синонима то же, что и имя базового объекта, однако синоним использует схему dbo. Например, синонимом для HumanResources.Department является dbo.Department. Это дает следующие преимущества:
- Если dbo является схемой по умолчанию, то двухкомпонентный идентификатор для указания этих объектов в инструкциях DDL и DML не требуется.
- Примеры кода и образцы, поставляемые с SQL Server 2005, можно использовать без изменения.
Сценарий DropSynonymsDbo.sql удаляет синонимы, созданные сценарием CreateSynonymsDbo.sql. Дополнительные сведения о синонимах см. в разделе Using Synonyms.
- Дополнительные сведения об установке этих сценариев см. в разделе Readme_AdventureWorksScripts.
См. также
Другие ресурсы
Словарь данных AdventureWorks
Установка образцов баз данных и примеров AdventureWorks