sql >> Databasteknik >  >> RDS >> Mysql

Relation mellan katalog, schema, användare och databasinstans

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:

  1. 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.

  2. 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.

  3. 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).



  1. MySQL återställningsfråga

  2. java - passerar array i oracle lagrad procedur

  3. Redigera tabellrader / poster i SQL Server Management Studio ( SSMS) - SQL Server självstudie / TSQL självstudie del 18

  4. Lägga till en frågetips när du anropar tabellvärderad funktion