Software Applicativo

 

Categoria di programmi specifici per una particolare applicazione o classe di applicazioni.

 

Sistemi di sviluppo applicazioni:

·    livello "superiore" del S.O., quali compilatori, interpreti, editor;

·    software adatto alla realizzazione di una vasta gamma di applicazioni, quali sistemi di editoria, fogli elettronici, database, etc.

·    tendono ad essere progressivamente inseriti nel S.O.

 

 

Software di produttività individuale (office automation): strumenti di tipo elettronico che tendono a sostituire o integrare gli strumenti tradizionali.

Scopi:

·    minore utilizzo di supporto cartaceo;

·    facilità nell’archiviazione e reperimento dei dati;

·    migliore qualità del lavoro;

·    incremento della produttività del lavoro.

 

Vari tipi:

Þsistemi di scrittura

Þfogli elettronici

Þsistemi di gestione di basi di dati

Þsistemi grafici

Þcomunicazione (posta elettronica, etc.)

 

Videoscrittura (Word Processor)

Operazioni fondamentali:

·    inserimento, modifica e/o correzione del testo;

·    ricerca e sostituzione di parti del testo;

·    manipolazione di blocchi e composizione di testi (taglia e cuci);

·    stampa del documento finale, personalizzazione dell’ aspetto grafico e dell’ impaginazione del testo;

·    archiviazione e reperimento testi;

·    fusione di un testo con un archivio di dati per la produzione di copie personalizzate dello stesso (mailing list).

 

Evoluzione:

·    flessibilità/facilità interfaccia utente;

·    da editor line-oriented a editor full-screen;

·    dizionario e controllo ortografico (in linea o a posteriori);

·    set di caratteri e simboli (corsivo, gotico, lettere greche, formule matematiche, etc.) e gestione delle loro dimensioni;

·    redazione tabelle/disegni.

 

Word-Processor ==> Sistemi di scrittura “professionali”: sistemi di editoria elettronica (per redazione e stampa di giornali, libri, pubblicazioni varie).

           

 

In questo esempio, è stata inserita un’ immagine a colori all’interno di una pagina di testo, ed a fianco dell’immagine è stata aggiunta una descrizione come questa che leggete...


Foglio Elettronico (SPREADSHEET) (1)

strumento generalizzato di calcolo

 

 

                                                           Colonne

 

                                     A                        B                           C

           

                        1

 

Righe    2                                                                                     cella

                       

                      3

                    

 

Una cella è associata a due elementi:

·   una formula (interna)

·   un risultato (visibile)

Costante ==> formula e risultato coincidono

 

Valori nelle celle:

·   stringhe alfanumeriche (dette "etichette");

·   dati numerici (fixed e floating point);

·   formule che producono risultati (nel foglio si vedono solo i risultati).


Foglio Elettronico (2)

 

 

Esempio:

 

 

 

         A           B             C             D       ...       Z

 

  1                Gennaio       Febbraio       Marzo      ...     Totale

  2

  3  P.Finiti        3000            7500        ...       ...      25000

  4  Semilavorati     170             200        ...       ...       

  5  Consulenze       210             300        ...       ...

  6  Manutenzione     540             130        ...  

  7  Impianti         150              45                         risultato

  8  Inter.attivi      20              23                       (la formula

  9  Totale ricavi                                             non si vede)

 10  Spese

 11  Stipendi                valori

 12  Iter.passivi

 13  Fitti

 14  Merci               etichette

 15  Spese pubbl.                       

 16 ...                                        si può abbellire il foglio con

 ...                                           diagrammi, testo, effetti, etc.

 21  Totale costi

 22  Utile lordo

 ...

 30  Utile netto     100              30       ...       ...       1000

 

 

 


                                                                                risultati
Foglio Elettronico (3)

 

I n d i r i z z a m e n t o   d e l l e   C e l l e

 

·   assoluto (sempre la stessa cella): $A1, $B$12

·   relativo (alla cella contenente il riferimento): A1, B12

 

 

