In Oracle:
- istanza server ==database ==catalogo ==tutti i dati gestiti dallo stesso motore di esecuzione
- schema ==spazio dei nomi all'interno del database, identico all'account utente
- utente ==proprietario dello schema ==account con nome, identico allo schema, che può connettersi al database, che possiede lo schema e utilizzare oggetti eventualmente in altri schemi
- Per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome schema + nome oggetto)
In PostgreSQL:
- istanza server ==db cluster ==tutti i dati gestiti dallo stesso motore di esecuzione
- database ==catalogo ==database singolo all'interno del cluster di db, isolato da altri database nello stesso cluster di database
- schema ==spazio dei nomi all'interno del database
- utente ==account denominato, che può connettersi al database, possedere e utilizzare oggetti in ogni database consentito separatamente
- per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + nome schema + nome oggetto)
In MySQL:
- istanza del server ==non identificata con il catalogo, solo un insieme di database
- database ==schema ==catalog ==uno spazio dei nomi all'interno del server.
- utente ==account denominato, che può connettersi al server e utilizzarlo (ma non può possedere - nessun concetto di proprietà) oggetti in uno o più database
- Per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + nome oggetto)
In Microsoft SQL Server:
- istanza del server ==insieme di database gestiti
- database ==qualificatore dello spazio dei nomi all'interno del server, raramente indicato come catalogo
- schema ==proprietario ==spazio dei nomi all'interno del database, legato ai ruoli del database, solo per impostazione predefinita
dbo
viene utilizzato - utente ==account denominato, che può connettersi al server e utilizzarlo (ma non può possedere - lo schema funziona come proprietario) oggetti in uno o più database
- per identificare qualsiasi oggetto nel server in esecuzione, è necessario (nome database + proprietario + nome oggetto)
Quindi penso che la risposta alle tue domande sia:
-
Dipende dall'implementazione, se il nome del catalogo è necessario per identificare gli oggetti. Il significato di "catalogo", "schema" e "database" varia da un'implementazione all'altra.
-
Sì, un catalogo è un'astrazione dell'archiviazione dei dati. Penso che dovrebbe anche essere definito come uno spazio dei nomi isolato autonomo, ma non tutti i motori SQL lo fanno.
-
Banca dati e schema sono abbastanza ben definiti da tutti i fornitori. Catalogo a volte è sinonimo di "database" (almeno in Oracle e Postgres), a volte è sinonimo di "schema" ea volte è sinonimo di entrambi. Il termine catalogo spesso significa anche raccolta di metadati (aka tabelle di sistema).