2010-01-25 12 views

risposta

24

Non c'è molta motivazione fornita, ma vedere la sezione [5.7.6][1] nel manuale, ma penso che le seguenti risposte alla tua domanda:

Se non si creano gli schemi quindi tutti gli utenti di accedere allo schema pubblico implicitamente . Questo simula la situazione in cui gli schemi non sono disponibili. Questa impostazione è consigliata principalmente quando c'è un solo utente o pochi utenti che collaborano in un database. Questa configurazione consente anche una transizione graduale dal mondo che non conosce schemi.

1

La mia ipotesi sarebbe la specifica SQL. Ma questo è abbastanza logico che cosa farebbe lo create user altrimenti richiederebbe esplicitamente quale schema ha anche l'utente?

Se i tuoi utenti non hanno accesso a nessuna singola risorsa condivisa, perché non creare un nuovo DB per loro? A differenza di MySQL, un nuovo database è un nuovo database e non un alias per un nuovo schema.

Volevo solo chiarire questo, significa che ogni database ha il proprio schema public..

+0

Non penso sia dovuto alle specifiche SQL: "non esiste un concetto di schema pubblico nello standard SQL". [Postgres Manual] (http://www.postgresql.org/docs/8.1/static/ddl-schemas.html) –

+0

@CarlG Ma ti permette di usare il DB senza conoscenza di uno schema, che è come funzionano gli altri motori (perché non hanno affatto schemi). –

+0

@ElliotCameron Oracle ha schemi, utilizza schemi con gli utenti; gli utenti ottengono il proprio schema, gli schemi possono anche essere condivisi. Microsoft SQL Server ha schemi (come Sybase), con l'impostazione predefinita chiamata 'dbo' equivalente a' public' in PostgreSQL dove, se non si specifica schema, il valore predefinito è 'dbo'. DB2 di IBM ha anche schemi. MySQL ha il sinonimo 'schema', intercambiabile con' database' quindi non è realmente uno schema nel senso degli altri menzionati. – Davos

Problemi correlati