DBMS - Modello di Dati Relazionale

Ciao, appassionati di database in erba! Oggi ci imbarcheremo in un viaggio emozionante nel mondo dei Modelli di Dati Relazionali. Come il tuo amico insegnante di informatica del quartiere, ti guiderò attraverso questo concetto fondamentale nei sistemi di gestione dei database (DBMS). Non preoccuparti se sei nuovo alla programmazione - inizieremo dalle basi e poi cresciamo di livello. Allora, prenditi una tazza di caffè e tuffati!

DBMS - Relational Data Model

Concetti

Cos'è un Modello di Dati Relazionale?

Immagina di stai organizzando una biblioteca gigantesca. Hai libri, autori, generi e case editrici. Come manterresti traccia di tutte queste informazioni in modo efficiente? È qui che il modello di dati relazionale diventa utile!

Un modello di dati relazionale è un modo di strutturare i dati in un database che organizza le informazioni in tabelle (chiamate anche relazioni) con righe e colonne. È come creare una serie di fogli di calcolo interconnessi.

Ecco un esempio per chiarire:

CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);

In questo esempio, abbiamo creato due tabelle: Books e Authors. Ogni tabella ha colonne (campi) che descrivono diversi attributi. BookID e AuthorID sono identificatori unici per ogni record nelle loro rispettive tabelle.

Componenti Chiave del Modello Relazionale

  1. Tabelle (Relazioni): Queste sono le principali strutture che contengono i dati. Nell'esempio della biblioteca, Books e Authors sono tabelle.

  2. Attributi (Colonne): Questi rappresentano le proprietà delle entità nelle nostre tabelle. Ad esempio, Title e Name sono attributi.

  3. Tupla (Righe): Ogni riga in una tabella rappresenta un singolo record o istanza dell'entità.

  4. Dominio: Questo è l'insieme di valori ammessi per un attributo. Ad esempio, il dominio per BookID potrebbe essere numeri interi positivi.

  5. Chiavi: Questi sono attributi speciali utilizzati per identificare i record in modo univoco e stabilire relazioni tra le tabelle.

Tipi di Chiavi

Esploriamo le chiavi con una tabella utile:

Tipo di Chiave Descrizione Esempio
Chiave Primaria Identifica univocamente ogni record in una tabella BookID nella tabella Books
Chiave Esterna Fa riferimento alla chiave primaria di un'altra tabella AuthorID nella tabella Books
Chiave Candidata Potrebbe essere utilizzata come chiave primaria ISBN per i libri
Chiave Composta Una chiave che consta di più colonne (CourseID, StudentID) per una tabella di iscrizione ai corsi

Relazioni

Uno degli aspetti più potenti del modello relazionale è la sua capacità di stabilire relazioni tra le tabelle. Ci sono tre principali:

  1. One-to-One (1:1): Ogni record in Tabella A è relazionato a un singolo record in Tabella B.

Esempio:

CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
  1. One-to-Many (1:N): Un record in Tabella A può essere relazionato a molti record in Tabella B.

Esempio:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. Many-to-Many (M:N): Molti record in Tabella A possono essere relazionati a molti record in Tabella B.

Esempio:

CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

vincoli

Ora, parliamo dei vincoli - le regole che aiutano a mantenere l'integrità e la coerenza dei nostri dati. Pensali come i bibliotecari che assicurano che i libri siano correttamente classificati e scaffalati.

Tipi di Vincoli

Tipo di Vincolo Descrizione Esempio
NOT NULL Assicura che una colonna non può avere un valore NULL Name VARCHAR(50) NOT NULL
UNICO Assicura che tutti i valori in una colonna siano diversi Email VARCHAR(100) UNIQUE
Chiave Primaria Identifica univocamente ogni record in una tabella StudentID INT PRIMARY KEY
Chiave Esterna Assicura l'integrità referenziale tra tabelle FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
CHECK Assicura che tutti i valori in una colonna soddisfacano una condizione specifica CHECK (Age >= 18)
DEFAULT Imposta un valore predefinito per una colonna quando non viene specificato alcun valore Balance DECIMAL(10,2) DEFAULT 0.00

Vediamo questi vincoli in azione:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

In questo esempio:

  • StudentID è la chiave primaria.
  • Name non può essere null.
  • Email deve essere unica per ogni studente.
  • Age deve essere 18 o più vecchio.
  • EnrollmentDate avrà come valore predefinito la data corrente se non specificata.
  • DepartmentID è una chiave esterna che fa riferimento alla tabella Departments.

Questi vincoli aiutano a mantenere l'integrità e la coerenza dei dati nel nostro database. Sono come le regole nella nostra biblioteca che assicurano che i libri siano correttamente classificati, identificati e collegati agli autori e alle case editrici corretti.

Mentre chiudiamo questa introduzione al Modello di Dati Relazionale, spero che tu stia iniziando a vedere quanto possa essere potente e organizzato questo approccio alla gestione dei dati. È come avere una biblioteca perfettamente organizzata dove ogni libro è al suo posto, facilmente trovabile e collegato a tutte le informazioni pertinenti.

Ricorda, imparare i database è un viaggio. Non preoccuparti se tutto non entra subito nella tua testa. Pratica la creazione di tabelle, l'allestimento di relazioni e l'applicazione di vincoli. Presto sarai in grado di progettare strutture di database efficienti e robuste come un professionista!

Nella prossima lezione, esploreremo più a fondo come interrogare queste strutture relazionali utilizzando SQL. Fino a quel momento, buona modellazione dei dati!

Credits: Image by storyset