Nel mondo della gestione delle basi di dati, le chiavi rappresentano un ruolo cruciale nell’organizzare, accedere e mantenere l’integrità dei dati. Non importa se sei un database administrator esperto o se stai appena iniziando il tuo percorso nella gestione dei dati, capire i diversi tipi di chiavi della base di dati è essenziale. In questo post, esploreremo tutti i diversi tipi di chiavi, i loro scopi e come contribuiscono al progetto database efficiente.
Per illustrare questi concetti, userò un semplice database universitario con le seguenti tabelle:
- Studenti
- Corsi
- Iscrizioni
- Docenti
- Dipartimenti
Scaviamo ora in ciascun tipo di chiave e vediamo come sono applicate nel nostro database universitario.
1. Chiave Primaria
Definizione
Una colonna o un insieme di colonne che identifica in maniera univoca ogni riga in una tabella
Caratteristiche
- Deve essere univoco per ogni record
- Non può contenere valori
NULL
- Deve essere immutabile (non cambiare nel tempo)
Esempio
Nella nostra tabella Studenti
, usiamo StudentID
come chiave primaria.
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);
Qui, StudentID
identifica univocamente ciascuno studente, garantendo che nessuno abbia lo stesso ID.
2. Chiave Estera
Definizione
Una colonna o un insieme di colonne in una tabella che fa riferimento alla chiave primaria in un’altra tabella
Scopo
Mantiene l’integrità referenziale e crea relazioni tra le tabelle
Esempio
Nella nostra tabella Iscrizioni
, usiamo StudentID
e CourseID
come chiavi estere.
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
)
Questo design assicura che ogni record di iscrizione sia associato agli studenti e ai corsi validi.
3. Chiave Composta
Definizione
Una chiave che consiste in due o più colonne per identificare univocamente un record
Uso
Quando nessuna colonna singola può garantire l’unicità
Esempio
Potremmo ridesignare la nostra tabella Iscrizioni
per utilizzare una chiave composta:
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
Qui, la combinazione di StudentID
e CourseID
forma una chiave composta, che identifica univocamente ogni iscrizione.
4. Chiave Candidata
Definizione
Un insieme minimo di attributi che può identificare univocamente un record
Caratteristiche
- Deve essere unico
- Non può contenere valori
NULL
- Una tabella può avere più chiavi candidate.
Esempio
Nella nostra tabella Students
, sia StudentID
che Email
possono essere chiavi candidate, in quanto entrambi possono identificare in modo univoco un studente. Abbiamo scelto StudentID
come chiave primaria, ma Email
avrebbe potuto essere un’alternativa.
5. Super Key
Definizione
Qualsiasi insieme di colonne che può identificare in modo univoco un record, inclusi colonne non necessarie
Differenza dalla chiave candidata
Può contenere attributi extra non necessari per l’identificazione univoca
Esempio
Nella nostra tabella Students
, le super chiavi potrebbero includere:
{StudentID, FirstName, LastName, Email}
{StudentID, Email}
{Email, FirstName, LastName}
Tutti questi includono le chiavi candidate (StudentID
o Email
) più campi aggiuntivi.
6. Chiave Alternativa
Definizione
Una chiave candidata che non viene selezionata come chiave primaria
Scopo
Fornisce un metodo alternativo per identificare in modo univoco i record
Esempio
Nella nostra tabella Students
, se scelgiamo StudentID
come chiave primaria, allora Email
diventa una chiave alternativa:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is an alternate key
);
La constraint UNIQUE
sull’Email
garantisce che possa anche essere utilizzata per identificare gli studenti in modo univoco.
7. Chiave Sostitutiva
Definizione
Una chiave artificiale creata esclusivamente per l’identificazione univoca
Caratteristiche
- Di solito generata automaticamente dalla base dati
- Non ha un significato commerciale
Esempio
Nella nostra tabella Courses
, potremmo usare un CourseID
incrementale automatico:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY AUTO_INCREMENT,
CourseCode VARCHAR(10) UNIQUE,
CourseName VARCHAR(100),
Credits INT
);
CourseID
è una chiave di sostituzione, mentre CourseCode
potrebbe essere un identificatore più naturale.
8. Chiave Naturale
Definizione
Una chiave formata da dati già esistenti nel mondo reale
Vantaggio
Fornisce un’identificazione significativa
Disavantaggio
Potrebbe cambiare nel tempo
Esempio
Nella tabella Professors
, potremmo considerare l’uso del numero di carta d’identità (anche se non è raccomandato per ragioni di privacy):
CREATE TABLE Professors (
ProfessorID INT PRIMARY KEY,
SSN CHAR(9) UNIQUE, -- This could be used as a natural key
FirstName VARCHAR(50),
LastName VARCHAR(50),
Department VARCHAR(50)
);
9. Chiave Composta
Definizione
Una chiave che consiste in due o più colonne, dove la combinazione può avere un significato commerciale
Differenza dalla Chiave Composita
Di solito utilizzata quando le colonne combinate hanno un significato oltre all’identificazione univoca.
Esempio
Nella tabella CourseOfferings
:
CREATE TABLE CourseOfferings (
CourseID INT,
Semester CHAR(6), -- e.g., '202301' for Spring 2023
ProfessorID INT,
RoomNumber VARCHAR(10),
PRIMARY KEY (CourseID, Semester),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),
FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)
);
La combinazione di CourseID
e Semester
costituisce una chiave composta, che identifica in modo univoco un corso offerto e che ha anche un significato commerciale.
10. Chiave semplice
Definizione
Una chiave che consiste in una sola colonna
Vantaggio
Facile da implementare e utilizzare
Esempio
Nella nostra tabella Departments
:
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(100) UNIQUE,
Building VARCHAR(50),
Budget DECIMAL(10, 2)
);
DepartmentID
è una chiave semplice: una singola colonna che identifica in modo univoco ogni dipartimento.
11. Chiave univoca
Definizione
Una chiave che garantisce che tutti i valori in una colonna o insieme di colonne siano unici
Differenza dalla chiave primaria
Può consentire valori NULL
(a meno che non sia specificato diversamente)
Esempio
Nella nostra tabella Students
, Email
è un esempio di una chiave unica:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE -- This is a unique key
);
La constraint UNIQUE
garantisce che due studenti non possano avere lo stesso indirizzo email.
Conclusione
La comprensione di questi diversi tipi di chiavi è cruciale per un progetto database e una gestione efficienti. Ogni tipo di chiave serve a un scopo specifico, dall’assicurare l’integrità dei dati alla stabilizzazione delle relazioni tra le tabelle. Selezionando e implementando con cura le chiavi appropriate, è possibile creare sistemi database efficienti, affidabili e scalabili.
ricordare, la scelta delle chiavi può influenzare significativamente la performance del database, la manutenibilità e la capacità di rappresentare correttamente le relazioni del mondo reale. Considerare sempre i bisogni specifici dell’applicazione e la natura dei dati quando si decide quali chiavi utilizzare.
questo posto fa parte della nostra serie di Fondamenti del Database. Non appena tiene conto di ulteriori articoli approfonditi sulla gestione e sul progetto del database.
Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide