⌨️

Informatica

Database (base di dati) 🗂️

Di che cosa ci occupiamo? Di raccogliere, organizzare e conservare dei dati (milioni di dati).

🔑
Un sistema informativo è un sistema che si occupa di raccogliere, organizzare e conservare dati. ES: Sistema informatico di un comune, di una biblioteca, di una banca…
🔑
Un sistema informatico è un sistema informativo automatico.

La gestione di grandi e persistenti quantità di dati può avvenire attraverso l’utilizzo di file 📁 (file system) o attraverso DBMS (Data Base Management System).

Il DBMS gestisce quantità di dati che sono:


Ciclo di vita di un sistema informativo

  1. Studio di fattibilità → analisi dei costi e delle alternative possibili
  1. Analisi dei requisiti → analisi dei requisiti hardware e software
  1. Progettazione
    • progettazione concettuale
    • progettazione logica
    • progettazione fisica
  1. Attuazione con eventuali revisioni e correzioni
  1. Funzionamento

Progettazione concettuale → Modello E-R (Entità - Relazione)

Costrutti principali:

  1. Entità → attraverso l’entità si rappresenta una categoria di soggetti che hanno vita propria.
  1. Relazione o Associazione → una relazione associa due o più entità e si rappresenta attraverso il rombo.
  1. Attributi di entità e relazioni → descrivono le caratteristiche di un'entità o di una relazione

Esempio modello E-R


Componenti


Tipi di relazione

La relazione è il legame fra due o più entità e ne esistono di 3 tipi:

  1. Relazione 1-1: definisce un legame tra le occorrenze di due entità di tipo uno ad uno
  1. Relazione 1:n: lega ciascuna occorrenza di un’entità con più occorrenze di un’altra entità
  1. Relazione n:m; lega più occorrenze di un’entità a più occorrenze di un’altra entità

Cardinalità

🔑
E’ una coppia di numeri naturali che specifica il numero minimo e massimo di occorrenze che possono essere in relazione con una specifica occorrenza.

CARDINALITA’ MINIMA:

CARDINALITA’ MASSIMA:


Generalizzazioni

🔑
Sono legami logici tra un’entità padre (che contiene caratteristiche generiche) e una o più entità figlie (specializzazioni del padre).

Rappresentazione:

Relazione IS-A:  Come può essere?


Anomalie ⚠️

nome_dipnome_progstipendiobudgetruolo
RossiMarte220050000responsabile
RossiMercurio220070000collaboratore
VerdiMarte230050000collaboratore
NeriMarte240050000collaboratore

ANOMALIE:


Analisi delle ridondanze

🔑
Per ridondanza si intende la presenza di dati uguali nella stessa tabella o nella relazione che potrebbero essere derivati in diversi modi.

Ci sono vari tipi di ridondanze:

La presenza di ridondanze porta a vantaggi e svantaggi

👍🏼 Vantaggi

👎🏼 Svantaggi


Normalizzazione

Normalizzazione classica

La normalizzazione è un procedimento che ha come obiettivo l’eliminazione di ridondanze e inconsistenze (anomalie).

Ridondanza = presenza di dati ripetuti

Anomalia:

codice imp.stipendioprogettobudgetruolo
i11000p110000impiegato
i11000p220000impiegato
i23000p110000amministratore
i32500p110000analista

Livelli di Forma normale

1 Forma normale (1NF)

