I databasetermer er et skema (udtales "skee-muh" eller "skee-mah") er organisationen og strukturen af en database. Begge skemaer og skemata kan bruges som flertalsformer.
Et skema indeholder skemaobjekter, som kan være tabeller, kolonner, datatyper, visninger, lagrede procedurer, relationer, primærnøgler, fremmednøgler osv.
Et databaseskema kan repræsenteres i et visuelt diagram, som viser databaseobjekterne og deres forhold til hinanden.
Ovenfor er et simpelt eksempel på et skemadiagram. Den viser tre tabeller sammen med deres datatyper, relationer mellem tabellerne samt deres primære nøgler og fremmednøgler.
Her er et mere komplekst eksempel på et databaseskema:
I dette tilfælde er skemadiagrammet blevet opdelt i fire sektioner:
- Kundedata :Data relateret til kunderne, såsom deres navn, adresse osv.
- Forretning :Data, der kræves for at drive virksomheden, såsom personale, butikslokaliteter, betalingsoplysninger osv.
- Beholdning :Detaljer om alle produkter. I dette tilfælde er produkterne film, så det indeholder data såsom filmtitel, dens kategori, skuespillerne osv.
- Visninger :Særligt syn på data, der bruges til vurderinger.
Så ved at se på disse skemadiagrammer kunne vi gå videre og oprette en database. Faktisk giver MySQL Workbench dig mulighed for at generere en CREATE TABLE
script direkte fra diagrammet. Du kan derefter bruge scriptet til at oprette en database. Du kan endda omdanne en database til et diagram.
Er et skema og en database det samme?
Der er meget forvirring om skemaer, når det kommer til databaser. Spørgsmålet opstår ofte, om der er forskel mellem skemaer og databaser, og hvis ja, hvad er forskellen.
Afhænger af leverandøren
En del af årsagen til forvirringen er, at databasesystemer har en tendens til at nærme sig skemaer på deres egen måde.
- MySQL-dokumentationen angiver, at fysisk
et skema er synonymt med en database
. Derfor er et skema og en database det samme . - Men Oracle Database-dokumentationen siger, at visse objekter kan gemmes i en database, men ikke i et skema. Derfor er et skema og en database to forskellige ting .
- Og ifølge denne tekniske SQL Server-artikel er et skema en separat enhed inde i databasen. Så de er to forskellige ting .
Så afhængigt af det RDBMS du bruger, skal skemaer og databaser og måske ikke være det samme.
Hvad med SQL-standarden?
ISO/IEC 9075-1 SQL-standarden definerer et skema som en vedvarende, navngivet samling af deskriptorer
.
Hvis du var forvirret før, håber jeg ikke bare har gjort det værre...
Bred betydning
En anden grund til forvirringen skyldes sandsynligvis det faktum, at udtrykket skema har så bred en betydning. Det har forskellige konnotationer inden for forskellige kontekster.
Ordet skema stammer fra det græske ord skhēma , hvilket betyder form , figur , form , eller plan .
Skema bruges i psykologi til at beskrive et organiseret tanke- eller adfærdsmønster, der organiserer informationskategorier og forholdet mellem dem.
Før vi designer en database, skal vi også se på informationskategorierne og relationerne mellem dem. Vi skal skabe en konceptuel skema, før vi overhovedet begynder med det fysiske skema i DBMS.
I softwareudvikling kan man, når man diskuterer skemaer, diskutere konceptuelle skemaer, fysiske skemaer, interne skemaer, eksterne skemaer, logiske skemaer osv. Hver af disse har sin egen specifikke betydning.
Skemadefinitioner efter DBMS
Her er en hurtig definition af skema fra de tre førende databasesystemer:
MySQL
Konceptuelt er et skema et sæt af indbyrdes forbundne databaseobjekter, såsom tabeller, tabelkolonner, datatyper for kolonnerne, indekser, fremmednøgler og så videre.
….
I MySQL, fysisk, et skema er synonymt med en database . Du kan erstatte søgeordet SCHEMA
i stedet for DATABASE
i MySQL SQL-syntaks, for eksempel ved hjælp af CREATE SCHEMA
i stedet for CREATE DATABASE
.
Kilde: "MySQL-ordliste". MySQL 5.7 Referencemanual. MySQL. Hentet 6. juni 2016.
SQL-server
Navnene på tabeller, felter, datatyper og primære og fremmede nøgler i en database.
"Ordliste". SQL Server 2016 teknisk dokumentation. Microsoft Developer Network. Hentet 6. juni 2016.
Oracle-database
Oracle Databases skemasystem er ret anderledes end de andre systemer. Oracles skema er meget knyttet til databasebrugeren.
Et skema er en samling af logiske strukturer af data eller skemaobjekter. Et skema ejes af en databasebruger og har samme navn som denne bruger. Hver bruger ejer et enkelt skema.
Kilde: "Databaseobjekter". Oracle Database Online Dokumentation 12c Release 1 (12.1). Oracle Hjælpecenter. Hentet 6. juni 2016.
Denne artikel om skemadefinitioner af DBMS giver flere detaljer.
Oprettelse af skemaer
På trods af deres forskelle i at definere skemaer, understøtter hver af de tre førnævnte DBMS'er CREATE SCHEMA
erklæring.
Og det er her, ligheden slutter.
MySQL
I MySQL, CREATE SCHEMA
opretter en database.
Dette er fordi CREATE SCHEMA
er et synonym for CREATE DATABASE
. Du kan med andre ord bruge CREATE SCHEMA
eller CREATE DATABASE
at gøre det samme.
Oracle-database
I Oracle Database er CREATE SCHEMA
statement opretter faktisk ikke et skema. Dette skyldes, at der allerede er oprettet et skema med hver databasebruger.
I Oracle er CREATE USER
sætning opretter skemaet.
I Oracle, CREATE SCHEMA
sætning lader dig udfylde dit skema med tabeller og visninger og give privilegier til disse objekter uden at skulle udstede flere SQL-sætninger i flere transaktioner.
SQL-server
I SQL Server, CREATE SCHEMA
vil oprette et skema ved det navn, du giver det.
I modsætning til MySQL er CREATE SCHEMA
sætning opretter et skema, der er defineret separat til databasen.
I modsætning til Oracle er CREATE SCHEMA
sætning opretter faktisk skemaet.
I SQL Server, når du har oprettet skemaet, kan du tilføje brugere og objekter til det.
Konklusion
Udtrykket skema kan bruges i mange forskellige sammenhænge. I forbindelse med oprettelse af skemaer inden for et specifikt databaseadministrationssystem skal du arbejde med, men det DBMS definerer skemaer.
Og når du skifter til et nyt DBMS, skal du sørge for at slå op, hvordan systemet definerer skemaer.