Sistemi informativi
(Appunti del corso Sistemi Informativi – Unibo, Ingegneria Gestionale)
Indice
- Parte 1: Le basi di dati relazionali
- Introduzione 2
- Modello relazionale 4
- Algebra relazionale 7
- SQL 12
- Normalizzazione di schemi relazionali 30
- Parte 2: Progettazione di sistemi informativi
- La progettazione della base di dati 36
- Il modello Entity Relationship 39
- Progetto logico da schemi E/R 47
- Analisi funzionale e diagrammi di flusso dei dati 51
- Progetto integrato di dati e funzioni 55
- Modellazione dei processi aziendali 58
- Parte 3: Tecnologia dei sistemi informativi
- Sistemi transazionali 61
- Controllo di concorrenza 69
- Metodi di accesso (B-Tree) 74
- Calcolo del costo di accesso ai dati 81
- Calcolo del costo di join 88
- Tecnologia dei sistemi informativi 92
- Basi di dati distribuite 95
- Architetture evolute nei sistemi informativi 102
- I sistemi ERP 107
Definizione di sistema informativo
Qualunque tipo di organizzazione, per poter funzionare, oggi si appoggia su un sistema informativo, il quale gestisce i flussi informativi: permette di spostare, trovare, recuperare tutta l'informazione che serve per svolgere la nostra attività.
Definizione di sistema informativo: insieme di risorse (di qualunque natura: hardware, personale, sistemisti, utenti finali, archivi cartacei, …) e di metodologie finalizzate alla raccolta, all'uso e allo scambio di informazioni.
Un sistema informativo non significa soltanto sistema informatico, ma una parte, tipicamente negli anni crescente, del sistema informativo può essere automatizzata. Un sistema informatico è un sottoinsieme del sistema informativo dove la sovrapposizione può essere più o meno spinta.
L'informazione viene codificata e rappresentata nelle macchine sotto forma di dati.
Caratteristiche di una base di dati
- Grandi dimensioni
- Condivisione → utilizzate contemporaneamente da più utenti
- Persistenza → i dati devono essere protetti, sopravvivere qualunque cosa succeda, non possono essere persi
Caratteristiche di un DBMS (Data Base Management System)
- Affidabilità → deve funzionare sempre
- Privatezza → devono esserci dei meccanismi che garantiscano a vari livelli la privatezza
- Efficacia → devo poter trovare l’informazione che sto cercando
- Efficienza → per trovare la medesima informazione in un sistema informativo, a seconda di come il sistema è costruito ci sono diversi ordini di grandezza sui tempi di risposta
Sistemi informativi aziendali
Sistema informativo: insieme degli strumenti, risorse e procedure che consentono la gestione delle informazioni aziendali.
- È essenziale per il funzionamento dell'azienda
- È fortemente integrato con il sistema organizzativo
- Comprende risorse umane
Sistema informatico: insieme dei sistemi hardware e software presenti in un'azienda. Permette di gestire in maniera automatizzata l’informazione (informazione codificata come dati gestiti dai programmi e memorizzati nelle basi di dati).
- Assicura la generazione, l’elaborazione, la circolazione e la memorizzazione delle informazioni su supporti informatici.
Dato: unità elementare (grezza) di informazione.
Informazione: elaborazione dei dati per rispondere a esigenze specifiche dell’impresa.
Approccio tecnologico alla gestione dell’informazione: due visioni fondamentali (visione centrata sui dati o sulle applicazioni).
Compiti della tecnologia dell’informazione (visione centrata sui dati)
- Immissione, Memorizzazione, Cancellazione dei dati
- Accesso, Elaborazione, Trasferimento: dai dati all'informazione
- Presentazione, Visualizzazione dell'informazione
Processo: procedura aziendale che risponde ad un particolare compito applicativo.
Come analizzare i sistemi informativi?
a. Partendo dai dati
b. Partendo dai processi
Criterio principale: stabilità → i dati sono più stabili dei processi!
DBMS
- Sistemi software dedicati alla gestione dei dati
- Esistono sul mercato alcune centinaia di prodotti diversi
Confronto con architetture con/senza DBMS
Principale differenza: gestione dei dati unitaria e a più alto livello (tramite linguaggi specializzati).
Disallineamento delle copie di dati significa inconsistenza globale del database: quale dei due dati è quello corretto?
Principali caratteristiche
- Condivisione dei dati
- Assenza di replicazione nei file
- Concorrenza → es. due utenti non possono acquistare il medesimo prodotto
- Qualità dei dati
- Vincoli di integrità → garantiscono che i dati rappresentino un’informazione sensata
- Efficienza
- Caricamento, query, sort
- Controllo dell’accesso
- Privatezza (e accesso selettivo ai dati)
- Robustezza → sistemi resilienti
Come si usa un DBMS?
a. Definendo la struttura generale dei dati
b. Definendo le specifiche operazioni sui dati
Schema dei dati: struttura comune a una famiglia di dati. È il tipo della base di dati.
Istanza: contenuto delle variabili che vado a dichiarare.
Architettura a livelli degli schemi
- Schema esterno (o delle viste): descrizione per specifiche applicazioni → consente a ciascun settore aziendale di avere una vista personalizzata sul database aziendale (anche se i dati sono gli stessi).
- Schema logico: descrizione globale → progettare la base di dati aziendale.
- Schema interno: descrizione dei meccanismi di gestione dei dati → riguarda la struttura informatica, uso delle strutture dati per memorizzare e gestire come i dati sono fisicamente memorizzati.
Questi tre livelli consentono all’interfaccia tra un livello e l’altro dei gradi di libertà.
Indipendenza logica: capacità di offrire una visione dei dati differente ad utenti differenti.
Indipendenza fisica: capacità di astrarre completamente dai meccanismi di gestione dei dati. Mi garantisce di riutilizzare il progetto logico anche cambiando la tecnologia che sta sotto.
I linguaggi del DBMS
- Data Definition Language (DDL) → contiene delle istruzioni che servono per agire sugli schemi e che quindi sarà usato dai database administrator e dai progettisti.
- Es: CREATE, DROP, ALTER
- Data Manipulation Language (DML) → linguaggio utilizzato dagli utenti. Consente di inserire, modificare, cancellare e trovare l’informazione che serve quando serve.
- Es: SELECT, INSERT, UPDATE, DELETE
Gli utenti del DBMS
- Database administrator: programma il DDL.
- Programmatori applicativi: programmano le applicazioni, usando il DML. Quando le applicazioni avranno bisogno di informazioni, saranno i programmi stessi e non gli utenti a usare il DML per andare a recuperare l’informazione.
- Utenti casuali: eseguono le versioni “amichevoli” del DML (query language, interfacce grafiche).
- Utenti finali (“terminalisti”): eseguono le applicazioni.
I moduli del DBMS
Un DBMS è un’architettura software abbastanza complessa fatta di moduli e sottomoduli. Nel dizionario dati è presente la definizione degli schemi (è una piccola frazione del database vero e proprio). Il database vero e proprio contiene le istanze dei dati, contiene l’informazione codificata sotto forma di dati.
Il modello relazionale dei dati
Definizione formale
- Dominio D: un qualunque insieme di valori
- Prodotto cartesiano su n domini: D1 × D2 × ... × Dn (non necessariamente distinti): insieme delle n-ple (tuple) <d1, d2, ..., dn> con di ∈ Di
- Relazione R su D1 × D2 × ... × Dn: un qualunque sottoinsieme di D1 × D2 × ... × Dn
Esempio
D1 = {a, b}
D2 = {1, 2, 3}
D1 × D2 = {<a, 1>, <b, 1>, <a, 2>, <b, 2>, <a, 3>, <b, 3>}
R1 = {<a, 1>, <b, 3>}
R2 = {<a, 1>, <a, 2>, <b, 3>}
R3 = {}
R4 = {<a, 1>, <b, 1>, <a, 2>, <b, 2>, <a, 3>, <b, 3>}
Proprietà
- Grado della relazione: numero di domini (n)
- Cardinalità della relazione: numero di tuple
- Attributo: nome dato al dominio in una relazione [i nomi di attributi in una relazione devono essere tutti distinti fra loro]
- Schema (di una relazione): tabella (attributo1, ..., attributoN) [i nomi delle relazioni in uno schema devono essere tutti distinti fra loro]
Una differenza significativa:
Definizione formale → assenza di duplicati.
Definizione informale → possibili duplicati.
Esempio: gestione degli esami universitari.
Riflessioni
- Differenza fra schema e istanza
- Due attività assai differenti:
- Progetto dello schema
- Gestione dell’istanza
- Passaggio dai dati all’informazione (Query language) → linguaggio di interrogazione
Lo schema definisce la struttura dei dati: nel modello formale sono i domini e i nomi degli attributi, oltre il nome della relazione; nel modello informale sono i nomi delle tabelle e le intestazioni, cioè i nomi delle colonne nello schema delle tabelle. Le istanze sono invece il contenuto, le tuple nel modello formale, le righe all’interno della tabella. L’informazione è contenuta nelle istanze.
Vincoli di integrità
Escludono alcune istanze in quanto non rappresentano correttamente il mondo applicativo.
- Chiavi
- Vincoli sui valori nulli (entity integrity)
- Integrità referenziale (referential integrity)
- Vincoli generici
Chiave: sottoinsieme degli attributi dello schema che ha la proprietà di unicità e minimalità.
- Unicità: non esistono due tuple con chiave uguale.
- Minimalità: sottraendo un qualunque attributo alla chiave si perde la proprietà di unicità.
Un insieme di attributi per cui vale solo la proprietà di unicità si chiama superchiave (questo conferma che l’intero schema sia una superchiave, però non è detto che sia una chiave).
Chiave esterna: attributi K in R1 e R2; se K è chiave primaria in R1 allora è esterna in R2.
Entity integrity: non ci possono essere valori nulli in nessun componente di una chiave.
Referential integrity: se K è chiave esterna in R2 e primaria in R1, i valori di K in R2 sono compresi fra quelli che ha in R1 (devono essere un sottoinsieme o al più nulli).
Notazioni
R(A, B, C) Schema di una relazione.
R(A: D1, B: D2, C: D3) Domini in evidenza (normalmente si sottintendono).
Tipicamente per i nomi di attributi e relazioni si utilizzano lettere maiuscole.
R è il nome della relazione. Con “r” si intende un’istanza di R (un insieme di tuple).
r = {(a, 1, x), (b, 2, y)}
s = (a, 1, x) e t = (b, 2, y) sono due tuple.
s, t appartenenti a r
s.B = s[B] = 1 valore dell’attributo B in s (due notazioni).
t.C = t[C] = y
AC = {A, C}, s.AC = s[AC] = (a, x) insieme degli attributi A e C.
t.BC = t[BC] = (2, y)
X = AC, s.X = s[X] = (a, x) X rappresenta l’insieme di attributi A e C.
R(X) relazione generica senza specificare i suoi attributi (A, B e C in questo esempio)
Notazione di chiave
R(X) con istanza r
Sia K un sottoinsieme di X, K è chiave di R sse:
- per ogni coppia s, t tuple di r: s[K] = t[K] implica s = t (proprietà di unicità)
- non esiste sottoinsieme H proprio di K t.c. per H vale la 1. ovvero possono esistere u, v in r tali che u ≠ v e u[H] = v[H] (proprietà di minimalità)
Per indicare la chiave di una relazione si sottolineano gli attributi che vi appartengono. R(A, B, C)
Algebra relazionale (AR)
È un linguaggio per DB costituito da un insieme di operatori che si applicano a una o più relazioni e che producono una relazione.
Linguaggi di interrogazione
- Linguaggi formali
- Algebra relazionale
- Calcolo relazionale
- Programmazione logica
- Linguaggi “programmativi”
- SQL: Structured Query Language
- QBE: Query By Example
Algebra relazionale
Definite da Codd (1970), molto utile per imparare a formulare query, insieme minimo di 5 operatori che danno l’intero potere espressivo del linguaggio
Selezione
L’operatore di selezione σ permette di selezionare un sottoinsieme delle tuple di una relazione, applicando a ciascuna di esse una formula booleana F (predicato di selezione).
F si compone di predicati connessi da AND (∧), OR (∨) e NOT (¬).
Ogni predicato è del tipo A op c o A op B, dove:
- A e B sono attributi in X
- c ∈ dom(A) è una costante
- op ∈ {=, ≠, <, >, ≤, ≥} è un operatore di confronto
Il risultato della selezione sarà una relazione che avrà lo stesso schema di R, quindi tutti gli attributi X, e come istanza sarà l’insieme delle tuple t appartenenti a r tali per cui il predicato F risulta vero.
Proiezione (π)
L’operatore di proiezione è ortogonale alla selezione, in quanto permette di selezionare un sottoinsieme Y degli attributi di una relazione.
Il risultato della proiezione è una relazione con schema Y e come istanza tutte le sottotuple relative agli attributi Y che posso estrarre da R.
La proiezione elimina eventuali duplicati. Tuple che prima erano diverse ma che per effetto della proiezione diventano uguali, danno luogo a duplicati che devono essere eliminati, perciò il risultato avrà meno tuple della relazione di partenza.
Proiezione: cardinalità del risultato
In generale, la cardinalità di πY(r) è minore o uguale a quella di r (la proiezione “elimina i duplicati”). L’uguaglianza è garantita se e solo se Y è una superchiave di R(X) (allora vale l’unicità, quindi anche proiettando soltanto sugli attributi in Y le tuple sono tutte diverse).
Dimostrazione
Se Y è una superchiave di R(X), in ogni istanza legale r di R(X) non esistono due tuple distinte t1 e t2 tali che t1[Y] = t2[Y].
Se Y non è superchiave allora è possibile costruire un’istanza legale r con due tuple distinte t1 e t2 tali che t1[Y] = t2[Y]. Tali tuple “collassano” in una singola tupla a seguito della proiezione.
Si noti che il risultato ammette la possibilità che “per caso” la cardinalità non vari anche se Y non è superchiave.
Join naturale (⋈)
L’operatore di join naturale combina le tuple di due relazioni sulla base dell’uguaglianza dei valori degli attributi comuni alle due relazioni.
Ogni tupla che compare nel risultato del join naturale di r1 e r2, istanze rispettivamente di R1(X1) e R2(X2), è ottenuta come combinazione (“match”) di una tupla di r1 con una tupla di r2 sulla base dell’uguaglianza dei valori degli attributi comuni (cioè quelli in X1 ∩ X2).
Inoltre, lo schema del risultato è l’unione degli schemi degli operandi.
Osservazioni
- È possibile che una tupla di una delle relazioni operande non faccia match con nessuna tupla dell’altra relazione; in tal caso tale tupla viene detta “dangling”.
- Nel caso limite è quindi possibile che il risultato del join sia vuoto; all’altro estremo è possibile che ogni tupla di r1 si combini con ogni tupla di r2.
- Ne segue che la cardinalità del join, |r1 ⋈ r2|, è compresa tra 0 e |r1| * |r2|.
- Se il join è eseguito su una superchiave di R1(X1) allora ogni tupla di r1 fa match con al massimo una tupla di r2, quindi |r1 ⋈ r2| ≤ |r2|.
- Se X1 ∩ X2 è la chiave primaria di R1(X1) e foreign key in R2(X2) (e quindi c’è un vincolo di integrità referenziale) allora |r1 ⋈ r2| = |r2|.
Join naturale e intersezione
Quando le due relazioni hanno lo stesso schema (X1 = X2) allora due tuple fanno match se e solo se hanno lo stesso valore per tutti gli attributi, ovvero sono identiche, per cui:
r1 ⋈ r2 = r1 ∩ r2
Il join naturale equivale all’intersezione (∩) delle due relazioni.
Join naturale e prodotto cartesiano
Quando non ci sono attributi in comune (X1 ∩ X2 = Ø), allora due tuple fanno sempre match, per cui:
r1 ⋈ r2 = r1 × r2
Il join naturale equivale al prodotto cartesiano.
In questo caso, a differenza del caso matematico, il prodotto cartesiano non è ordinato.
Unione e differenza (∪, −)
Poiché le relazioni sono insiemi, sono ben definite le operazioni di unione e differenza. Entrambe si applicano a relazioni con lo stesso insieme di attributi.
Si noti che l’intersezione si può anche scrivere come: r1 − (r1 − r2).
Il problema dei nomi
Il join naturale, l’unione e la differenza operano (sia pur diversamente) sulla base degli attributi comuni a due schemi.
Ridenominazione (ρ)
L’operatore di ridenominazione modifica lo schema di una relazione, cambiando i nomi di uno o più attributi.
La definizione formale, oltremodo complessa, si omette; è sufficiente ricordare che con ρY(r) su R(XZ), cambia lo schema in YZ, lasciando invariati i valori delle tuple, e che nel caso si cambi più di un attributo, allora l’ordine in cui vengono rinominati è rilevante.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti teoria Sistemi informativi
-
Appunti di Sistemi informativi
-
Appunti Sistemi informativi
-
Appunti sistemi informativi