Chiavi negli ER Diagram in SQL: Come Identificare le Chiavi Primarie, Esterne e Candidati

Gli ER diagram (Entity-Relationship Diagram) sono uno strumento fondamentale nella progettazione di database SQL, in quanto consentono di rappresentare visivamente i dati e le loro relazioni all’interno del database. In questo articolo, approfondiremo come identificare le chiavi primarie, esterne e candidate negli ER diagram. Comprendere i ruoli e i metodi di identificazione di queste chiavi è cruciale per una progettazione del database più efficiente e accurata.

Indice

Che cos’è un ER Diagram

Un ER diagram (Entity-Relationship Diagram) è una rappresentazione visiva delle entità (oggetti di dati) e delle relazioni tra di esse all’interno di un database. Utilizzando un ER diagram, i progettisti di database possono comprendere chiaramente la struttura dei dati del sistema, prevenendo duplicazioni o incoerenze. Un ER diagram è composto principalmente da tre elementi fondamentali: entità, attributi e relazioni.

Entità

Un’entità è un oggetto rappresentato nel database e si riferisce a oggetti o eventi concreti. Ad esempio, clienti, prodotti e ordini sono esempi di entità.

Attributi

Gli attributi rappresentano le caratteristiche o le informazioni possedute da un’entità. Ad esempio, gli attributi dell’entità cliente potrebbero essere il nome, l’indirizzo e il numero di telefono.

Relazioni

Le relazioni rappresentano le connessioni tra le entità. Ad esempio, tra cliente e ordine esiste la relazione “fa un ordine”.

Definizione e Metodi di Identificazione della Chiave Primaria (Primary Key)

La chiave primaria (Primary Key) è la chiave utilizzata per identificare univocamente ogni record in una tabella. Una chiave primaria deve essere univoca e non può contenere valori NULL. Una corretta impostazione della chiave primaria garantisce l’integrità e la coerenza dei dati.

Definizione della Chiave Primaria

Una chiave primaria è costituita da una o più colonne utilizzate per identificare in modo univoco i record in una tabella. Per garantire l’univocità, ogni record deve avere valori distinti per le colonne della chiave primaria.

Caratteristiche della Chiave Primaria

  • Univocità: Deve essere in grado di identificare in modo univoco ogni record.
  • Non NULL: Non può contenere valori NULL.
  • Semplice o Composita: Può essere composta da una singola colonna o da più colonne (chiave primaria composita).

Come Identificare la Chiave Primaria

Per identificare una chiave primaria, si utilizzano i seguenti criteri:

  • Conferma dell’univocità: Selezionare la colonna che garantisce l’univocità tra le chiavi candidate.
  • Conferma del valore non NULL: Scegliere una colonna che non contenga valori NULL.

Come Impostare una Chiave Primaria in SQL

Ecco un esempio di come impostare una chiave primaria in SQL.

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    ContactName VARCHAR(100),
    Country VARCHAR(50)
);

In questo esempio, la colonna CustomerID è impostata come chiave primaria, il che consente di identificare univocamente ogni record del cliente.

Definizione e Metodi di Identificazione della Chiave Esterna (Foreign Key)

La chiave esterna (Foreign Key) viene utilizzata per definire le relazioni tra le tabelle in un database. Una chiave esterna è una colonna che fa riferimento alla chiave primaria di un’altra tabella, mantenendo l’integrità dei dati tra le tabelle correlate.

Definizione della Chiave Esterna

Una chiave esterna è una colonna che fa riferimento a una chiave primaria o a una chiave candidata di un’altra tabella, stabilendo relazioni tra tabelle nel database.

Caratteristiche della Chiave Esterna

  • Costruzione della Relazione: Una chiave esterna mostra come i record in una tabella sono correlati ai record in un’altra tabella.
  • Integrità Referenziale: Una chiave esterna assicura che i dati a cui si fa riferimento esistano. Se i dati di riferimento vengono eliminati, le modifiche correlate possono essere controllate.

Come Identificare una Chiave Esterna