A

B

C

D

...

1

 

 

 

 

 

2

 

$A$1

 

 

 

3

 

 

A1

 

 

4

 

 

 

B2

 

...

 

 

 

 

 

 

 

 

Esempio: Somma di due righe

 

 

A

B

C

1

1000

500

A1+B1 = 1500

2

1200

750

A2+B2 = 1950

3

...

...

...

 

 

la formula A1+B1 (indirizzi relativi) nella cella C1 copiata nella cella C2 diventa: A2+B2


Foglio Elettronico (4)

 

Ogni volta che viene modificato un valore numerico o una formula nel tabellone tutto il tabellone viene aggiornato (ricalcolo automatico)

 

 

Ad esempio:

 

 

A

B

C

D

 

1

 

20

(valore)

15

(valore)

35

(formula: A1+B1)

7

(formula: C1*0,20)

 

 

 

 

 

 


Se il valore di A1 viene cambiato in 45, si ottiene:

                       

 

A

B

C

D

 

1

 

45

(valore)

15

(valore)

60

(formula: A1+B1)

12

(formula: C1*0,20)

 

 

 

 

 

 

 

Se si cambia la formula in C1 da A1+B1 a A1*B1 si ottiene:

                       

 

A

B

C

D

 

1

 

20

(valore)

15

(valore)

300

(formula: A1*B1)

60

(formula: C1*0,20)

 

 

 

 

 

 

 

Rialcolo immediato (automatico) o su richiesta (manuale)


Foglio Elettronico (5)

 

Nelle Formule si possono utilizzare:

·    le normali operazioni aritmetiche;

·    funzioni quali SOMMA, MEDIA, MIN, MAX, trigonometriche, statistiche, finanziarie, etc.

Le celle possono essere individuate:

·    singolarmente con l’indirizzo assoluto o relativo;

·    a intervallo di riga (ad es. A3..E3), di colonna (ad es. C4..C12), rettangolare (ad es. A3..C12).

 

Esempi di formule:

·    (B2+C3+D4)*20/E5;

·    @SOMMA(A1..A10)*5/100;

·    @MIN(B1..C20)/@MAX(B1..C20);

·    @MIN(A1..E20)/@MEDIA(A1..E20).

 

Funzione condizionale

 

@IF(condizione; azione1; azione2)

 

                                                                                                 then           else

Esempio:

 


                                                   condizione            azione1                  azione2

 

 


