In Oracle:
- serverinstantie ==database ==catalogus ==alle gegevens beheerd door dezelfde uitvoeringsengine
- schema ==naamruimte binnen database, identiek aan gebruikersaccount
- gebruiker ==schema-eigenaar ==genoemd account, identiek aan schema, wie verbinding kan maken met de database, wie eigenaar is van het schema en objecten mogelijk in andere schema's gebruikt
- om een object in een actieve server te identificeren, heb je (schemanaam + objectnaam) nodig
In PostgreSQL:
- serverinstantie ==db cluster ==alle gegevens beheerd door dezelfde uitvoeringsengine
- database ==catalog ==enkele database binnen db-cluster, geïsoleerd van andere databases in dezelfde db-cluster
- schema ==naamruimte in database
- gebruiker ==genoemd account, die verbinding kan maken met de database, objecten kan bezitten en gebruiken in elke toegestane database afzonderlijk
- om een object in een actieve server te identificeren, hebt u (databasenaam + schemanaam + objectnaam) nodig
In MySQL:
- serverinstantie ==niet geïdentificeerd met catalogus, alleen een set databases
- database ==schema ==catalog ==een naamruimte binnen de server.
- gebruiker ==genoemd account, die verbinding kan maken met de server en kan gebruiken (maar niet bezit kan hebben) - geen concept van eigendom) objecten in een of meer databases
- om een object in een actieve server te identificeren, hebt u (databasenaam + objectnaam) nodig
In Microsoft SQL Server:
- serverinstantie ==set van beheerde databases
- database ==naamruimte-kwalificatie binnen de server, zelden catalogus genoemd
- schema ==owner ==naamruimte binnen de database, gekoppeld aan databaserollen, standaard alleen
dbo
wordt gebruikt - gebruiker ==genoemd account, die verbinding kan maken met de server en kan gebruiken (maar niet bezit kan hebben) - schema werkt als eigenaar) objecten in een of meer databases
- om een object in een actieve server te identificeren, hebt u (databasenaam + eigenaar + objectnaam) nodig
Dus ik denk dat het antwoord op je vragen is:
-
Het hangt af van de implementatie of de catalogusnaam nodig is om objecten te identificeren. De betekenis van "catalogus", "schema" en "database" verschilt van implementatie tot implementatie.
-
Ja, een catalogus is een abstractie van gegevensopslag. Ik denk dat het ook moet worden gedefinieerd als een op zichzelf staande geïsoleerde naamruimte, maar niet alle SQL-engines doen het.
-
Database en schema zijn vrij goed gedefinieerd door alle leveranciers. Catalogus is soms synoniem aan "database" (althans in Oracle en Postgres), soms synoniem aan "schema", en soms synoniem aan beide. De term catalogus betekent ook vaak het verzamelen van metagegevens (ook wel systeemtabellen genoemd).