A rigor di termini, la differenza tra Database e Schema è inesistente in MySql.
Tuttavia, questo non è il caso di altri motori di database come SQL Server. In SQL server :,
Ogni tabella appartiene a un raggruppamento di oggetti nel database denominato schema del database . È un contenitore o uno spazio dei nomi ( query in Microsoft SQL Server 2012 )
Per impostazione predefinita, tutte le tabelle in SQL Server appartengono a uno schema predefinito denominato dbo . Quando esegui una query su una tabella che non è stata assegnata a uno schema particolare, puoi fare qualcosa come:
SELECT *
FROM your_table
che è equivalente a:
SELECT *
FROM dbo.your_table
Ora, il server SQL consente la creazione di schemi diversi, che ti dà la possibilità di raggruppare tabelle che condividono uno scopo simile. Ciò aiuta a organizzare il database.
Ad esempio, puoi creare uno schema chiamato vendite , con tabelle come fatture , ordini di credito (e qualsiasi altro relativo alle vendite) e un altro schema chiamato ricerca , con tabelle come paesi , valute , tipi di abbonamento (e qualsiasi altra tabella utilizzata come aspetto sul tavolo).
Le tabelle allocate a un dominio specifico vengono visualizzate in SQL Server Studio Manager con il nome dello schema anteposto al nome della tabella (esattamente lo stesso delle tabelle che appartengono allo schema dbo predefinito ).
Esistono schemi speciali in SQL Server. Per citare lo stesso libro:
Esistono diversi schemi di database incorporati e non possono essere eliminati o modificati:
1) dbo , lo schema predefinito.
2) guest contiene oggetti disponibili per un utente guest ("utente guest" è un ruolo speciale nel gergo di SQL Server, con alcune autorizzazioni predefinite e altamente limitate). Utilizzato raramente.
3) INFORMATION_SCHEMA , utilizzato dalle viste dello schema delle informazioni
4) sys , riservato esclusivamente all'uso interno di SQL Server
Gli schemi non sono solo per il raggruppamento. In realtà è possibile assegnare autorizzazioni diverse per ogni schema a utenti diversi, come descritto in MSDN .
In questo modo, la ricerca dello schema sopra menzionata potrebbe essere resa disponibile a qualsiasi utente standard nel database (ad esempio SELECT
solo i permessi), mentre una tabella chiamata Supplierbankaccountdetails può essere allocata in uno schema diverso chiamato financial , e per dare accesso solo agli utenti in il gruppo accounts
(solo un esempio, hai un'idea).
Infine, e citando di nuovo lo stesso libro:
Non è lo stesso schema di database e schema di tabella . Il primo è lo spazio dei nomi di una tabella, mentre il secondo si riferisce alla definizione della tabella