@IF(B5<@MIN(A1..A20); @MEDIA(B1..B10); @MIN(C1..C10)

 

                                                                                            then                       else

           

           
Foglio Elettronico (6)

 

Zona = insieme di celle rettangolari individuato dagli indirizzi degli estremi di una diagonale (con eventuale nome)

 

 

 

            A          B          C          D          E          F

 


1                                                                                           

                                                                                             

2                                                                                                    zona C1..F3

                                                                                             

3

                                                                                 

 

 

 

 


                questa NON è una zona !

 

           

 

 

Una zona può essere:

·     delimitata dagli estremi (punti di ancoraggio) con il cursore;

·     larga una sola colonna,  una sola riga, una sola cella;

 

In un foglio elettronico è possibile:

·     definire la larghezza delle colonne;

·     definire il tipo di dato/risultato delle celle: numerico (con eventuali decimali), data, valuta, stringa, etc.

      

Ci sono comandi di:

·    inserimento/cancellazione di righe/colonne;

·    cancellazione di dati/formule in zone;

·    copia di dati/formule da una zona ad un’altra;

·    stampa del foglio elettronico o di una zona;

·    salvataggio di un foglio elettronico;

·    lettura di un foglio elettronico.


Foglio Elettronico (7)

 

è possibile lavorare su più fogli elettronici contemporaneamente (copiare celle da un foglio ad un altro, unire due fogli in uno, riferirsi a risultati di un altro foglio, etc.)

 

Esempio:

                                                                                                  Dettaglio stipendi

 


                                                                    A               B              C

             GEN                                 1        CARLI          1000            ...

                            espansione

                                                      2       ROSSI         1250            ...

                            di una cella

Stipendi              in un foglio        3        VERDI         2000            ...

                              

                                                     4        BIANCHI     1900            ...

        cella in un foglio

        elettronico                             5             ...              ...              ...

 


                                                   16        Totale

 

                                       unico dato totale riportato

                                       nel foglio padre

 

 

 

Macroistruzioni = gruppi di istruzioni (richiamabili con un nome)

 

è anche possibile eseguire istruzioni di controllo (selezione, iterazione, salto) ==> macro come sequenze di comandi di un linguaggio procedurale.


Sistemi Grafici (1)

 

Si abbia la seguente serie di dati:

 

GENNAIO

150

FEBBRAIO

120

MARZO

140

APRILE

160

...

...

 

 

oppure:

 

GENNAIO

FEBBRAIO

MARZO

APRILE

...

150

120

140

160

...

 

 

Si voglia rappresentare un grafico lineare o curva. Scelti i dati da rappresentare sull’asse delle X (orizzontale) e quelli delle Y (verticale) si ottiene il seguente grafico lineare (asse X=ascisse; asse Y=ordinate):

 

                                  

GRAFICO LINEARE

                                  
Sistemi Grafici (2)

Lo stesso grafico in forma istogramma o diagramma a barre potrebbe essere:

GRAFICO A BARRA

 

Nel grafico vi sono varie opzioni possibili:

·    tipo di rappresentazione del punto;

·    tipo di tratto della linea (anche niente);

·    eventuali colori (assi, linea, punti);

·    aggiunta di scritte di vario tipo (titolo, legenda, note);

·    eventuale tipo di curva da tracciare (segmenti, interpolazione);

·    eventuale linea base;

·    eventuali operazioni sulle curve e rappresentazione di più curve;

·    scritte e disegni vari.

 

Ad esempio dalla seguente tabella:

 

 

GENNAIO

FEBBRAIO

MARZO

APRILE

UTILI

400

250

300

290

RICAVI

1500

1200

1300

1400

COSTI

1100

950

1000

1110

           

si può ottenere una rappresentazione grafica come di seguito riportato:


Sistemi Grafici (3)

RICAVI - COSTI - UTILE

I0 QUADRIMESTRE ‘91

 

Il diagramma ricavi/costi/utili a barre potrebbe diventare:

 

RICAVI-COSTI-UTILE I QUADRIMESTRE

 

Naturalmente per i casi semplici vi sono i comportamenti di default:

·     definizione della scala di rappresentazione;

·     dei colori, simboli, tratti;

·     posizione del titolo, legenda;

·     posizione, dimensione caratteri, forma del titolo, legenda note.


Sistemi Grafici (4)

 

Vi possono anche essere due serie numeriche sui due assi. Sui grafici si possono fare:

·     operazioni varie di calcolo (somme e differenze, cumulative, percentuali, etc.);

·     operazioni grafiche di vario tipo e completamenti di testi;

·     stampa;

·     memorizzazione;

·     lettura di grafico memorizzato.

N.B. I formati di memorizzazione dei grafici dipendono da sistema a sistema e non sono in genere trasportabili

 

 

 

 

 

.

 

 

 

 

           

 

 

 

 

 

 

Lo stesso diagramma con evidenziazione di uno spicchio:

 

 

 

 

Sistemi Grafici (5)

Il diagramma ricavi/costi/utile a barre:

RICAVI-COSTI-UTILE

1° QUADRIMESTRE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Il diagramma ricavi/costi/utili a barra percentuale e cumulativo:

BARRA PERCENTUALE

 CUMULATIVI UTILI

10 QUADRIMESTRE

 

Data Base (1)

 

 

Problematica gestione dati:

*    oggetti delle elaborazioni, difficili da gestire, memorizzare, reperire, modificare;

*    talvolta ridondanti/incongruenti;

*    non sufficientemente protetti;

*    spesso comuni a più applicazioni/utilizzatori e quindi potenziali sorgenti di conflitto.

 

Terminologia:

·    BANCA DATI: raccolta di dati, utilizzabili da una molteplicita` di utenti;

·    DATA BASE: tecnica di organizzazione dei dati in una Banca Dati;

·    DATA BASE MANAGEMENT SYSTEM (DBMS): sistemi software per la gestione di banche Dati secondo tecniche Data Base.

Data Base (2)

 

Obiettivi di un DBMS:

¨ organizzare e gestire dati (grandi volumi);

¨ facilità di accesso ai dati;

¨ indipendenza dei dati dai programmi e viceversa;

¨ indipendenza dall’ambiente HW/SW (trasparenza delle applicazioni da supporti e metodi di memorizzazione);

¨ condivisione dei dati da più utenti;

¨ salvaguardia dell’integrità (correttezza) dei dati;

¨ protezione da accessi non autorizzati (gestione della riservatezza);

¨ eliminazione della ridondanza dei dati.

 

Schema a tre livelli di un DBMS:

 

           

                        L

                                              

                               I              

                                               L

                               V             I

                                               V              L I V E L L O

                               E             E

                                               L            

                               L             L             I N T E R N O

                                               O            

                               L            

                                               C  O N C E T  T U A L E

                               O

                                              

                        E  S  T  E  R  N  O

                       

 

·     LIVELLO INTERNO (o fisico): organizzazione dei dati sui supporti magnetici;

·     LIVELLO CONCETTUALE (o logico): schema globale dei dati;

·     LIVELLO ESTERNO (sottoschemi): modalità di accesso ai dati da parte degli utenti, con procedure diverse e visione dei dati spesso parziale.


Data Base (3)

 

Modeli di database:

·    gerarchico (in disuso; utilizzato come modello interno)

·    reticolare (  "       "             "          "          "            "     )

·    relazionale (attuale)

Modello relazionale

Basato sulla teoria degli insiemi e su tabelle dette “relazioni”

Esempio: Tabella º Relazione CLIENTI

                                                     colonna º campo º attributo

l’ordine delle righe e delle                                         

colonne non è significativo       

 

CODICE

NOME

CITTà

ZONA

C01

Rossi

Genova

NW

C04

Bianchi

Ancona

CN

C02

Verdi

Roma

CE

C12

Finzi

Firenze

CN

C34

Carli

Torino

NW

C09

Fazio

Milano

NO

 

 

 


CHIAVE PRIMARIA                       attributi

                                                      (valori dello stesso tipo per ogni colonna)

 

·      Descrizione dei dati indipendente dalla rappresentazione fisica (nomi e valori degli attributi, ma non posizione).

·      Ordine delle colonne e delle righe non significativo.

·      Chiave primaria = uno o più attributi che identificano univocamente le righe .

·      Valori elementari non ulteriormente scomponibili.


Data Base (4)

Chiave esterna = attributo(i) i cui valori corrispondono a chiavi primarie in altre tabelle e consentono di mettere in relazione (stabilire associazioni tra) le tabelle.

 

Tabella CLIENTI

CODICE

NOME

CITTà

ZONA

...

...

...

NW

...

...

...

CN

                                   

      

Tabella ZONE 

ZONA

DESCRIZIONE

CN

Centro-Nord

NW

Nord-Ovest

 

Esempio di chiave esterna

 

 

Le tabelle non devono contenere dipendenze funzionali e ridondanze che pongano problemi di aggiornamento. Bisogna ridurre o normalizzare la tabella a relazioni semplici.

 

CODICE

NOME

CITTà

ZONA

DESCRIZIONE

. . .

C01

Rossi

Genova

NW

Nord-Ovest

. . .

C34

Carli

Torino

NW

Nord-Ovest

. . .

 

 

 

 

 

 

 

Tabella non normalizzata

 

è molto meglio avere le due tabelle CLIENTI e ZONE separate, con la chiave esterna che ne consente l’associazione: ciò garantisce l”univocità” del dato, cioé la sua presenza una sola volta in un unico posto.


Data Base (5)

 

 

Linguaggi di un DBMS

 

 

DDL (data definition language)

Orientato alla definizione ed alla descrizione dei dati delle tabelle, in particolar modo per quanto riguarda:

·    nome della tabella;

·    nome dei campi (colonne, attributi);

·    lunghezza dei campi;

·    tipi dei campi;

·    chiave primaria;

·    viste logiche (sottoinsiemi parziali o “calcolati” di tabelle);

·    controlli sui valori dei dati;

·     procedure automatiche da attivare su eventi specifici sui dati (“trigger”).

 

DML (data manipulation language)

Comprende le operazioni di manipolazione dei dati, cioé:

·    inserimento (insert) di nuove righe nelle tabelle;

·    modifica (update) dei valori contenuti nelle righe;

·    cancellazione (delete) di righe.

 

QL (query language)

Può anche essere visto come parte del DML. Si basa su tre operazioni fondamentali (che costituiscono la cosiddetta “algebra relazionale”):

·    selezione di righe su condizione (select);

·    fusione (join) di due tabelle intorno ad un attributo comune;

·    estrazione (project) di colonne, e produzione di tabelle ridotte eliminando l’eventuale duplicazione di righe.


Data Base (6)

 

Esempi di algebra relazionale

 

a)select from CLIENTI where ZONA=“NW”

 

CODICE

NOME

CITTà

ZONA

C01

Rossi

Genova

NW

C34

Carli

Torino

NW

 

 

b)join CLIENTI, ZONE where CLIENTI.ZONA=ZONE.ZONA

 

CODICE

NOME

CITTA`

ZONA

DESCRIZIONE

 

 

 

 

 

                                               4+2-1 colonne (una colonna in comune)

 

 

c)project CITTÀ, ZONA from CLIENTI

 

