Fondamenti di Database: Modelli Entità-Relazione e Chiavi Primarie

Classificato in Informatica

Scritto il in italiano con una dimensione di 7,64 KB

Introduzione alle Basi di Dati

INDICE

Definizioni Fondamentali

  • Database: Insieme di dati correlati che possono essere gestiti in comune.
  • Modello Entità-Relazione (ER): Un approccio teorico per modellare i dati di un database utilizzando diagrammi.

Entità e Relazioni

Entità: Un elemento della realtà che possiede dati associati ed esiste di per sé.

Le entità sono generalmente identificate con nomi, per esempio: clienti, oggetti, stanze, studenti, ecc.

Relazione: Come il nome suggerisce, una relazione connette almeno due entità tra loro. Affinché esista una relazione, devono esistere prima le entità correlate.

Le relazioni sono spesso identificate da verbi: prenotazioni (sala per i clienti), acquisto (di prodotti da parte dei clienti), uno studente segue corsi (il rapporto dovrebbe essere "seguito"), ecc.

Struttura Tabellare

Le entità e le relazioni sono modellate su un computer tramite tabelle. Ogni attributo dell'entità e della relazione è modellato sui "campi" o "colonne" del computer. I dati di ogni entità o relazione vengono memorizzati in una riga o record della tabella. La tabella può contenere molti record o righe; di solito il limite è dato dalla capacità del disco rigido del computer. Per distinguere ogni record dagli altri, vengono definite le chiavi primarie.

La Chiave Primaria (Primary Key)

La chiave primaria di una tabella è un campo o un insieme di campi che identificano ogni record o riga della tabella in modo univoco, cioè, ogni record della tabella deve avere un valore diverso nel campo o nei campi che costituiscono la chiave.

Esempi:

  • Ogni cittadino spagnolo ha un numero ID diverso che non deve mai essere ripetuto.
  • Il numero identificativo dello studente in un centro. Possono esserci diversi studenti con lo stesso nome, ma non avranno lo stesso numero di matricola o lo stesso ID.

Esempi di chiavi errate:

  • Nome + Cognome (possono essere ripetuti in persone diverse, nomi comuni).
  • Codice Articolo in una tabella delle vendite, poiché lo stesso oggetto può essere venduto più volte a persone diverse.
  • Data di vendita, anche se include ore, minuti e secondi, poiché in un singolo istante (per gli anni di funzionamento) potrebbero esserci più vendite o pagamenti contemporanei.

Generalmente, tutte le tabelle hanno la propria chiave primaria, che ci permette di identificare i singoli record per recuperare i loro dati, modificarli o cancellarli.

Chiave Esterna (Foreign Key)

È un campo o un insieme di campi definiti su una tabella che rappresenta la chiave primaria di un'altra tabella. Per questo motivo si usa la parola "esterna".

Considerazioni sulla Normalizzazione

La normalizzazione di solito non va oltre la seconda forma normale, poiché un'ulteriore scomposizione presuppone una condivisione dei dati in tabelle che potrebbero diventare eccessive.

Implementazione delle Relazioni del Modello Entità-Relazione in un Database

Le relazioni, in base al numero di entità che collegano, possono essere:

  • Uno a Uno (1 a 1)
  • Uno a Molti (1 a 'n')
  • Molti a Molti ('n' a 'm')

Implementazione Relazioni 1:1 e 1:N

Le relazioni 1 a 1 e 1 a molti si modellano aggiungendo la chiave primaria di un'entità come chiave esterna nella seconda entità.

Esempio: Un cliente di un albergo (con ID chiave primaria) può aver effettuato diverse prenotazioni in date diverse. Se aggiungiamo il campo ID Cliente nella tabella Prenotazioni come chiave esterna, stiamo implementando questa relazione 1 a molti tra Cliente e Prenotazioni.

Implementazione Relazioni N:M

Per implementare le relazioni molti a molti ('n' a 'm') è necessario creare una nuova tabella che contenga le chiavi primarie delle tabelle correlate.

Esempio: Articoli di un supermercato e clienti che li acquistano. Un articolo può essere acquistato da molti clienti, ma allo stesso tempo, un cliente può acquistare molti articoli. In questi casi è necessario creare una tabella che funga da tabella "Ordini", la quale includerà la chiave del cliente (DNI) più la chiave dell'articolo (CodiceArticolo).

Per normalizzare queste tabelle, si dovrebbero suddividere in:

  1. Testata Ordini (NumeroOrdine come chiave, più data, totale ordine, ID Cliente).
  2. Righe Ordine (Chiave di TestataOrdini -> NumeroOrdine, più Articolo: CodiceArticolo, più quantità, prezzo unitario, prezzo totale, numero di riga sulla ricevuta o fattura).

Commenti su Microsoft Access

I tipi di campi dati o colonne in Access sono:

  • Testo
  • Integer (Intero)
  • Contatore (assume valori da 1, 2, ecc.)
  • Numero con decimali
  • Valuta
  • Data/Ora
  • Memo (usato per memorizzare oggetti binari, come foto, musica, video, o campi di testo molto grandi, ecc.)

Campo Contatore

Il campo Contatore assume valori interi da 1 in su automaticamente. Per questo motivo è spesso utilizzato come chiave primaria nelle tabelle.

Quando si inserisce un record in una tabella, non è necessario assegnare un valore a un campo Contatore, poiché il database di Access memorizza internamente il valore successivo per tutti i campi Contatore esistenti nel database.

Se un campo è una chiave esterna di tipo Contatore (chiave primaria di un'altra tabella), allora è necessario definirlo di tipo Numero (Integer), poiché in questa tabella (dove è chiave esterna) i valori devono essere considerati come definiti nella tabella in cui il Contatore è la chiave primaria. Per esempio: se si utilizza una chiave primaria Contatore per le prenotazioni effettuate dai clienti di un albergo nel campo "NumeroRiserva", allora il campo "NumeroRiserva" nella tabella "Fatture", che è di tipo chiave esterna, deve essere definito come Integer, invece di Contatore.

Relazioni in Access

Queste relazioni non modellano le relazioni tra entità, bensì le relazioni tra campi che sono chiavi primarie di tabelle con chiavi esterne o altri campi estranei. Si collegano sempre campi dello stesso tipo in tabelle diverse: Non ha senso collegare campi diversi, come un CodiceArticolo con NumeroVendita. Si associano sempre dati uguali: DNI con DNI, CodiceArticolo con CodiceArticolo, ecc.

Se applichiamo l'integrità referenziale, significa che non possiamo inserire un record nella "tabella esterna" se non esiste un record associato nella tabella "principale" con quel valore di chiave primaria. Ad esempio, per inserire una prenotazione alberghiera è necessario che esista un cliente nella tabella Clienti con l'ID specificato.

Se si attiva l'opzione "Eliminazione a cascata", significa che quando si elimina un cliente dalla tabella Clienti nel database Access, verranno automaticamente cancellate tutte le prenotazioni associate a quell'ID cliente come chiave esterna nella tabella Prenotazioni. Lo stesso accade se si spunta la casella "Aggiornamento a cascata": le modifiche apportate ai valori della chiave primaria verranno propagate alle tabelle dove tale chiave è presente come chiave esterna.

Voci correlate: