V Oracle:
- instance serveru ==databáze ==katalog ==všechna data spravovaná stejným prováděcím modulem
- schéma ==jmenný prostor v databázi, identický s uživatelským účtem
- uživatel ==vlastník schématu ==pojmenovaný účet, identický se schématem, který se může připojit k databázi, který vlastní schéma a případně používat objekty v jiných schématech
- k identifikaci jakéhokoli objektu na běžícím serveru potřebujete (název schématu + název objektu)
V PostgreSQL:
- instance serveru ==db cluster ==všechna data spravovaná stejným prováděcím modulem
- databáze ==katalog ==jedna databáze v clusteru db, izolovaná od ostatních databází ve stejném clusteru db
- schéma ==jmenný prostor v databázi
- uživatel ==pojmenovaný účet, který se může připojit k databázi, vlastnit a používat objekty v každé povolené databázi samostatně
- k identifikaci jakéhokoli objektu na běžícím serveru potřebujete (název databáze + název schématu + název objektu)
V MySQL:
- instance serveru ==není identifikována s katalogem, jde pouze o sadu databází
- databáze ==schéma ==katalog ==jmenný prostor na serveru.
- uživatel ==pojmenovaný účet, který se může připojit k serveru a používat (ale nemůže vlastnit - žádná koncepce vlastnictví) objektů v jedné nebo více databázích
- k identifikaci jakéhokoli objektu na běžícím serveru potřebujete (název databáze + název objektu)
V Microsoft SQL Server:
- instance serveru ==sada spravovaných databází
- databáze ==kvalifikátor jmenného prostoru na serveru, zřídka označovaný jako katalog
- schéma ==vlastník ==jmenný prostor v databázi, spojený s databázovými rolemi, ve výchozím nastavení pouze
dbo
se používá - uživatel ==pojmenovaný účet, který se může připojit k serveru a používat (ale nemůže vlastnit - schéma funguje jako vlastník) objektů v jedné nebo více databázích
- k identifikaci jakéhokoli objektu na běžícím serveru potřebujete (název databáze + vlastník + název objektu)
Takže myslím, že odpověď na vaše otázky je:
-
Záleží na implementaci, zda je k identifikaci objektů potřeba katalogový název. Význam „katalog“, „schéma“ a „databáze“ se liší od jedné implementace k druhé.
-
Ano, katalog je abstrakce úložiště dat. Myslím, že by měl být také definován jako samostatný izolovaný jmenný prostor, ale ne všechny SQL motory to dělají.
-
Databáze a schéma jsou docela dobře definovány všemi prodejci. Katalog je někdy synonymem pro „databáze“ (alespoň v Oracle a Postgres), někdy synonymem pro „schéma“ a někdy synonymem pro obojí. Termín katalog také často znamená sběr metadat (aka systémové tabulky).