CITTà

ZONA

Genova

NW

 

 

Altre operazioni (su tabelle omogenee):

·    unione (AÈB):         A            

                                                          

                                                   B

 

·    intersezione (AÇB):     A

 

                                                             B

·    differenza (A-B):

                                   A

 

                                                  

Casella di testo: B
 



Data Base (7)

 

·    DML linguaggio autosufficiente/richiamabile/che richiama altri.

·    QBE (Query By Example) linguaggio di interrogazione guidata di dati, di facile e intuitivo utilizzo.

Altre parti di un DBMS:

·    generatore automatico di prospetti di stampa (report generator)

·    generatore automatico formati video per l’input dati (form generator)

·    linguaggio procedurale (di terza generazione)

==> linguaggio procedurale di quarta generazione.

 

INDICI E CHIAVI

 

Indice = tabella ordinata su una o più colonne

 

·    univoco = ogni valore dell’indice corrisponde ad una sola riga nella tabella;

·    altrimenti, si dice che l’indice ammette duplicati.

Ogni riga della tabella indice contiene due attributi: il valore della chiave, e la corrispondente posizione nella tabella principale ==> permette la ricerca binaria (max log2N tentativi).

 

       Indice                                     Tabella CLIENTI

...

NOME

...

...

Rossi

...

