Differenza tra database vs utente vs schema


Risposte:


78

In Oracle, utenti e schemi sono essenzialmente la stessa cosa. È possibile considerare che un utente è l'account utilizzato per connettersi a un database e uno schema è l'insieme di oggetti (tabelle, viste, ecc.) Che appartengono a tale account.

Vedi questo post su Stack Overflow: differenza tra un utente e uno schema in Oracle? per maggiori dettagli e collegamenti extra.

Si creano utenti con la create userdichiarazione. Questo "crea" anche lo schema (inizialmente vuoto): non è possibile creare uno schema in quanto tale, è legato all'utente. Una volta creato l'utente, un amministratore può concedere privilegi all'utente, che gli consentirà di creare tabelle, eseguire selectquery inserte tutto il resto.

Il database è la cosa che contiene tutti gli utenti che hai creato e i loro dati (e un gruppo di utenti di sistema predefiniti, tabelle, viste, ecc. Che fanno funzionare tutto). Dovresti guardare la documentazione di Oracle Database Architecture nella Guida ai concetti (in realtà, l'intera pagina merita una lettura - c'è una sezione sugli utenti e gli schemi più in alto in quella pagina) per avere un'introduzione a cosa sia un database e cosa istanza del database è - due concetti importanti.

È possibile creare un database con l' create databaseistruzione, dopo aver installato lo stack software Oracle. Ma l'utilizzo dbca(assistente per la creazione del database) è più semplice per iniziare.


2

Secondo il modo in cui viene talvolta utilizzata la terminologia , a USERe a SCHEMAsono in qualche modo simili. Ma c'è anche una grande differenza. A USERpuò essere chiamato a SCHEMAse il " USER" possiede un oggetto, altrimenti rimarrà solo un " USER". Una volta che USERpossiede almeno un oggetto, in virtù di tutte le definizioni sopra ... USERora può essere chiamato a SCHEMA.


Penso che ciò che stai sottolineando sia che il termine "SCHEMA" ha molte sfaccettature. È uno spazio dei nomi per gli oggetti del database da un lato. Inoltre, in Oracle (e altri?) Ma non in PostgreSQL, si tratta di uno spazio dei nomi di oggetti di database contenente esattamente gli oggetti creati dall'utente che condividono il nome dello schema. Da un'altra prospettiva, sono le relazioni e la struttura degli oggetti in un database, spesso ignorando sia la proprietà che lo spazio dei nomi.
Andrew Wolfe,

2

Per iniziare a capire la differenza, penso che dobbiamo iniziare a dire che questa nomenclatura è stata un errore di Oracle.

Suppongo che se hai un ERP chiamato TRITON vuoi che il tuo database sia chiamato TRITON, o se la mia azienda si chiama JENNY EXPORT potrei decidere che il mio database si chiamerà JENNYEXP o qualcosa del genere, non c'è bisogno di nessun utente con lo stesso nome .

In Oracle, è necessario creare un USER prima di creare le tabelle e abbastanza strano questa raccolta di TABELLE si chiama SCHEMA.

Quindi potresti creare gli utenti effettivi e concedere le autorizzazioni appropriate per lavorare con un database come TRITON come in questo esempio, a proposito, se ti connetti tramite SQL DEVELOPER devi NOME A CONNECTION.

So di sembrare un po 'frustrato, ma per me ha più senso la convenzione di denominazione MS SQL SERVER e potrei aggiungere che ho lavorato con Oracle prima di SQL SERVER.


1

Banca dati.

La base di dati è una raccolta di dati, in cui sono effettivamente memorizzati i dati. È un componente di memoria fisica collegato a un computer installato con il software DBMS per manipolare i dati in quel componente di memoria, il computer installato con il software dbms è chiamato Server o Database Server. Sia Server (Computer) sia Database (componente di memoria) sono diversi ma Il più delle volte indicato come Stesso in base alla situazione.

UTENTE e SCHEMA

Entrambe le parole, utente e schema, sono intercambiabili, ecco perché la maggior parte delle persone si confonde su queste parole.

Utente

L'utente è un account per la connessione al database (Server). possiamo creare un utente utilizzando CREATE USER IDENTIFICATO DA.

Schema

In realtà Oracle Database contiene una struttura logica e fisica per elaborare i dati. Lo schema inoltre struttura logica per elaborare i dati nel database (componente di memoria). Viene creato automaticamente da Oracle quando viene creato dall'utente. Contiene tutti gli oggetti creati dall'utente associato a quello schema. Ad esempio, se ho creato un utente con nome, santhoshOracle crea uno schema chiamato santhosh, Oracle memorizza tutti gli oggetti creati dall'utente santhoshnello santhoshschema.

Possiamo creare uno schema usando l' CREATE SCHEMAistruzione, ma Oracle crea automaticamente un utente per quello schema.

È possibile eliminare lo schema utilizzando l' DROP SCHEMA <name> RESTRICTistruzione, ma non è possibile eliminare gli oggetti contenuti nello schema, quindi per eliminare lo schema, deve essere vuoto. qui la parola di limitazione ti costringe a specificare quello schema senza oggetti.

Se proviamo a eliminare un utente contenente oggetti nel suo schema, dobbiamo specificare la CASCADEparola perché Oracle non consente di eliminare un utente contenente oggetti.

DROP USER <name> CASCADE

così Oracle elimina gli oggetti nello schema e quindi rilascia automaticamente l'utente, gli oggetti riferiti a questi oggetti dello schema da altri schemi come visualizzazioni e sinonimi privati ​​passano allo stato non valido.


-2

Aggiungerei che le affermazioni sopra si applicano all'implementazione di Oracle, ma altri database tra cui SQL Server e PostgreSQL usano lo schema solo come uno spazio dei nomi, cioè un modo per raggruppare gli oggetti. Ad esempio, lo schema di gestione temporanea potrebbe raggruppare tutti gli oggetti utilizzati nei dati di gestione temporanea, lo schema di contabilità potrebbe raggruppare tutti gli oggetti relativi alla contabilità.


Non sei sicuro di cosa ti riferisci quando dici "istruzioni sopra" ma lo schema in SQL e in Oracle è un raggruppamento di autorizzazioni. In altre parole, non è solo un modo per raggruppare oggetti simili, ma un modo per raggruppare oggetti che faciliterà la gestione delle autorizzazioni in quanto è possibile concedere autorizzazioni a uno schema e quindi evitare di concedere autorizzazioni a ciascun oggetto all'interno dello schema.
Thronk,

-4

Utente! = Schema, User e Schema non sono uguali ma sono usati in modo intercambiabile


2
Si prega di aggiungere dettagli riguardo a come sono diversi.
Erik,

-4

Ti sto dicendo in base a concetti non basati su alcun tipo di sistema di gestione del database che stai utilizzando.

Concettualmente: Database: è solo un mucchio di dati, per lo più dati correlati o non correlati non gestiti .

Schema: lo schema si riferisce alla strutturazione formale dei dati correlati / non correlati non gestiti in modo che possano essere gestiti da un sistema di gestione che comprende la definizione formale fornita dallo schema. Lo schema è sostanzialmente uno schema per fornire una panoramica. Ad esempio hai XSD che definisce lo schema per creare XML. Hai RDBMS che definisce i suoi schemi basati su Regole Codd che sostanzialmente definiscono schemi per creare RDBMS.

Ora, se vuoi saperne di più, consulta questo link .

L'utente utilizza il linguaggio formale specificato dallo schema per accedere al database

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.