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.
vuoi
o PayPal
tutte le volte che vuoi
CANCELLAZIONE:
Possibilità di rimuovere delle tuple a seconda di una condizione imposta dalla clausola WHERE. Se
non fosse presente nessuna condizione, verrebbero cancellate tutte le righe di una determinata
tabella. Parola utilizzata => DELETE
DELETE FROM NomeTabella [ WHERE Condizione ]
Lezione 5 – SQL, Trigger
Trigger => Grilletto, regole attive. Ogni trigger fa riferimento ad una tabella.
Componente per la gestione di regole Evento-Condizione-Azione:
Evento: normalmente modifiche alla base dati (insert, delete, update)
– Condizione: determina se la regola debba essere eseguita
– Azione: esecuzione programma esterno, sequenza istruzioni SQL
–
Le basi dati attive hanno un comportamento reattivo (in contrasto con passivo): eseguono non solo
le transizioni utente , ma anche le regole
Granuralità e modalità:
Granuralità:
di ennupla (row-level): il trigger viene attivato per ogni ennupla coinvolta nell'operazione
– di operazione (statement-level): una sola attivazione per ogni istruzione SQL, con
– riferimento a tutte le ennuple coinvolte
Modalità:
immediata: il trigger è valutato immediatamente dopo (after) o prima (before) dell'evento
– che li ha attivati
differita: il trigger è valutato alla fine della transazione che comprende l'evento (dopo
– comando commit)
Sintassi Trigger:
create trigger NomeTrigger
Modo Evento on TabellaTarget
[referencing Referenza]
[for each Livello]
[when (PredicatoSQL)]
statementproceduraleSQL
end;
Esempio Pratico:
Impiegato (ID, Nome, Cognome, Ufficio, Stipendio, DipN)
Scrivere Trigger per l'imitare l'aumento di stipendio di un impiegato a non piu del 20%.
Principali Applicazioni del Trigger:
Specificare vincoli di integrità complessi (regole gestionai)
– Gestione dei dati derivati
– Mantenimento della consistenza delle viste materializzate rispetto alle modifiche nelle
– relazioni di base
Lezione 6 – SQL, Viste
Una vista in SQL è una tabella derivata a partire da altre tabelle (tabelle di base o altre viste).
Una vista è una tabella virtuale => non ci sono tuple istanza della vista memorizzate.
In generela le viste sono usate per:
Interrogazioni: la vista definisce una nuova tabella che non esiste direttamente nella BD e
– che verrà utilizzata frequentemente per delle interrogazioni.
Sicurezza: la vista definisce una tabelle contenente un sottoinsieme di dati , al fine di
– limitare la'accesso degli utenti a quei solo dati
Sintassi:
CREATE VIEW Nomevista [(ListaAttributi)] AS SelectSQL
[WITH [LOCAL | CASCADED] CHECK OPTION]
Esempi:
Se necessitiamo di usare spesso nomi, cognomi impiegati con loro sede di lavoro
CREATE VIEW Sedeimpiegati AS
SELECT Impiegato.Nome, Impiegato.Cognome,
Dipartimento.Indirizzo
FROM Impiegato, Dipartimento
WHERE Impiegato.DipN = Dipartimento.Nome
Determinare il dipartimento che spende di piu in stipendi
CREATE VIEW BudgetStipendi (Dip,Totalestipendi) AS
SELECT DipN, SUM(Stipendio)
FROM Impiegato
GROUP BY DipN
SELECT Dip
FROM BudgetStipendi
WHERE Totalestipendi =(SELECT MAX(Totalestipendi)
FROM BudgetStipendi)
Implementazioni delle interrogazioni:
Modifica al momento dell'interrogazione: L'interrogazione sulla vista viene modificata in
– un'interrogazione sulle tabelle di base su cui la vista è definita => poco efficiente su viste
complesse
Materializzazione di viste: Creazione di una tabella temporanea della vista quando viene
– eseguita per la prima volta l'interrogazione (Vista Materializzata) => mantenimento della
vista supponendo che ci saranno altre interrogazioni. Tecniche di aggiornamento
incrementale per tenere aggiornata la vista. Il DBMS potrà togliere una lista materializzata
dopo che non è piu usata per un certo periodo di tempo
Aggiornabilità delle viste:
In generale, i sistemi considerano Aggiornabili: viste contenenti una sola tabella con chiave
– primaria della tabella base e tutti gli attributi NOT NULL
In generale, i sistemi considerano NON Aggiornabili: Viste definite su piu tabelle con join, e
– viste che usano operatori aggregati e funzioni di raggruppamento
Check Point => si applica a viste aggiornabili, mantengono memoria della vista dopo agg. tabella
Cancellazione viste => Quando una vista non serve più , DROP VIEW NomeVista
Lezione 7 – Progettazione di BasiDati
Per progettare una BD si parte da un processo di astrazione e concettualizzazione della realtà,
dell'analisi del problema posto, l'identificazione di oggetti, le loro proprietà e i legami di interesse,
seguondo una METODOLOGIA DI PROGETTAZIONE.
Tipi di progettazione:
Progettazione concettuale: Rappresentare i requisiti informali sulla realtà d'interesse in
– termini di una descrizione concettuale formale e completa (schema concettuale),
indipendentemente dal DBMS utilizzato.
Progettazione Logica: Traduzione dello schema concettuale nel modello dei dati adottato da
– DBMS scelto per la gestione della BD. Dipende dal DBMS utilizzato.
Progettazione Fisica: Lo schema logico viene completato con la specifica dei parametri fisici
– di memorizzazione dei dati (organizzazione file e indici)
Meccanismi di astrazione => Processo mentale eseguito quando ci si concentra sulle proprietà
essenziali di un insieme di oggetti, ignorando le differenze. Diversi meccanismi di astrazione sono:
Classificazione
– Aggregazione
– Generalizzazione
–
Classificazione => Meccanismo utilizzato per definire un concetto come classi di oggetti del
mondo reale caratterizzati da proprietà comuni.
Aggregazione => Meccanismo utilizzato per definire una nuova classe a partire da un insieme di
classi che rappresentato le sue componenti
Generalizzazione => Meccanismo secondo cui si definisce una relazione di sottoinsieme tra gli
oggetti di due o piu classi. Ereditarietà delle proprietà della generalizzazione da parte di tutte le
specializzazioni
I tre meccanismi sono indipendenti tra loro, e forniscono un diverso meccanismo per la
concettualizzazione e strutturazione delle informazioni. Proprietà dei concetti stabiliti dai
meccanismi:
Modello Entità-Relazionale:
Entità => Rappresenta una classe di oggetti della realtà di interesse aventi proprietà comuni ed
esistenza "autonoma". Ogni tipo di entità all'interno di uno schema ha un nome che lo identifica
univocamente ed è rappresentato da un rettangolo.
Relazione => Rappresenta un legame logico tra due o piu tipi di entità , significativo per
l'applicazione di interesse. Un tipo di associazione R all'interno di uno schema ha un nome
identificativo univoco e viene rappresentato con un rombo.
Grado di associazione => Numero di entità che partecipano al tipo di associazione (es: binaria)
Associazione => Legame fra entità che include esattamente un'entità e per ciascun tipo di entità Ei
che partecipa ad R. Ciascun assciazione rappresenta il fatto che le entità partecipanti sono correlate
tra loro.
Possono esistere tipi di associazione diversi tra gli stessi tipi di entità, per esprimere legami
semantici differenti.
Esempio:
Associazione ricorsiva ad anello => Definite tra un tipo di entità e se stesso: lo stesso tipo di entità
partecipa al tipo di associazione con ruoli diversi
Lezione 8 – Progettazione Concettuale
Analisi dei requisiti => Completa individuazione dei problemi che il sistema da realizzare deve
risolvere e le caratteristiche che il sistema dovrà possedere.
Aspetti statici (dati)
– Aspetti dinamici (transazioni/operazioni sui dati)
–
I requisiti sono generalmente descrizioni in linguaggio naturale, quindi sono informali e possono
risultare incompleti o presentare inconsistente. L'analisi ha quindi lo scopo di chiarire e organizzare
i requisiti raccolti (non sempre facile perchè attività legata all'applicazione da realizzare)
Regole generali:
Scelta del corretto livello di astrazione => Evitare termini troppo generici e/o specifici
– Standardizzazione della struttura delle frasi
– Evitare frasi contorte => Definizioni semplici e chiare dei vari concetti
– Individuare sinonimi/omonimi e unificare i termini
– Sinonimi: termini diversi ma con significato uguale, unificazione
Omonimi: termini uguali, ma significato diverso , diversificazione
Costruire un glossario dei termini
–
Esempi Omonia e Sinonimia:
Esempio di Glossario dei termini:
La produzione di uno schema segue un approccio incrementale a partire dai requisiti. Si possono
usare diverse strategie di implementazione:
Top Down
– Bottom up
– Inside out
– Mixed
–
Strategia TopDown:
Si parte da uno schema contenente astrazioni di alto livello e si procede con successivi raffinamenti
top-down. I raffinamenti aumentano man mano che si procede con deattagli aggiuntivi.
Strategia BottomUp:
Si parte da uno schema contenente astrazioni di base che descrivono frammenti elementari di realtà
e si procede aggregando tali astrazioni o aggiungendone di nuove
Strategia InsideOut:
Caso particolare della strategia bottom-up. Si individuano inizialmente alcuni concetti di maggiore
rilevanza e da questi si procede rappresentando via via i concetti vicini a quelli iniziali
(procedimento a "macchia d olio")
Strategia Mista:
Combinazione di strategia top-down e bottom-up. Definizione di uno schema contenente a livello
astratto i concetti principali dell'applicazione. Su ciascuna parte dello schema si puo procedere
applicando entrambe le strategie => Adatta a progetti di una certa complessità.
Qualità di uno schema concettuale:
Leggibilità: Uno schema concettuale è leggibile quando presenta i requisiti in maniera
– facilmente comprensibile (scelta nomi significativi, minimizzazione intersezioni)
Minimalità: Uno schema concettuale è minimale quando non presenta ridondanze, ovvero le
– specifiche sui dati sono rappresentate una volta sola nello schema (si puo tollerare la
ridondanza se documentata)
Completezza: Uno schema concettuale è completo quando descrive tutti i requisiti di
– interesse e le operazioni possono essere eseguite a partire dai concetti contenuti nello
schema
Correttezza: Uno schema concettuale è corretto quando fa un uso proprio dei costrutti del
– modello concettuale utilizzato ( errori sintattici e semantici)
Lezione 9 – Progettazione Logica
Dallo schema Concettuale (Entity Relationship) si passa allo schema Logico => Specific