Quando si sviluppa un progetto software, uno degli aspetti più importanti, fondamentali e intrinseci è uno schema di database adeguatamente strutturato. È l'equivalente di quando si costruisce una casa è necessario assicurarsi che le fondamenta siano posate correttamente, altrimenti le possibilità di costruire una casa di qualità sono drasticamente ridotte.
Sorprendentemente più facile di quanto si possa pensare, impariamo le varie sfaccettature utilizzate per scrivere uno schema di database ben strutturato.
CREATE TABLE Sintassi
Per iniziare, apri il tuo preferito editor di testo. La creazione di uno schema di database non richiede altro che un semplice file di testo. Un database è costituito da più tabelle, ciascuna composta da colonne e la sintassi CREATE TABLE viene utilizzata per creare una singola tabella. Ecco un esempio di base:
CREATE TABLE utenti (
id INT NON NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) NOT NULL,
email VARCHAR (100) NOT NULL
);
Come puoi vedere, questo creerà una tabella di database denominata
utenti che consiste di quattro colonne. Questa dovrebbe essere un'istruzione SQL abbastanza semplice che inizia con CREA TABELLA, seguito dal nome delle tabelle del database, quindi tra parentesi le colonne della tabella separate da una virgola.Usa i tipi di colonna corretti
Come mostrato sopra, le colonne di cui sarà composta la tabella sono separate da virgole. Ogni definizione di colonna è composta dalle tre stesse parti:
TIPO COL_NAME [OPZIONI]
Il nome della colonna, seguito dal tipo di colonna, quindi da eventuali parametri facoltativi. Entreremo nei parametri opzionali in seguito, ma concentrandoci sul tipo di colonna, di seguito sono elencati i tipi di colonna più comunemente usati disponibili:
A tutti gli effetti, i tipi di colonna sopra sono tutto ciò di cui hai bisogno per scrivere schemi di database mySQL ben costruiti.
Definisci le opzioni delle colonne
Quando si definiscono le colonne ci sono anche varie opzioni che è possibile specificare. Di seguito è riportato un altro esempio di CREA TABELLA dichiarazione:
CREATE TABLE utenti (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome utente VARCHAR (100) NOT NULL UNIQUE,
stato ENUM ('attivo', 'inattivo') NOT NULL DEFAULT 'attivo',
saldo DECIMAL (8,2) NOT NULL DEFAULT 0,
date_of_birth DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Quanto sopra può sembrare un po 'scoraggiante, ma non preoccuparti, è abbastanza semplice. Ripartito, ecco cosa sta succedendo nella dichiarazione sopra:
- Dovresti sempre usare NOT NULL su tutte le colonne possibili per aiutare con la velocità e le prestazioni della tabella. Questo specifica semplicemente che la colonna non può essere lasciata vuota / nulla quando viene inserita una riga.
- Cerca sempre di mantenere la dimensione della colonna il più realisticamente possibile, in quanto aiuta a migliorare la velocità e le prestazioni.
- Il id colonna è un numero intero, è anche la chiave primaria della tabella, il che significa che è unica e aumenterà di uno ogni volta che viene inserito un record. Questo dovrebbe generalmente essere utilizzato su tutte le tabelle che crei in modo da poter fare facilmente riferimento a qualsiasi singola riga all'interno della tabella.
- Il stato la colonna è una ENUM e deve avere un valore "attivo" o "inattivo". Se non viene specificato alcun valore, inizierà una nuova riga con lo stato "attivo".
- Il equilibrio la colonna inizia da 0 per ogni nuova riga ed è un importo formattato con due punti decimali.
- Il data di nascita è semplicemente una DATA ma consente anche un valore nullo poiché la data di nascita potrebbe non essere nota al momento della creazione.
- Infine, il creato_at la colonna è un TIMESTAMP e il valore predefinito è l'ora corrente in cui la riga è stata inserita.
Quanto sopra è un esempio di una tabella di database ben strutturata e dovrebbe essere usato come esempio in futuro.
Uno dei maggiori vantaggi dell'utilizzo di database relazionali come mySQL è il suo eccellente supporto per vincoli di chiave esterna e cascata. Questo è quando si collegano due tabelle insieme da una colonna, formando una relazione padre figlio, quindi quando la riga padre viene eliminata, anche le righe figlio necessarie vengono eliminate automaticamente.
Ecco un esempio:
CREATE TABLE utenti (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome utente VARCHAR (100) NOT NULL UNIQUE,
full_name VARCHAR (100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) motore = InnoDB;
CREA TABELLA ordini (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userid INT NOT NULL,
importo DECIMALE (8,2) NON NULLO,
nome_prodotto VARCHAR (200) NOT NULL,
CHIAVE ESTERA (ID utente) RIFERIMENTI utenti (id) SU DELETE CASCADE
) motore = InnoDB;
Noterai la clausola FOREIGN KEY come ultima riga. Questa riga indica semplicemente che questa tabella contiene righe figlie collegate da ID utente colonna alla riga padre, che è il file id colonna del utenti tavolo. Ciò significa che ogni volta che una riga viene eliminata dal file utenti tabella, mySQL eliminerà automaticamente tutte le righe corrispondenti dal file ordini tabella che aiuta a garantire l'integrità strutturale all'interno del database.
Notare anche il motore = InnoDB alla fine della dichiarazione di cui sopra. Sebbene InnoDB sia ora il tipo di tabella mySQL predefinito, non lo è stato sempre, quindi questo dovrebbe essere aggiunto solo per stare al sicuro, poiché il collegamento a cascata funziona solo con le tabelle InnoDB.
Progettare con fiducia
Ora sei sulla buona strada per progettare schemi di database mySQL solidi e ben strutturati. Utilizzando le conoscenze di cui sopra è ora possibile scrivere schemi ben organizzati che forniscono prestazioni e integrità strutturale.
Con il tuo schema in atto, assicurati di sapere come usarlo con questi comandi SQL essenziali.
Scopri come utilizzare i join SQL per semplificare le query, risparmiare tempo e farti sentire un utente esperto di SQL.
- Non specificato
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Ancora un passo…!
Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.