...

Bianchi

...

...

Verdi

...

...

Finzi

...

...

Carli

...

...

Fazio

...

...

...

...

 

NOME

Posizione

 

 

Bianchi

2

 

 

Carli

5

 

 

Fazio

6

 

 

Finzi

4

 

 

Rossi

1

 

 

Verdi

3

 

 

...

...

 

 

 

 

           
Data Base (8)

 

IL LINGUAGGIO SQL

·    SQL = Structured Query Language.

·    Proposto da IBM e successivamente standardizzato dall’ANSI nel 1985.

·    Non solamente “query”, ma tutte le funzionalità DDL, DML e QL.

 

Comandi principali DDL

·    create table tabella (attributo tipo(lunghezza), ...);

create table PERSONALE (MATRICOLA char(5) not null, COGNOME char(30), NOME char(20), CODFISC char(16), ASSUNTO date, LIVELLO smallint, STIP_BASE integer);

 

Tipi degli attributi:

ð        char(n) = stringa alfanumerica di “n” caratteri;

ð        smallint = intero piccolo (tipicamente a 16 bit);

ð        integer = intero normale (tipicamente a 32 bit);

ð        decimal(m,n) = intero a virgola fissa (“m” cifre totali, “n” dopo la virgola;

ð        real = numero floating-point a precisione singola (tipicamente 32 bit);

ð        float = numero floating-point a doppia recisione (tipicamente 64 bit);

ð        date, time, timestamp = data, ora e timbro datario.

La parola chiave not null indica l’obbligatorietà di un valore per l’attributo: ciò implica che l’inserimento successivo di una riga nella tabella non avente alcun valore per l’attributo sarà rifiutato.

LOGICA A TRE VALORI

A

B

not B

A and B

A or B

?

?

?

?

?

?

vero

falso

?

vero

?

falso

vero

falso

forse


Data Base (9)

 

·     alter table tabella

             add attributo tipo;

             drop attributo;

             modify attributo tipo;

alter table PERSONALE add (NASCITA date) before ASSUNTO;

 

·     create [unique] index indice on tabella (attributo, ...);

create unique index I1 on PERSONALE(MATRICOLA);

create index I2 on PERSONALE(COGNOME, NOME);

 

             table tabella;

·     drop                    (cancellazione di tabelle o indici)

             index indice;

drop table PERSONALE;

drop index I1;

 

Comandi per modifica dati (DML)

·     insert into tabella values (valore1, valore2, ...);

insert into PERSONALE values (‘AB541’, ‘ROSSI’, ‘Ernesto’,                                            ‘RSSRNS48M20R341E’, ‘20/08/1948’, 5, 1780000);

 

·     update tabella set attributo=valore where condizione;

update PERSONALE set LIVELLO=6 where MATRICOLA=‘AB541’;

 

·     delete from tabella where condizione;

delete from PERSONALE where MATRICOLA=‘AB541’;


Data Base (10)

 

Comando QL generalizzato di estrazione di dati

select attributo1, ... (* = tutti) from tabella where condizione;

select NOME, NASCITA from PERSONALE where LIVELLO=5;

 

Clausole opzionali:

-   order by (ordinamenti sui vari attributi)

-   group by (risultati intermedi)

-   count(*) (numero totale di righe nella selezione)

-   count (distinct attributo) (numero di valori distinti e non nulli dell'attributo nella selezione)

-   sum(attributo)

-   sum(distinct attributo)

-   min(attributo)

-   max(attributo)

-   avg(attributo)

Operatori di selezione:

-   where attributo between valore_min and valore_max

-   where attributo in (insieme_di_valori)

-   where attributo like “modello” (in “modello” è possibile utilizzare i caratteri jolly “%” = gruppo di caratteri e “_” = singolo carattere)

Data Base (11)

 

Esempi di istruzioni SQL

 

update PERSONALE

set STIP_BASE = STIP_BASE*1,05 where LIVELLO <= 3;

 

select * from PERSONALE where ASSUNTO > ‘31/12/1980’

order by COGNOME, NOME;

 

select * from PERSONALE where ASSUNTO between ‘01/01/1980’ and ‘31/12/1985’ and PROV in (‘MI’, ’BA’, ’FG) or COGNOME like ‘ROS%’;

     

select COGNOME, NOME, DESCRIZIONE from PERSONALE, REPARTI

    where PERSONALE.REPARTO = REPARTI.COD_REP

      and STIP_BASE = (select max(STIP_BASE) from PERSONALE

                            where FUNZIONE = ‘IMPIEGATO’)

      order by NASCITA;

 

select COD_RAP, sum(IMPORTO) from FATTURE,RAPPRESENTANTI,CLIENTI

      where FATTURE.COD_CLI = CLIENTI.CLI

      and CLIENTI.RAP_CLI = RAPPRESENTANTI.RAP

      group by RAP;

 

Fatture                       Rappresentanti           Clienti

COD_CLI

...

 

RAP

...

 

RAP_CLI

CLI

...

...

...

 

...

...

 

...

...

...


Data Base (12)

 

V i s t e    l o g i c h e

 

Tabelle virtuali = finestre dinamiche sui dati

create view tabella as select attributi from tabella where condizione;

create view CLIENTI_PUGLIA

as select  CODICE, NOME, CITTà

from CLIENTI where PROVINCIA in (‘BA’,’BR’,’FG’,’LE’,’TA’);

 

S i c u r e z z a

 

Comandi di gestione accessibilità: grant (per concedere permessi sugli “oggetti” del database) e revoke (per negare accessi).

 

 

 

 

 

 

QBE: Query by Example

Le operazioni di Query (essenzialmente select) vengono richieste inserendo le condizioni nelle colonne degli attributi

Esempio:

 

CODICE

ZONA

 

 

>300

=NW

 

Data Base (13)

N o r m a l i z z a z i o n e

Tre regole fondamentali:

a)          attributi ad un solo valore (I forma normale);

b)          ogni attributo dipende dall’intera chiave (II forma normale);

