W Oracle:
- instancja serwera ==baza danych ==katalog ==wszystkie dane zarządzane przez ten sam silnik wykonawczy
- schema ==przestrzeń nazw w bazie danych, identyczna z kontem użytkownika
- użytkownik ==właściciel schematu ==nazwane konto, identyczne ze schematem, które może łączyć się z bazą danych, kto jest właścicielem schematu i może używać obiektów ewentualnie w innych schematach
- aby zidentyfikować dowolny obiekt na uruchomionym serwerze, potrzebujesz (nazwa schematu + nazwa obiektu)
W PostgreSQL:
- instancja serwera ==klaster db ==wszystkie dane zarządzane przez ten sam silnik wykonawczy
- baza danych ==katalog ==pojedyncza baza danych w klastrze db, odizolowana od innych baz danych w tym samym klastrze db
- schema ==przestrzeń nazw w bazie danych
- użytkownik ==nazwane konto, które może łączyć się z bazą danych, posiadać i używać obiektów w każdej dozwolonej bazie danych oddzielnie
- aby zidentyfikować dowolny obiekt na uruchomionym serwerze, potrzebujesz (nazwa bazy danych + nazwa schematu + nazwa obiektu)
W MySQL:
- Instancja serwera ==niezidentyfikowana z katalogiem, tylko zestaw baz danych
- baza danych ==schemat ==katalog ==przestrzeń nazw na serwerze.
- użytkownik ==nazwane konto, które może łączyć się z serwerem i używać (ale nie może być właścicielem - brak koncepcji własności) obiektów w jednej lub kilku bazach danych
- aby zidentyfikować dowolny obiekt na uruchomionym serwerze, potrzebujesz (nazwa bazy danych + nazwa obiektu)
W Microsoft SQL Server:
- instancja serwera ==zestaw zarządzanych baz danych
- baza danych ==kwalifikator przestrzeni nazw na serwerze, rzadko określany jako katalog
- schema ==właściciel ==przestrzeń nazw w bazie danych, powiązana z rolami bazy danych, domyślnie tylko
dbo
jest używany - użytkownik ==nazwane konto, które może łączyć się z serwerem i używać (ale nie może być właścicielem - schemat działa jako właściciel) obiektów w jednej lub kilku bazach danych
- aby zidentyfikować dowolny obiekt na uruchomionym serwerze, potrzebujesz (nazwa bazy danych + właściciel + nazwa obiektu)
Myślę więc, że odpowiedź na Twoje pytania brzmi:
-
Od implementacji zależy, czy do identyfikacji obiektów potrzebna jest nazwa katalogowa. Znaczenie „katalogu”, „schematu” i „bazy danych” różni się w zależności od implementacji.
-
Tak, katalog jest abstrakcją przechowywania danych. Myślę, że należy to również zdefiniować jako samodzielną izolowaną przestrzeń nazw, ale nie wszystkie silniki SQL to robią.
-
Baza danych i schemat są dość dobrze zdefiniowane przez wszystkich dostawców. Katalog czasami jest synonimem „bazy danych” (przynajmniej w Oracle i Postgres), czasami jest synonimem „schematu”, a czasami jest synonimem obu. Termin katalog często oznacza również zbieranie metadanych (tzw. tabele systemowe).