Il modello Entità-Relazione (E-R) è una rappresentazione grafica utilizzata nella progettazione di basi di dati per descrivere le relazioni tra le diverse entità. Le entità rappresentano oggetti del mondo reale, mentre le relazioni rappresentano le connessioni tra queste entità. Nell’ambito della progettazione dei database, è importante definire correttamente le associazioni tra le entità, inclusi i tipi di associazioni come “1 a 1”, “1 a molti” e “molti a molti”. L’associazione 1 ad 1 è la più semplice perchè prevede una relazione biunivoca tra due entità: nel nostro esempio, abbiamo un direttore che afferisce ad uno ed un solo dipartimento, e dipartimento di cui fa capo un solo diretto. Per modellare l’entità “direttore” e l’entità “dipartimento” con una relazione uno-a-uno, possiamo utilizzare il modello E/R (Entità/Relazione) e il modello logico. Iniziamo con il modello E/R: Modello E/R (Entità/Relazione) Nel modello E/R, puoi rappresentare l’entità “direttore” e l’entità “dipartimento” con i seguenti elementi:
Entità “Direttore”:
Attributi: direttore_id (chiave primaria), nome, cognome, data_di_nascita, ecc.
Entità “Dipartimento”:
Attributi: dipartimento_id (chiave primaria), nome, sede, ecc.
Per stabilire la relazione uno-a-uno tra il direttore e il dipartimento, puoi aggiungere un attributo “dipartimento_id” all’entità “Direttore” come chiave esterna che farà riferimento alla chiave primaria “dipartimento_id” dell’entità “Dipartimento”. Questo attributo “dipartimento_id” rappresenta il dipartimento di cui il direttore è responsabile. Modello Logico Nel modello logico, puoi rappresentare queste due entità come tabelle in un database relazionale: Tabella “Direttore”
Ora, tanto per capire le differenze, vediamo cosa cambia quando mettiamo l’attributo “dipartimento_id” da una parte o dall’altra, anche perchè scopriremo che in questo caso si tratta di scelte equivalenti.
Scenario 1: dipartimento_id come chiave esterna di Direttore
In questo caso, ogni direttore è associato a un unico dipartimento tramite la chiave esterna “dipartimento_id“. Un dipartimento può pertanto essere associato a un solo direttore. Esempio di dati: Tabella “Direttore”
direttore_id
nome
cognome
data_di_nascita
dipartimento_id
1
Aldo
Ferdidando
1983-01-15
101
2
Alice
Gimpolaro
1985-03-22
102
Tabella “Dipartimento”:
dipartimento_id
nome
sede
101
Marketing
New York
102
Finanza
Los Angeles
Query SQL possibili:
Seleziona il direttore di un dipartimento specifico:
sql
SELECT * FROM Direttore WHERE dipartimento_id = 101;
Cercare il dipartimento di un direttore specifico:
sql
SELECT Dipartimento.nome, Dipartimento.sede FROM Direttore JOIN Dipartimento ON Direttore.dipartimento_id = Dipartimento.dipartimento_id WHERE Direttore.direttore_id = 1;
Scenario 2: dipartimento_id come chiave esterna di Dipartimento
In questo caso, ogni dipartimento è associato a un unico direttore tramite la chiave esterna “dipartimento_id”. Un direttore può essere associato a un solo dipartimento. Esempio di dati: Tabella “Direttore”:
direttore_id
nome
cognome
data_di_nascita
1
John
Smith
1980-01-15
2
Alice
Johnson
1975-03-22
Tabella “Dipartimento”:
dipartimento_id
nome
sede
direttore_id (chiave esterna)
101
Marketing
New York
1
102
Finanza
Los Angeles
2
Query SQL possibili:
Seleziona il direttore di un dipartimento specifico:
sql
SELECT Direttore.* FROM Dipartimento JOIN Direttore ON Dipartimento.direttore_id = Direttore.direttore_id WHERE Dipartimento.dipartimento_id = 101;
Trova il dipartimento di un direttore specifico:
sql
SELECT Dipartimento.nome, Dipartimento.sede FROM Direttore JOIN Dipartimento ON Direttore.direttore_id = Dipartimento.direttore_id WHERE Direttore.direttore_id = 1;
In entrambi gli scenari, la relazione uno-a-uno è rappresentata correttamente, ma la scelta di dove mettere l’attributo “dipartimento_id” determina in modo significativo come vengono effettuate le query e quali entità hanno la responsabilità dell’associazione.
Utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Lo facciamo per migliorare l'esperienza di navigazione e per mostrare annunci personalizzati. Il consenso a queste tecnologie ci consentirà di elaborare dati quali il comportamento di navigazione o gli ID univoci su questo sito. Il mancato consenso o la revoca del consenso possono influire negativamente su alcune caratteristiche e funzioni.
Funzionale Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.