c)          direttamente dalla chiave (III forma normale).

 

            FORN

PROD

CITTà

DESCR

Q.Tà

F1

P1

MILANO

DADO

30

F1

P2

MILANO

RUOTA

20

.

.

.

.

.

.

.

.

.

.

F8

P9

TORINO

CHIODO

50

Anomalie:

·     un nuovo fornitore non può “esistere” se non fornisce un prodotto;

·     la cancellazione di una fornitura (per es. F8, P9) può implicare la sparizione di altri dati (per es. una città, un fornitore o un prodotto);

·     se un fornitore cambia città, bisogna aggiornare tutte le righe relative.

CITTà dipende da FORN; DES_PR dipende da PROD.   

 


           

CLI

NOME

CITTà

AGENTE

C1

ALFA

MILANO

ROSSI

...

...

...

...

Anomalie:

·    un nuovo agente non può essere inserito, se non si acquisisce un cliente;

·    la cancellazione di un cliente, può trascinarsi quella di un agente;

·    la sostituzione di un agente, implica l’aggiornamento di tutte le righe relative.

AGENTE dipende da CITTà che dipende da CLI

(dipendenza transitiva)

Data Base (14)

 

I n t e g r i t à   d e i   D a t i

1.          Integrità semantica (valori corretti, controllo di range, procedure di controllo coerenza eventuali dupicazioni, etc.), vincoli funzionali/contestuali, evolutivi.

