Condividi tramite


Schemi in AdventureWorks

Nel database OLTP di esempio AdventureWorks oggetti quali tabelle, viste e procedure sono contenuti in schemi. Gli schemi definiscono il modo in cui è possibile accedere a tali oggetti. In questo argomento vengono fornite una breve panoramica degli schemi e una descrizione del loro utilizzo nel database AdventureWorks, nonché dei metodi e delle alternative che è possibile adottare per accedere agli oggetti inclusi negli schemi.

Schemi in AdventureWorks

In Microsoft SQL Server 2005 gli schemi sono indipendenti dagli utenti. In quanto entità di database, gli utenti sono proprietari degli schemi e degli oggetti in essi contenuti. Per ulteriori informazioni, vedere Separazione fra schema e utente.

Nella tabella seguente vengono descritti gli schemi utilizzati in AdventureWorks ed è incluso un elenco delle tabelle esemplificative presenti in ognuno degli schemi.

Schema Contiene oggetti correlati a Esempi

HumanResources

Dipendenti di Adventure Works Cycles.

Tabella Employee

Tabella Department

Person

Nomi e indirizzi di clienti individuali, fornitori e dipendenti.

Tabella Contact

Tabella Address

Tabella StateProvince

Production

Prodotti realizzati e venduti da Adventure Works Cycles.

Tabella BillOfMaterials

Tabella Product

Tabella WorkOrder

Purchasing

Fornitori presso cui vengono acquistati prodotti e componenti.

Tabella PurchaseOrderDetail

Tabella PurchaseOrderHeader

Tabella Vendor

Sales

Dati correlati a vendite e clienti.

Tabella Customer

Tabella SalesOrderDetail

Tabella SalesOrderHeader

Accesso agli oggetti inclusi negli schemi

Gli utenti dispongono sempre di uno schema predefinito. Il server cerca lo schema predefinito per la risoluzione dei nomi di oggetti non qualificati, specificati in una istruzione DML o DDL. Non è pertanto necessario specificare il nome di schema quando si fa riferimento a oggetti inclusi nello schema predefinito. L'istruzione SELECT * FROM table_name, ad esempio, viene eseguita correttamente se l'oggetto table_name è incluso nello schema predefinito.

[!NOTA] Se non viene specificato uno schema predefinito al momento della creazione dell'utente, lo schema predefinito sarà dbo. Per ulteriori informazioni, vedere CREATE USER (Transact-SQL).

Per accedere agli oggetti inclusi in uno schema diverso da quello predefinito, è necessario specificare almeno un identificatore in due parti (schema_name**.**object_name). Questa condizione è valida per tutte le istruzioni DDL e DML che fanno riferimento a oggetti definiti a livello di ambito dello schema.

Nell'esempio seguente vengono utilizzate due istruzioni SELECT per illustrare come fare riferimento a oggetti non inclusi nello schema predefinito. Se lo schema predefinito non è HumanResources, la prima istruzione non riesce poiché la tabella Department non è inclusa nello schema predefinito. La seconda istruzione viene invece eseguita correttamente poiché vi è specificato lo schema in cui è contenuto l'oggetto.

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

Alternative agli schemi in AdventureWorks

Negli esempi di codice disponibili nella documentazione in linea di SQL Server e negli esempi aggiuntivi che è possibile installare con SQL Server 2005 viene sempre specificato almeno l'identificatore in due parti per tutti gli oggetti definiti a livello di ambito dello schema. È possibile eseguire tali esempi in modo corretto indipendentemente dallo schema predefinito dell'utente.

Per gli utenti che desiderano utilizzare AdventureWorks per i propri esempi e a scopo di test sono disponibili alternative all'identificatore in due parti. Il file SQLServerEngineSamples.msi incluso in SQL Server 2005 consente di installare script che offrono due valide alternative all'utilizzo degli schemi in AdventureWorks.

Trasferimento di oggetti nello schema DBO

Lo script AlterSchemaToDbo.sql consente di trasferire tutti gli oggetti definiti a livello di ambito dello schema in AdventureWorks nello schema dbo. Dopo avere eseguito lo script, non è più necessario che gli utenti a cui è assegnato lo schema predefinito dbo utilizzino l'identificatore in due parti per fare riferimento a oggetti di AdventureWorks nelle istruzioni DDL e DML.

ms124894.note(it-it,SQL.90).gifImportante:
Non sarà possibile eseguire gli esempi di codice e gli altri esempi inclusi in SQL Server 2005 dopo avere eseguito lo script AlterSchemaToDbo.sql, a meno che i nomi degli schemi specificati nel codice vengano sostituiti con dbo oppure eliminati.

Lo script AlterSchemaFromDbo.sql consente di trasferire o di riportare gli oggetti dallo schema dbo negli schemi in cui si trovavano prima che venisse eseguito lo script AlterSchemaToDbo.sql.

Utilizzo dei sinonimi

Un sinonimo rappresenta un nome alternativo assegnato a un oggetto definito a livello di ambito dello schema. È possibile specificare il sinonimo invece dell'oggetto di base nelle istruzioni DDL e DML.

Lo script CreateSynonymsDbo.sql consente di creare un sinonimo per ogni oggetto definito a livello di ambito dello schema in AdventureWorks. Il nome di sinonimo è identico al nome dell'oggetto di base, tranne per il fatto che utilizza lo schema dbo. Il sinonimo di HumanResources.Department, ad esempio, è dbo.Department. Questo tipo di soluzione offre i vantaggi seguenti:

  • Se dbo è lo schema predefinito, non è necessario specificare l'identificatore in due parti per fare riferimento a tali oggetti nelle istruzioni DDL e DML.
  • È possibile utilizzare gli esempi di codice e gli altri esempi disponibili in SQL Server 2005 senza apportarvi modifiche.

Lo script DropSynonymsDbo.sql consente di eliminare i sinonimi creati con lo script CreateSynonymsDbo.sql. Per ulteriori informazioni sui sinonimi, vedere Using Synonyms.

Vedere anche

Altre risorse

Dizionario dei dati di AdventureWorks
Installazione dei database di esempio AdventureWorks e degli esempi

Guida in linea e informazioni

Assistenza su SQL Server 2005