Chiave del Database: Guida Completa

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:

  1. Studenti
  2. Corsi
  3. Iscrizioni
  4. Docenti
  5. 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.

SQL

 


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.

SQL

 


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:

SQL

 

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:

SQL

 

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:

SQL

 

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):

SQL

 

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:

SQL

 

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:

SQL

 

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:

SQL

 

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