Esquemas da AdventureWorks

No banco de dados OLTP de exemplo AdventureWorks, os objetos, como tabelas, exibições e procedimentos ficam contidos em esquemas. Os esquemas alteram o modo pelo qual esses objetos podem ser acessados. Este tópico fornece uma breve visão geral dos esquemas; descreve como os esquemas são usados no banco de dados AdventureWorks, e fornece os métodos e as alternativas para acessar objetos contidos em esquemas.

Esquemas da AdventureWorks

No SQL Server 2005 e posterior, os esquemas ficam separados de usuários. Como banco de dados principal, esquemas próprios de usuários e objetos ficam contidos nos esquemas. Para obter mais informações, consulte Separação do esquema de usuário.

A tabela a seguir descreve os esquemas usados em AdventureWorks e listam tabelas representativas de cada esquema.

Esquema

Contém objetos relativos a

Exemplos

HumanResources

Funcionários de Adventure Works Cycles.

Tabela Employee

Tabela Department

Person

Nomes e endereços de clientes individuais, fornecedores e funcionários.

Tabela Contact

Tabela Address

Tabela StateProvince

Production

Produtos fabricados e vendidos por Adventure Works Cycles.

Tabela BillOfMaterials

Tabela Product

Tabela WorkOrder

Purchasing

Fornecedores de quem são adquiridos peças e produtos.

Tabela PurchaseOrderDetail

Tabela PurchaseOrderHeader

Tabela Vendor

Sales

Dados relativos a clientes e vendas.

Tabela Customer

Tabela SalesOrderDetail

Tabela SalesOrderHeader

Acessando objetos contidos em esquemas

Os usuários sempre têm um esquema padrão. O esquema padrão é o esquema pesquisado pelo servidor para determinação de nomes de objetos não qualificados especificados em instruções DML ou DDL. Dessa forma, o nome do esquema não precisa ser especificado para referência a objetos contidos no esquema padrão. Por exemplo, a instrução SELECT * FROM table_name será executada com êxito se table_name constar do esquema padrão.

ObservaçãoObservação

Se não houver esquema padrão especificado durante a criação do usuário, o esquema padrão será dbo. Para obter mais informações, consulte CREATE USER (Transact-SQL).

Para acessar objetos em um esquema diferente do esquema padrão, no mínimo, um identificador de duas partes (schema_name**.**object_name) deverá ser especificado. Isto é verdade para todas as instruções DDL e DML que fazem referência a objetos de escopo de esquema.

O exemplo a seguir usa duas instruções SELECT para mostrar objetos consultados fora do esquema padrão. Assumindo que o esquema padrão não seja HumanResources, a primeira instrução falha porque a tabela Department não está contida no esquema padrão. A segunda instrução tem êxito porque especifica o esquema no qual o objeto está contido.

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

Alternativas para esquemas da AdventureWorks

Os exemplos dos Manuais Online do SQL Server e outros exemplos que podem ser instalados com SQL Server especificam, no mínimo, o identificador de duas partes para todos os objetos do escopo de esquema. Esses exemplos podem ser executados com êxito, independentemente do esquema padrão do usuário.

Os usuários que pretendem usar AdventureWorks em exemplos próprios e testes podem optar pela alternativa de especificar o identificador de duas partes. SQL Server provê scripts em SQLServerEngineSamples.msi, que fornecem duas alternativas para utilização de esquemas em AdventureWorks.

Transferindo objetos para o esquema DBO

O script AlterSchemaToDbo.sql transfere todos os objetos de escopo de esquema de AdventureWorks para o esquema dbo. Após a execução desse script, os usuários com esquema padrão dbo não precisarão usar o identificador de duas partes ao fazer referência a objetos AdventureWorks em instruções DDL e DML.

Observação importanteImportante

Os exemplos de código e exemplos fornecidos com SQL Server não serão executados após a execução do AlterSchemaToDbo.sql, a menos que os nomes de esquema especificados no código sejam substituídos por dbo ou removidos.

O script AlterSchemaFromDbo.sql transfere ou retorna os objetos do esquema dbo para os esquemas em que se encontravam antes da execução do script AlterSchemaToDbo.sql.

Usando sinônimos

Um sinônimo é outro nome dado a um objeto de escopo de esquema. O sinônimo é especificado no lugar do objeto base nas instruções DDL e DML.

O script CreateSynonymsDbo.sql cria um sinônimo para cada objeto de escopo de esquema em AdventureWorks. O nome de sinônimo é igual ao nome do objeto base, usando, porém o esquema dbo. Por exemplo, o sinônimo para HumanResources.Department é dbo.Department. As vantagens disso são as seguintes:

  • Se dbo for o esquema padrão, o identificador de duas partes não será necessário para especificar esses objetos em instruções DDL e DML.

  • Os exemplos de códigos e exemplos fornecidos com SQL Server podem ser usados sem modificações.

O script DropSynonymsDbo.sql descarta os sinônimos criados pelo script CreateSynonymsDbo.sql. Para obter mais informações sobre sinônimos, consulte Usando sinônimos.