Domande Frequenti

download Domande Frequenti

If you can't read please download the document

Transcript of Domande Frequenti

DOMANDE FREQUENTIIn grassetto le domande gi comparse in tracce d'appello precedenti, in grassetto corsivo le domande che prevedo possano comparire in tracce d'appello successive.

Esercizio sulla progettazione concettuale. Date le specifiche dei requisiti di un sistema informativo da progettare si procede in due fasi:analisi dei requisiti: consiste nel chiarimento e nella riorganizzazione delle specifiche dei requisiti. In particolare, si attua secondo le seguenti regole generali:scegliere il corretto livello di astrazione: evitare di scegliere termini troppo astratti o troppo specifici;

standardizzare la struttura delle frasi: usare sempre lo stesso stile sintattico;

linearizzare le frasi e scomporre quelle articolate: evitare periodi troppo lunghi e contorti;

individuare omonimi e sinonimi: unificando i termini;

rendere esplicito il riferimento fra termini: chiarire per i termini ambigui a quali concetti si riferiscono;

costruire un glossario dei termini: una tabella con indici di colonna: termine, descrizione, sinonimi, collegamenti;

riorganizzare le frasi per concetti: raggruppare le frasi in base ai termini individuati nel glossario;

rappresentare le specifiche con uno schema E-R: consiste nel rappresentare le specifiche dei requisiti in uno schema concettuale corretto, completo, leggibile e minimale, basandosi sul modello di riferimento E-R. possibile seguire diverse strategie nella fase di modellazione concettuale; quella generalmente pi seguita la strategia ibrida: si individuano i concetti pi importanti rappresentandoli in uno schema scheletro, costituito da pochi concetti molto astratti, dopodich si raffina quest'ultimo nello schema finale introducendo attributi, cardinalit delle relazioni, identificatori e gerarchie pi articolate. la strategia pi flessibile perch si adatta bene ad esigenze contrapposte: quella di suddividere un problema complesso in pi sottoproblemi e quella di procedere per raffinamenti successivi;

uno schema concettuale spesso accompagnato da una documentazione di corredo necessaria a rappresentare concetti che, vuoi per questioni di leggibilit vuoi per l'incapacit di poterli esprimere, non sono stati espressi nello schema. Per descrivere propriet di un sistema che non si riesce a rappresentare direttamente con modelli formali si fa uso di regole aziendali. Generalmente si distingue fra:regole di vincolo: esprimono vincoli dell'applicazione d'interesse;

regole di derivazione: esprimono concetti che possono essere derivati da altri concetti.

Esercizio sulla progettazione logica.Dato uno schema concettuale e le operazioni da effettuare su di esso, si costruiscono:tavola dei volumi: una tabella in cui si riportano per ciascun concetto dello schema (entit o relazione), il tipo (E o R) e il volume, vale a dire il numero di occorrenze previsto;

