Schemi - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Schemi

Un database contiene uno o più schemi con nome. Ogni schema di un database include tabelle e altri tipi di oggetti con nome. Per impostazione predefinita, un database include un solo schema, denominato PUBLIC. Puoi utilizzare gli schemi per creare gruppi di oggetti del database con lo stesso nome. Gli schemi sono simili alle directory del file system, con la differenza che non possono essere nidificati.

Puoi utilizzare nomi di oggetti del database identici in schemi diversi nello stesso database senza creare conflitti. Ad esempio, una tabella denominata MYTABLE può essere inclusa sia in MY_SCHEMA sia in YOUR_SCHEMA. Gli utenti che dispongono delle autorizzazioni necessarie possono accedere agli oggetti in più schemi in un database.

Per impostazione predefinita, un oggetto viene creato all'interno del primo schema nel percorso di ricerca del database. Per informazioni, vedi Percorso di ricerca più avanti in questa sezione.

Gli schemi possono aiutare a risolvere problemi di organizzazione e di simultaneità in un ambiente multi-utente nei modi seguenti:

  • Per consentire a più sviluppatori di lavorare nello stesso database senza interferire tra loro.

  • Per organizzare gli oggetti del database in gruppi logici per agevolarne la gestione.

  • Per consentire alle applicazioni di inserire gli oggetti in schemi separati in modo che i nomi non entrino in collisione con i nomi degli oggetti utilizzati da altre applicazioni.

Creazione, modifica ed eliminazione di schemi

Gli utenti possono creare schemi e modificare o eliminare gli schemi di cui sono proprietari.

Puoi eseguire le seguenti operazioni:

  • Per creare uno schema, utilizza il comando CREATE SCHEMA.

  • Per modificare il proprietario di uno schema, utilizza il comando ALTER SCHEMA.

  • Per eliminare uno schema con i relativi oggetti, utilizza il comando DROP SCHEMA.

  • Per creare una tabella all'intero di uno schema, crea la tabella con il formato schema_name.table_name.

Per visualizzare un elenco di tutti gli schemi, eseguire una query sulla tabella del catalogo di sistema PG_NAMESPACE.

select * from pg_namespace;

Per visualizzare un elenco delle tabelle che appartengono a uno schema, eseguire una query sulla tabella del catalogo di sistema PG_TABLE_DEF. Ad esempio, la query seguente restituisce un elenco di tabelle nello schema PG_CATALOG.

select distinct(tablename) from pg_table_def where schemaname = 'pg_catalog';

Percorso di ricerca

Il percorso di ricerca viene definito nel parametro search_path con un elenco di nomi di schemi separati da virgola. Il percorso di ricerca specifica l'ordine con cui vengono eseguite le ricerche negli schemi quando si fa riferimento a un oggetto, come una tabella o una funzione, utilizzando un nome semplice che non include un qualificatore di schema.

Se un oggetto viene creato senza specificare uno schema di destinazione, l'oggetto viene aggiunto al primo schema elencato nel percorso di ricerca. Se sono presenti oggetti con nomi identici in schemi diversi, un nome di oggetto che non specifica uno schema farà riferimento al primo schema del percorso di ricerca che include un oggetto con quel nome.

Per modificare lo schema predefinito per la sessione corrente, utilizza il comando SET.

Per ulteriori informazioni, vedi la descrizione search_path nella documentazione di riferimento relativa alla configurazione.

Autorizzazioni basate sullo schema

Le autorizzazioni basate sullo schema sono determinate dal proprietario dello schema:

  • Di default, tutti gli utenti hanno le autorizzazioni CREATE e USAGE per lo schema PUBLIC di un database. Per impedire agli utenti di creare oggetti nello schema PUBLIC di un database, utilizza il comando REVOKE per rimuovere tale autorizzazione.

  • A meno che il proprietario dell'oggetto non conceda loro l'autorizzazione USAGE, gli utenti non possono accedere a nessun oggetto presente negli schemi di cui non siano proprietari.

  • Se agli utenti è stato concesso l'autorizzazione CREATE per uno schema creato da un altro utente, possono creare oggetti in tale schema.