Vai al contenuto

Basi di dati relazionali per principianti

Da WikiJournal.

Cos'è un database relazionale?

Immagina di gestire un negozio online. Hai informazioni sui clienti, i loro ordini e i prodotti. Come puoi organizzare tutti questi dati? Un database relazionale consente di archiviare informazioni in tabelle collegate tra loro, simili ai fogli di calcolo di Excel, ma molto più potenti.

Concetti di base

Tabelle

Ogni tabella rappresenta un'entità specifica. Ad esempio:

  • Tabella degli utenti (users)
  • Tabella degli ordini (orders)
  • Tabella dei prodotti (products)

Campi (Colonne)

Ogni tabella è composta da campi. Ad esempio, per la tabella degli utenti, questi potrebbero essere:

  • id (identificativo univoco)
  • nome
  • email
  • telefono
  • data di registrazione

Record (Righe)

Questi sono i dati concreti in una tabella. Una riga = un record su un utente, un ordine o un prodotto.

Come sono collegate le tabelle?

Chiavi primarie

Ogni tabella deve avere un identificativo univoco per ogni record. In genere, questo è il campo id:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100)
);

Chiavi esterne

Sono campi che collegano una tabella a un'altra. Ad esempio, nella tabella degli ordini, memorizziamo l'id dell'utente:

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    order_date DATETIME,
    total_amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

Tipi di relazioni tra tabelle

Uno a uno (One-to-One)

Ad esempio, un utente può avere un profilo con informazioni aggiuntive:

CREATE TABLE user_profiles (
    user_id INT PRIMARY KEY,
    address TEXT,
    phone VARCHAR(20),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

Uno a molti (One-to-Many)

Il tipo di relazione più comune. Ad esempio, un utente può avere molti ordini:

  • Un utente → Molti ordini
  • Un prodotto → Molti commenti
  • Una categoria → Molti prodotti

Molti a molti (Many-to-Many)

Ad esempio, un ordine può contenere molti prodotti e un prodotto può essere incluso in molti ordini. Per fare ciò, si crea una tabella intermedia:

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    FOREIGN KEY (order_id) REFERENCES orders(id),
    FOREIGN KEY (product_id) REFERENCES products(id),
    PRIMARY KEY (order_id, product_id)
);

Vantaggi del modello relazionale

  1. Integrità dei dati: Il sistema garantisce che tutte le relazioni siano valide.
  2. Nessuna duplicazione: Le informazioni vengono archiviate in un unico posto e collegate tramite chiavi.
  3. Flessibilità: È facile aggiungere nuove relazioni e modificare la struttura.
  4. Efficienza: Ricerca e gestione dei dati rapide grazie agli indici.

Esempio pratico

Vediamo un esempio semplice di un sistema di blog:

-- Tabella degli utenti
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    created_at DATETIME
);

-- Tabella degli articoli
CREATE TABLE posts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    title VARCHAR(200),
    content TEXT,
    published_at DATETIME,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Tabella dei commenti
CREATE TABLE comments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    post_id INT,
    user_id INT,
    comment_text TEXT,
    created_at DATETIME,
    FOREIGN KEY (post_id) REFERENCES posts(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

In questo esempio:

  • Un utente può creare molti articoli (uno a molti)
  • Ogni articolo può avere molti commenti (uno a molti)
  • Ogni commento è collegato sia a un articolo che a un utente

Conclusione

I database relazionali sono uno strumento potente per organizzare i dati in un'applicazione. Comprendere i principi di base del loro funzionamento è essenziale per i principianti. Una struttura di database ben progettata rende un'applicazione più affidabile, efficiente e facile da mantenere.