sql >> Databasteknik >  >> RDS >> Mysql

Vad är ett databasschema?

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 formfigur , 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ör DATABASE i MySQL SQL-syntax, till exempel med CREATE SCHEMA istället för CREATE 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.


  1. Grunderna för att ställa in MySQL på dedikerade servrar

  2. XML-tabell med Oracle 11g

  3. Hur konverterar man tidsstämpel till datetime i MySQL?

  4. Hur man använder STRCMP() för att jämföra 2 strängar i MySQL