In termini di database, uno schema (pronunciato "skee-muh" o "skee-mah") è l'organizzazione e la struttura di un database. Entrambi gli schemi e schemi può essere usato come forme plurali.
Uno schema contiene oggetti dello schema, che potrebbero essere tabelle, colonne, tipi di dati, viste, stored procedure, relazioni, chiavi primarie, chiavi esterne e così via.
Uno schema di database può essere rappresentato in un diagramma visivo, che mostra gli oggetti del database e la loro relazione tra loro.
Sopra è un semplice esempio di diagramma di schema. Mostra tre tabelle, insieme ai loro tipi di dati, alle relazioni tra le tabelle, nonché alle loro chiavi primarie e chiavi esterne.
Ecco un esempio più complesso di schema di database:
In questo caso, il diagramma dello schema è stato suddiviso in quattro sezioni:
- Dati del cliente :dati relativi ai clienti, come nome, indirizzo e così via
- Affari :i dati necessari per gestire l'attività, come il personale, i punti vendita, i dettagli di pagamento e così via
- Inventario :Dettagli su tutti i prodotti. In questo caso i prodotti sono film, quindi contiene dati come il titolo del film, la sua categoria, gli attori, ecc.
- Viste :Vista speciale sui dati utilizzati per le valutazioni.
Quindi, guardando questi diagrammi dello schema, potremmo andare avanti e creare un database. Infatti, MySQL Workbench ti consente di generare un CREATE TABLE
script direttamente dal diagramma. Puoi quindi utilizzare lo script per creare un database. Puoi persino eseguire il reverse engineering di un database in un diagramma.
Uno schema e un database sono la stessa cosa?
C'è molta confusione sugli schemi quando si tratta di database. Sorge spesso la domanda se c'è una differenza tra schemi e database e, in tal caso, qual è la differenza.
Dipende dal venditore
Parte del motivo della confusione è che i sistemi di database tendono ad avvicinarsi agli schemi a modo loro.
- La documentazione di MySQL afferma che fisicamente
uno schema è sinonimo di database
. Pertanto, uno schema e un database sono la la stessa cosa . - Tuttavia, la documentazione di Oracle Database afferma che alcuni oggetti possono essere archiviati all'interno di un database ma non all'interno di uno schema. Pertanto, uno schema e un database sono due cose diverse .
- E secondo questo articolo tecnico di SQL Server, uno schema è un'entità separata all'interno del database. Quindi, sono due cose diverse .
Quindi, a seconda dell'RDBMS che utilizzi, schemi e database potrebbero o non essere la stessa cosa.
E lo standard SQL?
Lo standard SQL ISO/IEC 9075-1 definisce uno schema come una raccolta di descrittori persistente e denominata
.
Se prima eri confuso, spero di non aver solo peggiorato le cose...
Ampio significato
Un altro motivo di confusione è probabilmente dovuto al fatto che il termine schema ha un significato così ampio. Ha connotazioni diverse all'interno di contesti diversi.
La parola schema ha origine dalla parola greca skhēma , che significa modulo , figura , forma o pianifica .
Lo schema viene utilizzato in psicologia per descrivere un modello organizzato di pensiero o comportamento che organizza le categorie di informazioni e le relazioni tra di esse.
Prima di progettare un database, dobbiamo esaminare le categorie di informazioni e le relazioni tra di esse. Dobbiamo creare un concettuale schema prima ancora di iniziare con il fisico schema all'interno del DBMS.
Nello sviluppo del software, quando si discute di schemi, si potrebbe parlare di concettuale schemi, fisici schemi, interni schemi, esterno schemi, logici schemi, ecc. Ognuno di questi ha il suo significato specifico.
Definizioni dello schema per DBMS
Ecco una rapida definizione dello schema dai tre principali sistemi di database:
MySQL
Concettualmente, uno schema è un insieme di oggetti di database correlati, come tabelle, colonne di tabelle, tipi di dati delle colonne, indici, chiavi esterne e così via.
….
In MySQL, fisicamente, uno schema è sinonimo di database . Puoi sostituire la parola chiave SCHEMA
invece di DATABASE
nella sintassi SQL di MySQL, ad esempio usando CREATE SCHEMA
invece di CREATE DATABASE
.
Fonte: "Glossario MySQL". MySQL 5.7 Manuale di riferimento. MySQL. Estratto il 6 giugno 2016.
SQL Server
I nomi di tabelle, campi, tipi di dati e chiavi primarie ed esterne di un database.
"Glossario". Documentazione tecnica di SQL Server 2016. Rete di sviluppatori Microsoft. Estratto il 6 giugno 2016.
Database Oracle
Il sistema dello schema di Oracle Database è abbastanza diverso dagli altri sistemi. Lo schema di Oracle è molto legato all'utente del database.
Uno schema è una raccolta di strutture logiche di dati o oggetti dello schema. Uno schema è di proprietà di un utente del database e ha lo stesso nome di quell'utente. Ogni utente possiede un singolo schema.
Fonte: "Oggetti di database". Documentazione Oracle Database Online 12c Release 1 (12.1). Centro assistenza Oracle. Estratto il 6 giugno 2016.
Questo articolo sulle definizioni degli schemi tramite DBMS fornisce maggiori dettagli.
Creazione di schemi
Nonostante le differenze nella definizione degli schemi, ciascuno dei tre DBMS summenzionati supporta il CREATE SCHEMA
dichiarazione.
Ed è qui che finisce la somiglianza.
MySQL
In MySQL, CREATE SCHEMA
crea un database.
Questo perché CREATE SCHEMA
è sinonimo di CREATE DATABASE
. In altre parole, puoi utilizzare CREATE SCHEMA
o CREATE DATABASE
fare la stessa cosa.
Database Oracle
In Oracle Database, CREATE SCHEMA
istruzione in realtà non crea uno schema. Questo perché uno schema è già stato creato con ogni utente del database.
In Oracle, il CREATE USER
istruzione crea lo schema.
In Oracle, CREATE SCHEMA
istruzione ti consente popolare il tuo schema con tabelle e viste e concedere privilegi su tali oggetti senza dover emettere più istruzioni SQL in più transazioni.
SQL Server
In SQL Server, CREATE SCHEMA
creerà uno schema con il nome che gli dai.
A differenza di MySQL, il CREATE SCHEMA
istruzione crea uno schema che viene definito separatamente nel database.
A differenza di Oracle, il CREATE SCHEMA
istruzione crea effettivamente lo schema.
In SQL Server, una volta creato lo schema, puoi aggiungervi utenti e oggetti.
Conclusione
Il termine schema può essere utilizzato in molti contesti diversi. Nel contesto della creazione di schemi all'interno di uno specifico sistema di gestione del database, dovrai lavorare con tuttavia il DBMS definisce gli schemi.
E quando passi a un nuovo DBMS, assicurati di cercare come quel sistema definisce gli schemi.