2.          Integrità di contesa:

-   gestione degli accessi e blocco risorse contese;

-   Rettangolo arrotondato: Aproblema dead-lock che si può verificare se più operazioni accedono a più risorse.

 

 

 


3.          Integrità referenziale: i riferimenti tra tabelle (chiave esterna) devono essere corretti ed esistenti.

Ad esempio, se si cancella un cliente non vi devono essere operazioni che si riferiscono a quel cliente (neanche di tipo storico statistico); stesso discorso per fornitori, articoli, etc. Se ad un codice cliente si cambia il cliente reale, si può provocare una mescolanza tra operazioni del vecchio e del nuovo cliente.

 

4.          Integrità di entità: un attributo che partecipa ad una chiave primaria non può avere valori nulli.

 

L i m i t i   d e i   D a t a B a s e   R e l a z i o n a l i

·    attributi elementari (vietate matrici, record, etc.);

·    righe non varianti, cioé i dati non possono dipendere da altri attributi ==> proliferazione di tabelle e/o di attributi.

·    tabelle normalizzate ==> alto numero di tabelle.

Tutti gli effetti tendono ad accrescere la complessità in termini di tabelle e corrispondenze tra esse.

Le operazioni su una molteplicità di tabelle comportano inefficienze ed incrementano il rischio di blocchi, specie su database distribuiti.