I Oracle:
- serverinstans ==databas ==katalog ==all data som hanteras av samma exekveringsmotor
- schema ==namnutrymme i databasen, identiskt med användarkontot
- användare ==schemaägare ==namngett konto, identiskt med schema, som kan ansluta till databasen, vem som äger schemat och använder objekt eventuellt i andra scheman
- för att identifiera ett objekt på en server som körs behöver du (schemanamn + objektnamn)
I PostgreSQL:
- serverinstans ==db-kluster ==all data som hanteras av samma exekveringsmotor
- databas ==katalog ==enskild databas inom db-kluster, isolerad från andra databaser i samma db-kluster
- schema ==namnutrymme i databasen
- användare ==namngett konto, som kan ansluta till databasen, äga och använda objekt i varje tillåten databas separat
- för att identifiera ett objekt på den körande servern behöver du (databasnamn + schemanamn + objektnamn)
I MySQL:
- serverinstans ==identifieras inte med katalog, bara en uppsättning databaser
- databas ==schema ==katalog ==ett namnområde inom servern.
- användare ==namngett konto, som kan ansluta till servern och använda (men inte kan äga - inget begrepp om ägande) objekt i en eller flera databaser
- för att identifiera ett objekt på en server som körs behöver du (databasnamn + objektnamn)
I Microsoft SQL Server:
- serverinstans ==uppsättning hanterade databaser
- databas ==namnområdeskvalificerare inom servern, sällan kallad katalog
- schema ==ägare ==namnutrymme i databasen, kopplat till databasroller, som standard endast
dbo
används - användare ==namngett konto, som kan ansluta till servern och använda (men inte kan äga - schema fungerar som ägare) objekt i en eller flera databaser
- för att identifiera något objekt i körande server behöver du (databasnamn + ägare + objektnamn)
Så jag tror att svaret på dina frågor är:
-
Det beror på implementering, om katalognamn behövs för att identifiera objekt. Innebörden av "katalog", "schema" och "databas" varierar från en implementering till en annan.
-
Ja, en katalog är en abstraktion av datalagring. Jag tror att det också borde definieras som ett fristående isolerat namnutrymme, men inte alla SQL-motorer gör det.
-
Databas och schema är ganska väl definierade av alla leverantörer. Katalog är ibland synonymt med "databas" (åtminstone i Oracle och Postgres), ibland synonymt med "schema", och ibland synonymt med båda. Termen katalog betyder också ofta insamling av metadata (alias systemtabeller).