sql >> Database teknologi >  >> RDS >> Mysql

Forholdet mellem katalog, skema, bruger og databaseinstans

I Oracle:

  • serverforekomst ==database ==katalog ==alle data administreret af samme eksekveringsmotor
  • skema ==navneområde i databasen, identisk med brugerkontoen
  • bruger ==skemaejer ==navngivet konto, identisk med skema, som kan oprette forbindelse til databasen, hvem der ejer skemaet og bruge objekter muligvis i andre skemaer
  • for at identificere ethvert objekt i den kørende server, skal du bruge (skemanavn + objektnavn)

I PostgreSQL:

  • serverforekomst ==db-klynge ==alle data administreret af samme eksekveringsmotor
  • database ==katalog ==enkelt database i db-klynge, isoleret fra andre databaser i samme db-klynge
  • skema ==navneområde i databasen
  • bruger ==navngivet konto, som kan oprette forbindelse til databasen, eje og bruge objekter i hver tilladt database separat
  • for at identificere ethvert objekt på den kørende server, skal du bruge (databasenavn + skemanavn + objektnavn)

I MySQL:

  • serverforekomst ==ikke identificeret med katalog, kun et sæt databaser
  • database ==skema ==katalog ==et navneområde på serveren.
  • bruger ==navngivet konto, som kan oprette forbindelse til serveren og bruge (men ikke kan eje - intet begreb om ejerskab) objekter i en eller flere databaser
  • for at identificere ethvert objekt i den kørende server, skal du bruge (databasenavn + objektnavn)

I Microsoft SQL Server:

  • serverforekomst ==sæt administrerede databaser
  • database ==navneområdekvalifikation i serveren, sjældent omtalt som katalog
  • skema ==ejer ==navneområde i databasen, knyttet til databaseroller, som standard kun dbo bruges
  • bruger ==navngivet konto, som kan oprette forbindelse til serveren og bruge (men ikke kan eje - skema fungerer som ejer) objekter i en eller flere databaser
  • for at identificere ethvert objekt i den kørende server, skal du bruge (databasenavn + ejer + objektnavn)

Så jeg tror svaret på dine spørgsmål er:

  1. Det afhænger af implementeringen, om katalognavnet er nødvendigt for at identificere objekter. Betydningen af ​​"katalog", "skema" og "database" varierer fra en implementering til en anden.

  2. Ja, et katalog er en abstraktion af datalagring. Jeg tror, ​​det også bør defineres som et selvstændigt isoleret navneområde, men ikke alle SQL-motorer gør det.

  3. Database og skema er ret godt defineret af alle leverandører. Katalog er nogle gange synonymt med "database" (i hvert fald i Oracle og Postgres), nogle gange synonymt med "skema", og nogle gange synonymt med begge. Udtrykket katalog betyder også ofte metadataindsamling (alias systemtabeller).



  1. MySQL Conditional Insert

  2. Databasestyring og overvågning for PostgreSQL 12

  3. SQL Server-fejl 213:Kolonnenavnet eller antallet af angivne værdier matcher ikke tabeldefinitionen.

  4. Migrering fra MySQL Enterprise til MariaDB 10.3