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