Uno schema è in 1NF solo se ogni attributo è espresso in forma atomica (non ulteriormente scomponibile.

2 Forma Normale (2NF)

Uno schema è in 2NF solo se:

3 Forma Normale (3NF)

Uno schema è in 3NF solo se:

Normalizzazione di Boyce-Codd

Dipendenza funzionale: vincolo di integrità che esprime una dipendenza di tipo funzionale tra attributi di una relazione (tabella).

matricolanomecognomemateriadocentevoto
m1AldoPaolimatematicaRinaldi25
m2LuigiNerimatematicaRinaldi26
m3AnnaNerichimicaRossi25
m4AdaRinaldichimicaRossi27
m1AldoPaolieconomiaBaldi30 lode

Dipendenze funzionali:

→ matricola → (nome, cognome)

matricola → nome

matricola → cognome

→ materia → docente

→ matricola, materia → voto

Una relazione R è nella forma normale di Boyce-Codd se per ogni dipendenza funzionale X→Y,  X è chiave di R.

Possiamo notare che questa tabella non è normalizzata secondo Boyce-Codd.


Progettazione logica → Modello logico

Per passare dal modello concettuale al modello logico bisogna effettuare alcune operazioni:

ENTITÀ

Bisogna eliminare tutti gli attributi composti

Dipendente (matricola, nome, cognome, cap, via, civico)

RELAZIONE M-N

Bisogna specificare i legami con il vincolo di integrità referenziale

Studente (matricola, nome, cognome)
Materia (nome, descrizione)
Esame (matricola, materia, data, voto)
con v.i.r. di matricola con matricola di Studente
con v.i.r. di materia con nome di Materia

RELAZIONE 1-N

Bisogna specificare i legami con il vincolo di integrità referenziale

Preside (c.f., cognome, nome)
Studente (matricola, nome, cognome, preside)
con v.i.r. di preside con c.f. di Preside

RELAZIONE 1-1

  1. con cardinalità minima = 1
    Presidente (codP, nome, cognome)
    Stato (sigla, nome, popolazione, presidente)
    con v.i.r. di presidente con codP di Presidente
  1. con cardinalità minima = 0
    Persona (c.f., nome, cognome)
    Auto (targa, modello, colore, proprietario)
    con v.i.r. di proprietario con c.f. di Persona

    In questo caso abbiamo messo il codice fiscale di Persona all’interno di Auto poiché un’auto ha sempre un proprietario. Se avessimo fatto il contrario il campo targa messo dentro a Persona sarebbe potuto essere risultato vuoto per alcune tuple.

  1. con entrambe le cardinalità minime = 0
    Impiegato (c.f., cognome, nome)
    Dipartimento (codD, nome, descrizione, impiegato)
    con v.i.r. di impiegato con c.f. di Impiegato

    In questo caso abbiamo inserito la chiave di Impiegato dentro Dipartimento poiché ipotizziamo abbia meno tuple.

ENTITÀ DEBOLI (con chiave esterna):

Università (nome, città, anno)
Studente (matricola, uni, nome, cognome)
con v.i.r. di uni con nome di Università

RELAZIONE IS-A

Devo prima ristrutturare la relazione IS-A

  1. Ristrutturazione alla Superclasse (all’entità padre)

    In questo caso rimane solo l’entità padre che assorbe gli attributi e le relazioni delle entità figlie e aggiunge un campo per distinguerle.

  1. Ristrutturazione alle Sottoclassi (alle entità figlie) In questa ristrutturazione rimangono solo le entità figlie che assorbono chiave e attributi dell’entità padre.
    ⚠️
    In questo caso non posso usare la ristrutturazione alle sottoclassi poiché la mia relazione è di tipo parziale e questa  ristrutturazione me la trasforma a totale. Posso applicarla solo a relazioni IS-A totali (Es: persona → uomo e donna).
  1. Ristrutturazione ad Entità deboli

    In questa ristrutturazione rimangono tutte le entità ma le figlie prendono dal padre chiave e attributi. La ristrutturazione ad entità deboli è sempre possibile ed è consigliabile utilizzarla quando le entità figlie sono fortemente specializzate.


Progettazione fisica → Modello fisico

Il modello fisico si attua attraverso il linguaggio 🗂️SQL


Programmazione delle pagine web principali

La programmazione delle pagine web principali di un applicativo può essere effettuata attraverso diversi linguaggi. Noi abbiamo utilizzato 💻PHP.

💻PHP è un linguaggio utilizzato per la programmazione di pagine web dinamiche.


Transazioni

Una transazione è un’unità logica di elaborazione che corrisponde a una serie di operazioni fisiche elementari (letture/scritture) sul DB.

Esempi:

In entrambi i casi tutte le operazioni elementari devono essere eseguite.

ACID

L’acronimo ACID indica le 4 proprietà che il DBMS deve garantire che valgano per ogni transazione

Esiti di una transazione

Nel modello considerato una transazione (il cui inizio viene indicato nel seguito dalla parola chiave BEGIN, anche se in SQL è implicito) può avere solo 2 esiti:

  1. Terminare correttamente: Questo avviene solo quando l’applicazione, dopo aver eseguito tutte le proprie operazioni, esegue una particolare istruzione SQL, detta COMMIT (o COMMIT WORK), che comunica “ufficialmente” al Transaction Manager il termine delle operazioni.
  1. Terminare non correttamente (anticipatamente)
    1. È la transazione che, per qualche motivo, decide che non ha senso continuare e quindi “abortisce” eseguendo l’istruzione SQL ROLLBACK (o ROLLBACK WORK).
    1. È il sistema che non è in grado (ad es. per un guasto o per la violazione di un vincolo) di garantire la corretta prosecuzione della transazione, che viene quindi abortita.

Se per qualche motivo la transazione non può terminare correttamente la sua esecuzione il DBMS deve “disfare” (UNDO) le eventuali modifiche da essa apportate al DB.

Esecuzione seriale di transazioni

Un DBMS, dovendo supportare l’esecuzione di diverse transazioni che accedono a dati condivisi, potrebbe eseguire tali transazioni in sequenza (“serial execution”). Ad esempio, due transazioni T1 e T2 potrebbero essere eseguite in questo modo, in cui si evidenzia la successione temporale (“schedule”) delle operazioni elementari sul DB:

Possibili errori

Lost update

Il seguente schedule mostra un caso tipico di lost update, in cui per comodità si evidenziano anche le operazioni che modificano il valore del dato X e si mostra come varia il valore di X nel DB.

Il problema nasce perché T2 legge il valore di X prima che T1 (che lo ha già letto) lo modifichi (“entrambe vedono l’ultimo biglietto”).

Dirty Read

In questo caso il problema è che una transazione legge un dato “che non c’è”:

Unrepeatable read

Ora il problema è che una transazione legge due volte un dato e trova valori diversi (“il prezzo nel frattempo è aumentato”):

Riassumendo

Una transazione è un’unità logica di elaborazione che, nel caso generale, si compone di molte operazioni fisiche elementari che agiscono sul DB.

Le proprietà di cui deve godere una transazione si riassumono nell’acronimo ACID (Atomicity, Consistency, Isolation, Durability)

Isolation richiede che venga correttamente gestita l’esecuzione concorrente delle transazioni.

Consistency è garantita dal DBMS verificando che le transazioni rispettino i vincoli definiti a livello di schema del DB.


Fonti