tavola degli accessi: per ogni operazione si costruisce una tabella con indici di colonna: concetto (entit o relazione coinvolta nell'operazione), costrutto (E o R), numero di accessi e tipo dell'operazione (L = lettura o S = scrittura). NB: generalmente alle operazioni di lettura si associa costo 1, alle operazioni di scrittura costo 2.

Dopodich segue la fase di progettazione logica che si articola in:ristrutturazione dello schema E-R: necessaria ad ottimizare lo schema sulla base delle operazioni e del carico applicativo. Si articola, a sua volta, in:analisi delle ridondanze: si decide se eliminare o mantenere eventuali ridondanze. L'analisi viene condotta esaminando le tavole degli accessi delle operazioni che coinvolgono il dato ridondante sia in presenza che assenza della ridondanza. Se ad esempio in assenza di ridondanza il numero di accessi dovesse aumentare significativamente, mantenere la ridondanza non sarebbe una scelta sbagliata;

eliminazione delle generalizzazioni: occorre sostituirle con altri costrutti:accorpare i figli al genitore: conviene quando le operazioni non fanno molto distinzione fra l'uno e gli altri;

accorpare il genitore ai figli: possibile solo quando la generalizzazione completa, conviene quando gli accessi alle entit figlie sono ben distinti fra loro;

sostituire la generalizzazione con associazioni: conviene se gli accessi al genitore sono ben distinti dagli accessi ai figli;

partizionamento/accorpamento di concetti: si decide se opportuno partizionare concetti dello schema in pi concetti o, viceversa, accorpare concetti separati in un unico concetto;

scelta degli identificatori principali: si seleziona un solo identificatore per quelle entit che ne hanno pi d'uno;

traduzione verso il modello relazionale: sulla base dello schema E-R ristrutturato, le entit diventano relazioni e le associazioni diventano relazioni sulle chiavi delle relazioni che partecipano all'associazione (pi gli attributi propri). Generalmente, le associazioni cui partecipano entit con identificatore esterno e le associazioni uno a uno non vengono rappresentate direttamente con una relazione ma vengono accorpate in una delle entit coinvolte.Anche uno schema logico pu essere corredato da una documentazione. Pu essere utile infatti esplicitare i vincoli di integrit referenziale che coinvolgono chiavi esterne per individuare subito i cammini di join, vale a dire le operazioni di join necessarie a ricostruire l'informazione rappresentata dalle associazioni originarie.

Esercizio sulla progettazione concettuale e logica di un data warehouse.A partire dallo schema concettuale della base di dati originaria e da alcuni supposti obiettivi di analisi (per esempio, l'andamento delle vendite di un grande magazzino) la progettazione concettuale e logica di un data warehouse si articola in:identificazione nello schema di input dei concetti di base: in particolare, di fatti, misure e dimensioni utili per l'analisi di interesse. Nel modello multi-dimensionale, un fatto il concetto vero e proprio che si vuole analizzare (ad es. la vendita); le misure rappresentano le propriet atomiche del fatto (ad es. la quantit di merce venduta); le dimensioni sono le prospettive lungo le quali l'analisi pu essere effettuata. Una dimensione pu essere in genere identificata navigando nello schema concettuale a partire dai fatti e includendo di volta in volta concetti che forniscono una maniera per aggregare istanze dei fatti, ossia relazioni uno-a-molti o attributi categorici (ad es. la dimensione tempo, secondo i livelli di aggregazione giorno, mese, trimestre, anno);

ristrutturazione dello schema E-R: sempre consigliabile ristrutturare lo schema E-R in modo da rappresentare fatti e dimensioni in maniera pi esplicita. In particolare, possibile riorganizzare i concetti d'interesse in uno schema a stella in cui il fatto costituisce l'entit centrale e varie entit ausiliarie memorizzano le dimensioni associate al fatto;

traduzione verso il modello logico: lo schema a stella corrisponde ad una implementazione relazionale in cui la relazione dei fatti ha una chiave composta da attributi che si riferiscono alle chiavi delle relazioni dimensione ed in forma normale di Boyce-Codd, mentre le relazioni dimensione hanno una chiave semplice e, per ragioni di efficienza, sono in genere denormalizzate.

Esercizio sulla definizione di strutture fisiche in grado di ottimizzare determinate operazioni.Data un'operazione occorre individuare le relazioni della base di dati in essa coinvolte. Dopodich occorre definire strutture primarie in corrispondenza della chiave primaria di ciascuna di queste relazioni ed eventuali indici secondari su attributi non chiave comunque coinvolti nell'operazione.Fondamentalmente possibile distinguere le strutture primarie in:strutture sequenziali: ne esitono tre varianti:strutture seriali: gli inserimenti vengono effettuati sempre in coda. Ottimali per le operazioni di lettura/scrittura sequenziali; inefficienti per la ricerca di un singolo dato;

strutture ad array: utili solo per tuple a dimensione fissa, collocano le tuple in posizioni prestabilite associando a ciascuna di esse un indice univoco. Di fatto, sono molto poche utilizzate;

strutture ordinate: le tuple vengono ordinate sulla base di un campo chiave (non necessariamente la chiave primaria della relazione). Sono usate nei DBMS solo in associazione con indici secondari;

strutture ad accesso calcolato: l'accesso ad una tupla diretto sulla base del valore di un campo chiave a cui viene applicata una funzione hash che restituisce l'esatta posizione della tupla. la struttura pi efficiente per l'accesso puntuale ad una singola tupla; inefficiente per ricerche basate su intervalli.

Analogamente, possibile distinguere gli indici secondari in:strutture ad accesso calcolato: vale lo stesso discorso delle strutture primarie ad accesso calcolato;

strutture ad albero: le tuple, o puntatori ad esse, rappresentano i nodi foglia di strutture ad albero binario i cui nodi intermedi rappresentano i valori di un determinato campo chiave che permette la ricerca all'interno dell'albero. Ne esitono fondamentalmente di tre tipi:b tree: sono provvisti di una catena che collega i nodi foglia in base all'ordine imposto dalla chiave;

b+ tree: sono sprovvisti di tale catena. Ottimi per le ricerche su intervalli di valori. Molto utilizzati nei DBMS;

r tree: sono usati per indicizzare spazi multi-dimensionali, ad esempio le coordinate geometriche. Suddividono i dati in rettangoli innestati gerarchicamente e sovrapponibili che permettono di raggruppare elementi vicini spazialmente.

Esercizio sulla definizione di regole attive in un qualche linguaggio.Sintassi per la creazione dei trigger in SQL-3:

CREATE TRIGGER Nome {BEFORE | AFTER} Evento ON Relazione [REFERENCING { OLD [ROW] [AS] Variabile | NEW [ROW] [AS] Variabile | OLD TABLE [AS] Variabile | NEW TABLE [AS] Variabile}] [FOR EACH {ROW | STATEMENT}] [WHEN Condizione] Comandi SQL

Esempi:

CREATE TRIGGER LimitaAumenti BEFORE UPDATE OF Stipendio ON Impiegato FOR EACH ROW WHEN (New.Stipendio > Old.Stipendio * 1.2) SET New.Stipendio = Old.Stipendio * 1.2

CREATE TRIGGER Delete_Emp AFTER DELETE ON Employees REFERENCING OLD ROW AS Old FOR EACH ROW INSERT INTO Deleted_Emps VALUES (Old.Emp#);

Lo standard SQL-3 si fortemente ispirato a DB2; pertanto, la sintassi la medesima. Esempi:

CREATE TRIGGER FornitoreUnico BEFORE UPDATE OF Fornitore ON Parte REFERENCING NEW AS N FOR EACH ROW WHEN (N.Fornitore IS NOT NULL) SIGNAL SQLSTATE 70005 (Non si cambia il fornitore)

Sintassi per la creazione di trigger in Oracle:

CREATE [OR REPLACE] TRIGGER NomeTrigger TipoTrigger Evento {, Evento} ON NomeTabella [ [REFERENCING Referenza ] FOR EACH ROW [ WHEN ( PredicatoSQL )] ] Blocco PL/SQL

Esempi:

CREATE TRIGGER ControlloFido AFTER INSERT ON Ordini FOR EACH ROW DECLARE DaPagare NUMBER; BEGIN SELECT SUM(Ammontare) INTO DaPagare FROM Ordini WHERE CodiceCliente = :new.CodiceCliente; IF DaPagare >= 5000 THEN RAISE_APPLICATION_ERROR(-2061, fido superato); END IF; END;

Sintassi per la creazione di trigger in PostgreSQL:

CREATE TRIGGER Nome {BEFORE | AFTER } {Evento [OR ...]} ON NomeTabella [FOR [EACH] {ROW | STATEMENT}] EXECUTE PROCEDURE NumeFunzione()

Esempi:

CREATE FUNCTION ControllaCitta() RETURNS trigger AS $$ BEGIN IF new.Population