In databasetermen, een schema (spreek uit als 'skee-muh' of 'skee-mah') is de organisatie en structuur van een database. Beide schema's en schema's kan worden gebruikt als meervoudsvormen.
Een schema bevat schema-objecten, zoals tabellen, kolommen, gegevenstypen, weergaven, opgeslagen procedures, relaties, primaire sleutels, externe sleutels, enzovoort.
Een databaseschema kan worden weergegeven in een visueel diagram, dat de databaseobjecten en hun relatie met elkaar laat zien.
Hierboven ziet u een eenvoudig voorbeeld van een schemadiagram. Het toont drie tabellen, samen met hun gegevenstypen, relaties tussen de tabellen, evenals hun primaire sleutels en externe sleutels.
Hier is een complexer voorbeeld van een databaseschema:
In dit geval is het schemadiagram opgedeeld in vier secties:
- Klantgegevens :Gegevens met betrekking tot de klanten, zoals hun naam, adres, enz.
- Zakelijk :Gegevens die nodig zijn om het bedrijf te runnen, zoals personeel, winkellocaties, betalingsgegevens, enz.
- Inventaris :Details over alle producten. In dit geval zijn de producten films, dus het bevat gegevens zoals de filmtitel, de categorie, de acteurs, enz.
- Beelden :Speciale kijk op gegevens die worden gebruikt voor taxaties.
Dus door naar deze schemadiagrammen te kijken, kunnen we doorgaan en een database maken. Met MySQL Workbench kunt u zelfs een CREATE TABLE
genereren script rechtstreeks uit het diagram. U kunt vervolgens het script gebruiken om een database te maken. Je kunt zelfs een database reverse engineeren tot een diagram.
Is een schema en een database hetzelfde?
Er is veel verwarring over schema's als het gaat om databases. Vaak rijst de vraag of er een verschil is tussen schema's en databases en zo ja, wat is dan het verschil.
Afhankelijk van de leverancier
Een deel van de reden voor de verwarring is dat databasesystemen de neiging hebben om schema's op hun eigen manier te benaderen.
- De MySQL-documentatie stelt dat fysiek
een schema synoniem is met een database
. Daarom zijn een schema en een database hetzelfde hetzelfde . - In de Oracle Database-documentatie staat echter dat bepaalde objecten in een database kunnen worden opgeslagen, maar niet in een schema. Daarom zijn een schema en een database twee verschillende dingen .
- En volgens dit technische artikel van SQL Server is een schema een aparte entiteit binnen de database. Het zijn dus twee verschillende dingen .
Dus, afhankelijk van het RDBMS dat u gebruikt, kunnen schema's en databases wel of niet hetzelfde zijn.
Hoe zit het met de SQL-standaard?
De ISO/IEC 9075-1 SQL-standaard definieert een schema als een een permanente, benoemde verzameling descriptoren
.
Als je eerder in de war was, hoop ik dat ik het niet alleen erger heb gemaakt...
Brede betekenis
Een andere reden voor de verwarring is waarschijnlijk te wijten aan het feit dat de term schema zo'n brede betekenis heeft. Het heeft verschillende connotaties binnen verschillende contexten.
Het woord schema is afkomstig van het Griekse woord skhēma , wat vorm . betekent , cijfer , vorm , of plan .
Schema wordt in de psychologie gebruikt om een georganiseerd denk- of gedragspatroon te beschrijven dat informatiecategorieën en de onderlinge relaties organiseert.
Voordat we een database ontwerpen, moeten we ook kijken naar de informatiecategorieën en de onderlinge relaties. We moeten een conceptuele . maken schema voordat we zelfs maar beginnen met het fysieke schema binnen het DBMS.
Bij softwareontwikkeling zou men bij het bespreken van schema's conceptueel kunnen hebben schema's, fysiek schema's, intern schema's, extern schema's, logisch schema's, enz. Elk van deze heeft zijn eigen specifieke betekenis.
Schemadefinities door DBMS
Hier is een snelle definitie van het schema van de drie toonaangevende databasesystemen:
MySQL
Conceptueel is een schema een set onderling gerelateerde database-objecten, zoals tabellen, tabelkolommen, gegevenstypen van de kolommen, indexen, externe sleutels, enzovoort.
….
In MySQL, fysiek, een schema is synoniem met een database . U kunt het trefwoord SCHEMA
. vervangen in plaats van DATABASE
in MySQL SQL-syntaxis, bijvoorbeeld met behulp van CREATE SCHEMA
in plaats van CREATE DATABASE
.
Bron:"MySQL-woordenlijst". MySQL 5.7 Naslaggids. MijnSQL. Ontvangen 6 juni 2016.
SQL-server
De namen van tabellen, velden, gegevenstypen en primaire en externe sleutels van een database.
"Woordenlijst". SQL Server 2016 technische documentatie. Microsoft-ontwikkelaarsnetwerk. Ontvangen 6 juni 2016.
Oracle-database
Het schemasysteem van Oracle Database is heel anders dan de andere systemen. Het schema van Oracle is sterk gebonden aan de databasegebruiker.
Een schema is een verzameling logische structuren van gegevens of schema-objecten. Een schema is eigendom van een databasegebruiker en heeft dezelfde naam als die gebruiker. Elke gebruiker heeft een enkel schema.
Bron: 'Databaseobjecten'. Oracle Database Online Documentatie 12c Release 1 (12.1). Oracle-helpcentrum. Ontvangen 6 juni 2016.
Dit artikel over schemadefinities door DBMS geeft meer details.
Schema's maken
Ondanks hun verschillen in het definiëren van schema's, ondersteunt elk van de drie bovengenoemde DBMS'en de CREATE SCHEMA
verklaring.
En daar houdt de overeenkomst op.
MySQL
In MySQL, CREATE SCHEMA
creëert een database.
Dit komt omdat CREATE SCHEMA
is een synoniem voor CREATE DATABASE
. Met andere woorden, u kunt CREATE SCHEMA
. gebruiken of CREATE DATABASE
om hetzelfde te doen.
Oracle-database
In Oracle Database, de CREATE SCHEMA
statement maakt niet echt een schema. Dit komt omdat er al een schema is gemaakt met elke databasegebruiker.
In Oracle is de CREATE USER
statement maakt het schema.
In Oracle, CREATE SCHEMA
Met de instructie kunt u uw schema vullen met tabellen en weergaven en rechten toekennen aan die objecten zonder dat u meerdere SQL-instructies in meerdere transacties hoeft uit te geven.
SQL-server
In SQL Server, CREATE SCHEMA
zal een schema maken met de naam die u het geeft.
In tegenstelling tot MySQL, is de CREATE SCHEMA
statement maakt een schema aan dat apart voor de database wordt gedefinieerd.
In tegenstelling tot Oracle, is de CREATE SCHEMA
statement maakt feitelijk het schema.
Nadat u in SQL Server het schema hebt gemaakt, kunt u er gebruikers en objecten aan toevoegen.
Conclusie
De term schema kan in veel verschillende contexten worden gebruikt. In de context van het maken van schema's binnen een specifiek databasebeheersysteem, moet u echter werken met dat DBMS dat schema's definieert.
En als u overstapt naar een nieuw DBMS, moet u opzoeken hoe dat systeem schema's definieert.