Per identificare una chiave esterna, si utilizzano i seguenti criteri:

  • Conferma del riferimento: Identificare la chiave primaria o la chiave candidata della tabella di riferimento.
  • Conferma della relazione: Verificare le relazioni tra le tabelle e impostare la chiave esterna.

Come Impostare una Chiave Esterna in SQL

Ecco un esempio di come impostare una chiave esterna in SQL.

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    OrderNumber INT,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

In questo esempio, la colonna CustomerID nella tabella Orders è impostata come chiave esterna e fa riferimento alla colonna CustomerID della tabella Customers. Ciò consente di stabilire una relazione tra gli ordini e i rispettivi clienti.

Definizione e Metodi di Identificazione della Chiave Candidata (Candidate Key)

Una chiave candidata (Candidate Key) è una colonna o una combinazione di colonne che può identificare univocamente un record in una tabella. Rappresenta tutte le chiavi che potrebbero essere scelte come chiave primaria.

Definizione della Chiave Candidata

Una chiave candidata è costituita da una o più colonne che possono identificare univocamente ciascun record in una tabella. Una tabella può avere più chiavi candidate, ma solo una di esse verrà scelta come chiave primaria.

Caratteristiche della Chiave Candidata

  • Univocità: Deve poter identificare in modo univoco ogni record.
  • Non NULL: Le colonne della chiave candidata non devono contenere valori NULL.
  • Può Esserci Più di Una: Una tabella può avere più chiavi candidate.

Come Identificare una Chiave Candidata

Per identificare una chiave candidata, si utilizzano i seguenti criteri:

  • Conferma dell’univocità: Verificare se una colonna o una combinazione di colonne può avere valori univoci.
  • Conferma del valore non NULL: Assicurarsi che la colonna candidata non contenga valori NULL.
  • Conferma della minimalità: Identificare la combinazione di colonne che garantisce l’univocità con il minor numero di colonne.

Come Impostare una Chiave Candidata in SQL

Ecco un esempio di come definire una chiave candidata in SQL.

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    NationalIDNumber VARCHAR(15) NOT NULL,
    EmployeeNumber VARCHAR(10) NOT NULL,
    EmployeeName VARCHAR(100),
    CONSTRAINT UQ_NationalIDNumber UNIQUE (NationalIDNumber),
    CONSTRAINT UQ_EmployeeNumber UNIQUE (EmployeeNumber)
);

In questo esempio, nella tabella Employees, la colonna EmployeeID è definita come chiave primaria, ma sia NationalIDNumber che EmployeeNumber sono definite come chiavi candidate tramite il vincolo UNIQUE.

Relazione tra Chiavi Primarie e Chiavi Esterne

La relazione tra chiavi primarie e chiavi esterne è un elemento cruciale nella progettazione del database. Impostare correttamente queste chiavi garantisce l’integrità dei dati e la coerenza referenziale.

Relazione di Base tra Chiavi Primarie ed Esterne

Una chiave primaria identifica univocamente ciascun record in una tabella, mentre una chiave esterna fa riferimento alla chiave primaria di un’altra tabella per stabilire una relazione tra le tabelle.

Tipi di Relazioni

Utilizzando chiavi primarie ed esterne, è possibile rappresentare vari tipi di relazioni tra le tabelle, come ad esempio:

  • Relazione uno-a-molti (1:N): Un record di una tabella può essere correlato a molti record in un’altra tabella.
  • Relazione molti-a-molti (N:M): Molti record di una tabella possono essere correlati a molti record in un’altra tabella. In questo caso, si utilizza una tabella intermedia per rappresentare la relazione.

Esempio di Relazione

Di seguito un esempio di come impostare una relazione uno-a-molti tra le tabelle Customers e Orders.

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    ContactName VARCHAR(100),
    Country VARCHAR(50)
);

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    OrderNumber INT,
    CustomerID INT,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

In questo esempio, CustomerID nella tabella Customers è definita come chiave primaria, mentre CustomerID nella tabella Orders è impostata come chiave esterna. Ciò stabilisce una relazione tra gli ordini e i rispettivi clienti.

