Related


Problemi

Quando si progetta una base di dati, è fondamentale ridurre la ridondanza dei dati, ovvero la ripetizione di informazioni già presenti nel database. La ridondanza può portare a errori e inconsistenze, specialmente se si utilizzano database non normalizzati. In questi casi, possono verificarsi diversi tipi di errori, tra cui:

Anomalia di aggiornamento: si verifica quando si tenta di aggiornare un dato e si rischia di creare inconsistenze tra le diverse copie del dato.

Anomalia di inserimento: si verifica quando si tenta di inserire un nuovo record e si rischia di creare inconsistenze tra i dati esistenti.

Anomalia di cancellazione: si verifica quando si tenta di cancellare un record e si rischia di creare inconsistenze tra i dati esistenti.

Ridondanza: si verifica quando lo stesso dato è memorizzato più volte in diverse parti del database.


Vincoli

I vincoli sono delle condizioni che devono essere soddisfatte dalla realtà che stiamo progettando. Ad esempio:

  • Un voto deve essere compreso tra 18 e 30
  • La matricola deve essere univoca
  • ecc..

Quando rappresentiamo una realtà, è fondamentale rappresentare anche tutti i suoi vincoli. Un’istanza è considerata legale se soddisfa tutti i vincoli imposti. In questo contesto, ci interessano in particolare le Dipendenze Funzionali, che esprimono dei vincoli di dipendenza tra sottoinsiemi di attributi dello schema.

Le dipendenze funzionali di uno schema esprimono dei vincoli di dipendenza tra sottoinsiemi di attributi dello schema stesso. Questi vincoli devono essere soddisfatti da ogni istanza dello schema. Ad esempio, se abbiamo gli attributi Matricola e Codice Fiscale, nel caso di Matricola uguale, dovrà essere uguale anche il Codice Fiscale.

DBMS

Un sistema di gestione di basi di dati (DBMS) permette di:

  • Definire i vincoli insieme allo schema della base di dati
  • Verificare che un’istanza sia legale
  • Impedire l’inserimento di tuple che violerebbero tali vincoli

Esempio

Vogliamo creare una base di dati per studenti universitari che contiene:

Dati Anagrafici e identificativa:

  • Nome, cognome
  • Data, comune e provincia di nascita
  • Matricola
  • Codice Fiscale

Dati curricolari, per ogni esame:

  • Voto
  • Data
  • Codice, Titolo e Docente del corso

Possiamo dividere le informazioni in tre relazioni separate:

Problemi

Ridondanza: La relazione “Studente” contiene informazioni ridondanti relative ai comuni e alle province, poiché ogni studente di un comune ripete le stesse informazioni sulla provincia di appartenenza.

Anomalia di aggiornamento: Se un comune cambia provincia, è necessario aggiornare manualmente tutte le tuple relative agli studenti di quel comune, il che può essere un’operazione lunga e soggetta a errori.

Anomalia di Inserimento: Non è possibile memorizzare le informazioni relative a un comune e alla sua provincia se non abbiamo almeno uno studente di quel comune, il che limita la nostra capacità di gestire le informazioni relative ai comuni.

Anomalia di Cancellazione: La cancellazione di studenti potrebbe comportare la perdita di informazioni relative ai comuni e alle province, poiché le informazioni relative ai comuni sono legate agli studenti.

Sebbene abbiamo risolto i problemi precedenti (vedi Metodo 1), emerge un nuovo problema relativo alla relazione tra Comune e Provincia, poiché il Comune determina la Provincia e quindi le informazioni relative alla Provincia sono ridondanti.