I databastermer, ett schema (uttalas "skee-muh" eller "skee-mah") är organisationen och strukturen för en databas. Båda scheman och schemata kan användas som pluralformer.
Ett schema innehåller schemaobjekt, som kan vara tabeller, kolumner, datatyper, vyer, lagrade procedurer, relationer, primärnycklar, främmande nycklar, etc.
Ett databasschema kan representeras i ett visuellt diagram som visar databasobjekten och deras relation till varandra.
Ovan är ett enkelt exempel på ett schemadiagram. Den visar tre tabeller, tillsammans med deras datatyper, relationer mellan tabellerna, såväl som deras primärnycklar och främmande nycklar.
Här är ett mer komplext exempel på ett databasschema:
I det här fallet har schemadiagrammet delats upp i fyra avsnitt:
- Kunddata :Data relaterade till kunderna, som deras namn, adress osv.
- Företag :Data som krävs för att driva verksamheten, såsom personal, butiksplatser, betalningsinformation, etc.
- Inventering :Detaljer om alla produkter. I det här fallet är produkterna filmer, så den innehåller data som filmtitel, kategori, skådespelare osv.
- Visningar :Särskild syn på data som används för bedömningar.
Så genom att titta på dessa schemadiagram kan vi gå vidare och skapa en databas. Faktum är att MySQL Workbench låter dig generera en CREATE TABLE
skript direkt från diagrammet. Du kan sedan använda skriptet för att skapa en databas. Du kan till och med omvända en databas till ett diagram.
Är ett schema och en databas samma sak?
Det finns mycket förvirring om scheman när det kommer till databaser. Frågan uppstår ofta om det är skillnad mellan scheman och databaser och i så fall vad är skillnaden.
Beroer på leverantören
En del av anledningen till förvirringen är att databassystem tenderar att närma sig scheman på sitt eget sätt.
- MySQL-dokumentationen säger att fysiskt är
ett schema synonymt med en databas
. Därför är ett schema och en databas samma sak . - Men Oracle Database-dokumentationen anger att vissa objekt kan lagras i en databas men inte i ett schema. Därför är ett schema och en databas två olika saker .
- Och enligt denna SQL Server tekniska artikel är ett schema en separat enhet inuti databasen. Så de är två olika saker .
Så beroende på vilket RDBMS du använder kan scheman och databaser eller inte vara samma sak.
Vad sägs om SQL-standarden?
ISO/IEC 9075-1 SQL-standarden definierar ett schema som en beständig, namngiven samling av deskriptorer
.
Om du var förvirrad tidigare, hoppas jag inte bara har gjort det värre...
Bred betydelse
En annan orsak till förvirringen beror förmodligen på att termen schema har en så vid mening. Det har olika konnotationer inom olika sammanhang.
Ordet schema kommer från det grekiska ordet skhēma , vilket betyder form , figur , form , eller planera .
Schema används inom psykologi för att beskriva ett organiserat tanke- eller beteendemönster som organiserar informationskategorier och relationerna mellan dem.
Innan vi utformar en databas måste vi också titta på informationskategorierna och relationerna mellan dem. Vi måste skapa en konceptuell schemat innan vi ens börjar med det fysiska schema inom DBMS.
Inom mjukvaruutveckling, när man diskuterar scheman, kan man diskutera konceptuella scheman, fysiska scheman, interna scheman, extern scheman, logiska scheman osv. Var och en av dessa har sin egen specifika betydelse.
Schemadefinitioner av DBMS
Här är en snabb definition av schema från de tre ledande databassystemen:
MySQL
Begreppsmässigt är ett schema en uppsättning inbördes relaterade databasobjekt, såsom tabeller, tabellkolumner, datatyper för kolumnerna, index, främmande nycklar och så vidare.
….
I MySQL, fysiskt, ett schema är synonymt med en databas . Du kan ersätta nyckelordet
SCHEMA
istället förDATABASE
i MySQL SQL-syntax, till exempel medCREATE SCHEMA
istället förCREATE DATABASE
.
Källa: "MySQL-ordlista". MySQL 5.7 Referensmanual. MySQL. Hämtad 6 juni 2016.
SQL-server
Namnen på tabeller, fält, datatyper och primära och främmande nycklar för en databas.
"Ordlista". SQL Server 2016 teknisk dokumentation. Microsofts utvecklarnätverk. Hämtad 6 juni 2016.
Oracle Database
Oracle Databases schemasystem skiljer sig ganska mycket från de andra systemen. Oracles schema är mycket kopplat till databasanvändaren.
Ett schema är en samling logiska strukturer av data, eller schemaobjekt. Ett schema ägs av en databasanvändare och har samma namn som den användaren. Varje användare äger ett enda schema.
Källa: ”Databasobjekt”. Oracle Database Online Documentation 12c Release 1 (12.1). Oracles hjälpcenter. Hämtad 6 juni 2016.
Den här artikeln om schemadefinitioner av DBMS ger mer detaljer.
Skapa scheman
Trots deras skillnader i att definiera scheman, stöder var och en av de tre ovannämnda DBMS:erna CREATE SCHEMA
uttalande.
Och det är där likheten slutar.
MySQL
I MySQL, CREATE SCHEMA
skapar en databas.
Detta beror på att CREATE SCHEMA
är en synonym för CREATE DATABASE
. Med andra ord kan du använda CREATE SCHEMA
eller CREATE DATABASE
att göra samma sak.
Oracle Database
I Oracle Database, CREATE SCHEMA
uttalandet skapar faktiskt inte ett schema. Detta beror på att ett schema redan har skapats med varje databasanvändare.
I Oracle visas CREATE USER
uttalande skapar schemat.
I Oracle, CREATE SCHEMA
-satsen låter dig fylla ditt schema med tabeller och vyer och ge privilegier för dessa objekt utan att behöva utfärda flera SQL-satser i flera transaktioner.
SQL-server
I SQL Server, CREATE SCHEMA
kommer att skapa ett schema med det namn du ger det.
Till skillnad från MySQL, CREATE SCHEMA
-satsen skapar ett schema som definieras separat till databasen.
Till skillnad från Oracle, CREATE SCHEMA
uttalandet skapar faktiskt schemat.
När du väl har skapat schemat i SQL Server kan du lägga till användare och objekt till det.
Slutsats
Termen schema kan användas i många olika sammanhang. I samband med att skapa scheman inom ett specifikt databashanteringssystem måste du arbeta med, men det DBMS definierar scheman.
Och när du byter till ett nytt DBMS, se till att söka upp hur det systemet definierar scheman.