In Oracle:
- Serverinstanz ==Datenbank ==Katalog ==alle Daten werden von derselben Ausführungsmaschine verwaltet
- schema ==Namensraum innerhalb der Datenbank, identisch mit Benutzerkonto
- Benutzer ==Schemaeigentümer ==benanntes Konto, identisch mit Schema, der sich mit der Datenbank verbinden kann, dem das Schema gehört und möglicherweise Objekte in anderen Schemas verwendet
- Um ein beliebiges Objekt im laufenden Server zu identifizieren, benötigen Sie (Schemaname + Objektname)
In PostgreSQL:
- Serverinstanz ==DB-Cluster ==alle Daten werden von derselben Ausführungsmaschine verwaltet
- Datenbank ==Katalog ==einzelne Datenbank innerhalb des DB-Clusters, isoliert von anderen Datenbanken im selben DB-Cluster
- schema ==Namespace innerhalb der Datenbank
- Benutzer ==benanntes Konto, das sich mit der Datenbank verbinden, Objekte in jeder erlaubten Datenbank separat besitzen und verwenden kann
- Um ein beliebiges Objekt im laufenden Server zu identifizieren, benötigen Sie (Datenbankname + Schemaname + Objektname)
In MySQL:
- Serverinstanz ==nicht mit Katalog identifiziert, nur eine Reihe von Datenbanken
- Datenbank ==Schema ==Katalog ==ein Namespace innerhalb des Servers.
- user ==benanntes Konto, das sich mit dem Server verbinden und verwenden kann (aber nicht besitzen kann - kein Eigentumskonzept) Objekte in einer oder mehreren Datenbanken
- Um ein beliebiges Objekt im laufenden Server zu identifizieren, benötigen Sie (Datenbankname + Objektname)
In Microsoft SQL Server:
- Serverinstanz ==Satz verwalteter Datenbanken
- database ==Namespace Qualifier innerhalb des Servers, selten als Katalog bezeichnet
- schema ==Eigentümer ==Namespace innerhalb der Datenbank, gebunden an Datenbankrollen, standardmäßig nur
dbo
verwendet wird - user ==benanntes Konto, das sich mit dem Server verbinden und verwenden kann (aber nicht besitzen kann - Schema fungiert als Eigentümer) von Objekten in einer oder mehreren Datenbanken
- Um ein beliebiges Objekt im laufenden Server zu identifizieren, benötigen Sie (Datenbankname + Eigentümer + Objektname)
Ich denke also, die Antwort auf Ihre Fragen lautet:
-
Es hängt von der Implementierung ab, ob der Katalogname zur Identifizierung von Objekten benötigt wird. Die Bedeutung von "Katalog", "Schema" und "Datenbank" variiert von einer Implementierung zur anderen.
-
Ja, ein Katalog ist eine Abstraktion der Datenspeicherung. Ich denke, es sollte auch als eigenständiger, isolierter Namespace definiert werden, aber nicht alle SQL-Engines tun dies.
-
Datenbank und Schema sind ziemlich gut von allen Anbietern definiert. Katalog ist manchmal ein Synonym für "Datenbank" (zumindest in Oracle und Postgres), manchmal ein Synonym für "Schema" und manchmal ein Synonym für beides. Der Begriff Katalog bedeutet auch oft Metadatensammlung (auch bekannt als Systemtabellen).