Selezione delle Chiavi nella Progettazione di Database Reali

Nella progettazione di database, la selezione delle chiavi corrette è cruciale per garantire l’integrità dei dati e l’efficienza delle query. Di seguito, esamineremo i criteri di selezione e le best practice per la scelta delle chiavi in un database reale.

Criteri di Selezione delle Chiavi

Quando si selezionano le chiavi, è importante considerare i seguenti criteri:

  • Univocità: Verificare che la chiave possa identificare univocamente ogni record.
  • Stabilità: È preferibile che il valore della chiave non cambi nel tempo. Evitare chiavi che subiscono modifiche frequenti.
  • Semplicità: Scegliere chiavi semplici e brevi. Chiavi complesse possono essere difficili da comprendere e possono influire negativamente sulle prestazioni delle query.
  • Chiavi naturali vs. chiavi surrogate: Decidere se utilizzare chiavi naturali (es. numeri di matricola o indirizzi email) o chiavi surrogate (es. un ID auto-incrementato) generate dal sistema.

Selezione della Chiave Primaria

Quando si seleziona una chiave primaria, prestare attenzione a:

  • Univocità e restrizione di non NULL: La chiave primaria deve essere unica e non può contenere valori NULL.
  • Stabilità: La chiave primaria dovrebbe essere una colonna che non cambia nel tempo. Esempi di buone chiavi primarie sono numeri di matricola o numeri di previdenza sociale.

Selezione della Chiave Esterna

Quando si seleziona una chiave esterna, considerare i seguenti aspetti:

  • Chiarezza della Relazione: La chiave esterna deve avere una chiara relazione con la chiave primaria o la chiave candidata della tabella a cui si fa riferimento.
  • Mantenimento dell’integrità referenziale: Impostando correttamente una chiave esterna, si garantisce l’integrità dei dati tra le tabelle.

Selezione della Chiave Candidata

Per la selezione di una chiave candidata, considerare i seguenti aspetti:

  • Conferma dell’univocità: Le chiavi candidate devono mantenere l’univocità rispetto ad altre colonne della tabella.
  • Eliminazione della ridondanza: Evitare di avere troppe chiavi candidate e puntare su una progettazione semplice.

Best Practice

  • Utilizzare chiavi surrogate: Nella maggior parte degli ambienti di lavoro, è comune utilizzare chiavi surrogate semplici e garantite uniche come chiavi primarie. Ad esempio, un ID numerico auto-incrementato.
  • Integrazione delle chiavi naturali: Sebbene le chiavi surrogate siano utilizzate come chiavi primarie, è consigliabile applicare un vincolo UNIQUE alle chiavi naturali per garantire l’integrità dei dati.

Come Rappresentare le Chiavi negli ER Diagram

Negli ER diagram (Entity-Relationship Diagram), vengono utilizzati simboli specifici per rappresentare i diversi tipi di chiavi in modo chiaro. In questa sezione, spiegheremo come rappresentare le chiavi primarie, esterne e candidate negli ER diagram.

Rappresentazione della Chiave Primaria

La chiave primaria viene rappresentata come un attributo che possiede univocità all’interno dell’entità. Alcuni metodi comuni di rappresentazione includono:

  • Sottolineatura: L’attributo della chiave primaria è sottolineato.
  • Esempio: CustomerID
  • Etichetta PK: Aggiungere “(PK)” accanto al nome dell’attributo.
  • Esempio: CustomerID (PK)

Rappresentazione della Chiave Esterna

Una chiave esterna viene rappresentata come un attributo che fa riferimento alla chiave primaria di un’altra entità. Alcuni metodi comuni di rappresentazione includono:

  • Etichetta FK: Aggiungere “(FK)” accanto al nome dell’attributo.
  • Esempio: CustomerID (FK)
  • Tratteggio: L’attributo della chiave esterna è evidenziato con un tratteggio.
  • Esempio: -- CustomerID --

Rappresentazione della Chiave Candidata

