MySQL - Chiave Composta

Ciao, appassionati di database in erba! Oggi ci imbarcheremo in un viaggio emozionante nel mondo delle Chiavi Composte di MySQL. Non preoccupatevi se siete nuovi alla programmazione - vi guiderò attraverso questo concetto passo per passo, proprio come ho fatto per centinaia di studenti durante gli anni della mia insegnanza. Allora, prendete una tazza della vostra bevanda preferita e tuffiamoci dentro!

MySQL - Composite Key

Cos'è una Chiave Composta?

Prima di addentrarci nei dettagli, capiremo cos'è una chiave composta. Immaginate di organizzare una biblioteca mastodontica. Potreste pensare che il solo titolo di un libro sia sufficiente per identificarlo in modo univoco. Ma cosa succede se due libri hanno lo stesso titolo? È qui che entra in gioco la chiave composta!

Una chiave composta è una combinazione di due o più colonne che insieme identificano in modo univoco una riga in una tabella. È come usare sia il titolo del libro che il nome dell'autore per assicurarsi di parlare esattamente del libro che si desidera.

Creare una Chiave Composta in MySQL

Ora che sappiamo cos'è una chiave composta, impariamo come crearne una in MySQL. Useremo un esempio semplice di una tabella library per illustrare questo concetto.

Passo 1: Creare una Tabella con una Chiave Composta

CREATE TABLE library (
book_title VARCHAR(100),
author_name VARCHAR(50),
publish_year INT,
ISBN VARCHAR(13),
PRIMARY KEY (book_title, author_name)
);

In questo esempio, stiamo creando una tabella chiamata library. La chiave composta è formata dalla combinazione di book_title e author_name. Questo significa che mentre potremmo avere più libri con lo stesso titolo o più libri dello stesso autore, la combinazione di titolo e autore deve essere univoca.

Passo 2: Inserire Dati

Aggiungiamo alcuni libri alla nostra biblioteca:

INSERT INTO library (book_title, author_name, publish_year, ISBN)
VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 1925, '9780743273565'),
('To Kill a Mockingbird', 'Harper Lee', 1960, '9780446310789'),
('1984', 'George Orwell', 1949, '9780451524935'),
('Pride and Prejudice', 'Jane Austen', 1813, '9780141439518');

Ora, se tentiamo di inserire una voce duplicata:

INSERT INTO library (book_title, author_name, publish_year, ISBN)
VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 2000, '1234567890123');

MySQL genererà un errore perché stiamo violando il vincolo della chiave composta. La combinazione di 'The Great Gatsby' e 'F. Scott Fitzgerald' già esiste nella nostra tabella.

Rimuovere una Chiave Composta in MySQL

A volte, potrebbe essere necessario rimuovere una chiave composta. Non preoccupatevi; non è così spaventoso come sembra! È come decidere di riorganizzare la vostra biblioteca in un modo diverso.

Ecco come potete rimuovere una chiave composta:

ALTER TABLE library
DROP PRIMARY KEY;

Questo comando rimuove il vincolo della chiave primaria dalla nostra tabella library. Ma fate attenzione! Questo significa che non avete più un identificatore univoco per le vostre righe, il che potrebbe portare a voci duplicate.

Chiave Composta Utilizzando un Programma Client

Ora vediamo come possiamo lavorare con le chiavi composte utilizzando un programma client MySQL. Userò il client della riga di comando MySQL per questo esempio, ma i concetti si applicano anche ad altri programmi client.

  1. Prima di tutto, connettetevi al vostro server MySQL:
mysql -u your_username -p
  1. Selezionate il vostro database:
USE your_database_name;
  1. Ora, creiamo una nuova tabella con una chiave composta:
CREATE TABLE students (
student_id INT,
course_id INT,
enrollment_date DATE,
grade FLOAT,
PRIMARY KEY (student_id, course_id)
);

In questo esempio, stiamo creando una tabella students dove ogni riga rappresenta uno studente iscritto a un corso. La chiave composta è formata da student_id e course_id, assicurando che uno studente non possa iscriversi due volte allo stesso corso.

  1. Inseriamo alcuni dati:
INSERT INTO students (student_id, course_id, enrollment_date, grade)
VALUES
(1, 101, '2023-09-01', 85.5),
(1, 102, '2023-09-01', 92.0),
(2, 101, '2023-09-01', 78.5),
(2, 103, '2023-09-02', 88.0);
  1. Ora, se tentiamo di inserire una voce duplicata:
INSERT INTO students (student_id, course_id, enrollment_date, grade)
VALUES (1, 101, '2023-09-15', 90.0);

Il programma client mostrerà un messaggio di errore perché stiamo violando il vincolo della chiave composta.

Conclusione

Complimenti! Avete appena compiuto i vostri primi passi nel mondo delle Chiavi Composte di MySQL. Ricordate, le chiavi composte sono come il duo dinamico del mondo dei database - lavorano insieme per mantenere i dati unici e organizzati.

Mentre continuate il vostro viaggio nella gestione dei database, troverete le chiavi composte estremamente utili per mantenere l'integrità dei dati e stabilire relazioni tra tabelle. Sono particolarmente utili quando una singola colonna non è sufficiente per identificare univocamente una riga.

Continuate a esercitarvi e presto sarete in grado di creare e gestire chiavi composte come un professionista! E ricorda, nel mondo dei database, come nella vita, a volte due (o più) sono meglio di uno!

Metodo Descrizione
CREATE TABLE ... PRIMARY KEY (colonna1, colonna2) Crea una tabella con una chiave composta
ALTER TABLE ... ADD PRIMARY KEY (colonna1, colonna2) Aggiunge una chiave composta a una tabella esistente
ALTER TABLE ... DROP PRIMARY KEY Rimuove la chiave primaria (composta o meno) da una tabella
INSERT INTO ... VALUES ... Inserisce dati, rispettando il vincolo della chiave composta
SELECT ... WHERE colonna1 = valore1 AND colonna2 = valore2 Interroga i dati utilizzando la chiave composta

Buon codice e possa i vostri database sempre essere ben organizzati ed efficienti!

Credits: Image by storyset