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. |
|
Person |
Nomi e indirizzi di clienti individuali, fornitori e dipendenti. |
|
Production |
Prodotti realizzati e venduti da Adventure Works Cycles. |
|
Purchasing |
Fornitori presso cui vengono acquistati prodotti e componenti. |
|
Sales |
Dati correlati a vendite e clienti. |
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.
Importante: |
---|
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.
- Per ulteriori informazioni sull'installazione degli script, vedere Readme_AdventureWorksScripts.
Vedere anche
Altre risorse
Dizionario dei dati di AdventureWorks
Installazione dei database di esempio AdventureWorks e degli esempi