Una chiave candidata viene rappresentata come un attributo che potrebbe essere selezionato come chiave primaria. Alcuni metodi comuni di rappresentazione includono:

  • Etichetta CK: Aggiungere “(CK)” accanto al nome dell’attributo.
  • Esempio: NationalIDNumber (CK)
  • Ondulatura: L’attributo della chiave candidata è evidenziato con un’ondulatura.
  • Esempio: ~ NationalIDNumber ~

Esempio Concreto di ER Diagram

Di seguito un esempio di come rappresentare le chiavi negli ER diagram.

|----------------------|
|      Customers       |
|----------------------|
| CustomerID (PK)      |
| CustomerName         |
| ContactName          |
| NationalIDNumber (CK)|
|----------------------|

|----------------------|
|        Orders        |
|----------------------|
| OrderID (PK)         |
| OrderNumber          |
| CustomerID (FK)      |
|----------------------|

In questo esempio, CustomerID nella tabella Customers è rappresentata come chiave primaria, mentre CustomerID nella tabella Orders è rappresentata come chiave esterna. Inoltre, NationalIDNumber nella tabella Customers è rappresentata come chiave candidata.

Esercizi e Soluzioni

Per rafforzare la comprensione del metodo di identificazione delle chiavi primarie, esterne e candidate negli ER diagram, presentiamo alcuni esercizi. Risolvere questi esercizi aiuterà a comprendere meglio il ruolo e l’importanza delle chiavi nella progettazione di un database reale.

Esercizio 1

Considera il seguente ER diagram con le seguenti entità.

Entità Employees

  • EmployeeID
  • EmployeeName
  • DepartmentID
  • NationalIDNumber

Entità Departments

  • DepartmentID
  • DepartmentName

Rispondi alle seguenti domande:

  1. Qual è la chiave primaria dell’entità Employees?
  2. Qual è la chiave primaria dell’entità Departments?
  3. Qual è la chiave esterna dell’entità Employees?
  4. Qual è la chiave candidata dell’entità Employees?

Soluzione 1

  1. La chiave primaria dell’entità Employees è EmployeeID.
  2. La chiave primaria dell’entità Departments è DepartmentID.
  3. La chiave esterna dell’entità Employees è DepartmentID.
  4. La chiave candidata dell’entità Employees è NationalIDNumber.

Esercizio 2

Osserva lo script SQL seguente e identifica la chiave primaria, la chiave esterna e la chiave candidata per ciascuna tabella.

CREATE TABLE Projects (
    ProjectID INT PRIMARY KEY,
    ProjectName VARCHAR(100),
    StartDate DATE,
    EndDate DATE
);

CREATE TABLE EmployeeProjects (
    EmployeeID INT,
    ProjectID INT,
    AssignmentDate DATE,
    PRIMARY KEY (EmployeeID, ProjectID),
    FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID),
    FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID)
);

Rispondi alle seguenti domande:

  1. Qual è la chiave primaria della tabella Projects?
  2. Qual è la chiave primaria della tabella EmployeeProjects?
  3. Quali sono le chiavi esterne della tabella EmployeeProjects?

Soluzione 2

  1. La chiave primaria della tabella Projects è ProjectID.
  2. La chiave primaria della tabella EmployeeProjects è una chiave primaria composita formata dalla combinazione di EmployeeID e ProjectID.
  3. Le chiavi esterne della tabella EmployeeProjects sono EmployeeID e ProjectID.

Conclusione

In questo articolo, abbiamo analizzato in dettaglio come identificare le chiavi primarie, esterne e candidate negli ER diagram per SQL. Gli ER diagram sono strumenti essenziali nella progettazione di database, e l’adeguata impostazione delle chiavi garantisce l’integrità e l’univocità dei dati. Le chiavi primarie identificano univocamente i record, le chiavi esterne stabiliscono relazioni tra le tabelle e le chiavi candidate rappresentano potenziali chiavi primarie. Comprendere il ruolo e i metodi di identificazione di queste chiavi è fondamentale per creare database efficienti e affidabili.

Indice