Università degli studi di Catania Facoltà di Medicina Tecnici di Radiologia Medica per immagini e Radioterapia Elaborazione dati informatici Prof Ing Gaetano La Rosa
Elaborazione dati informatici Prof Ing Gaetano La Rosa email: info@glrstudio.com Parte terza Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Clausola INTO Visualizzare tutti i dati per il personale con qualifica dirigente dall’archivio personale SELECT * FROM Personale WHERE Funzione=“dirigente” Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Clausola INTO La precedente SELECT permette di estrarre dei dati dall’archivio personale senza che questi vengano memorizzati. Se desideriamo creare una nuova tabella contenente i dati estrapolati usiamo la clausola INTO con il nome della tabella che dvrà contenere i nuovi dati: SELECT * INTO manager FROM Personale WHERE Funzione=“dirigente” Prof Ing Gaetano La Rosa
Comandi per la sicurezza Nel caso di DB con accessi multipli alle tabelle l’amministratore può specificare per i vari utenti le singole autorizzazioni: GRANT permesso concessione di permesso REVOKE permesso revoca permesso ON e TO si utilizzano per specificare rispettivamente su quale archivio si opera e a quale utente (utenti) si desidera attribuire o revocare il permesso Prof Ing Gaetano La Rosa
Comandi per la sicurezza Permessi: ALTER: aggiunta, rimozione colonne e tipi di dati DELETE: rimozione righe tabelle INDEX: creazione indici INSERT: inserimento nuove righe Prof Ing Gaetano La Rosa
Comandi per la sicurezza Permessi: SELECT: ricerca nelle tabelle SELECT (campo1, campo2): ricerca ammessa ai soli campi indicati UPDATE: modifica valori contenuti nelle tabelle UPDATE (campo1, campo2): modifica dati tabelle limitati ai soli campi indicati ALL: tutti i precedenti permessi Prof Ing Gaetano La Rosa
Comandi per la sicurezza Concedere il diritto di modifica agli utenti ut1 e ut2 GRANT UPDATE ON Personale TO ut1, ut2 Prof Ing Gaetano La Rosa
Comandi per la sicurezza Rimuovere il diritto di creazione indici agli utenti ut3 e ut4 REVOKE INDEX ON Personale TO ut3, ut4 Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Viste Mediante l’utilizzo di viste è possibile consentire ad un utente una visione parziale del DB Le viste rappresentano delle finestre dinamiche sul DB: ogni modifica ai dati sulla tabella primaria è disponibile attraverso la vista, analogamente ogni modifica effettuata sui dati della vista si riflette sui dati della tabella primaria. Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Viste Le viste vengono realizzate con SELECT all’interno di CREATE VIEW Creare una vista di nome imp contenente i solo dati degli impiegati: CREATE VIEW imp AS SELECT * FROM personale WHERE Funzione=“impiegato”; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Viste L’amministratore con GRANT può concedere il diritto di accesso alla vista creata GRANT SELECT ON imp TO user Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Viste Per rimuovere una vista si utilizza DROP VIEW DROP VIEW imp; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Integrità dei dati LOCK TABLE: limitare accesso ai dati UNLOCK TABLE: ripristino accesso ai dati RECOVER TABLE: recupero di una tabella da una tabella di sicurezza in caso di interruzione anomala del processo corrente Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Integrità dei dati CHECK TABLE: controllo corrispondenza di una tabella con i suoi indici REPAIR TABLE: ricostruzione indici tabella qualora il CHECK TABLE non sia andato a buon fine. Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Gestione transazioni Una transazione è una serie di operazioni eseguite sul DB che devono essere eseguite in modo completo affinchè l’elaborazione sia considerata corretta. Per avviare una transazione: BEGIN TRANSACTION Il comando permette di effettuare le modifiche richieste bloccandone la modifica ad altri utenti Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Gestione transazioni Al termine delle modifiche, se le operazioni hanno prodotto i risultati desiderati si termina la transazione con COMMIT, in caso contrario con ROLLBACK si ripristina il DB allo stato precedente l’inizio del BEGIN TRANSACTION. Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Gestione transazioni Esempio transazione per accettazione ordini clienti Le modifiche sul DB modificheranno i dati delle tabelle con operazioni di scarico del magazzino. Se però dopo le operazioni richieste le quantità risultano negative non sarà possibile soddisfare gli ordini e pertanto bisognerà annullare le richieste inserite (ROLLBACK) . Se tutto è ok con COMMIT confermiamo il buon esito della transazione. Prof Ing Gaetano La Rosa
Esempio attività sportiva Organizzare la base dati per le attività sportive studentesche. Si consideri che Gli studenti possono partecipare a una o più manifestazioni Per ogni attività sportiva le scuole individuano un professore con funzione Ogni professore segue una sola attività sportiva Ogni attività sportiva è seguita da più professori di scuole diverse Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Definire il modello del DB e rappresentare in SQL le seguenti interrogazioni: Numero di studenti partecipanti ad una determinata attività sportiva Elenco anagrafico degli allenatori di una attività sportiva Elenco delle scuole (denominazione) con il numero di studenti che partecipano Elenco delle scuole (denomin, telef, indirizzo) che hanno almeno uno studente che partecipa ad una determinata attività sportiva Elenco allenatori (cognome e nome) e scuole (denominazione) di appartenenza in ordine alfabetico Numero degli studenti di una determinata scuola che partecipano a ciascuna delle manifestazioni sportive. Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa RISOLUZIONE Definizione entità – relazioni Modello E/R Prof Ing Gaetano La Rosa
Modello E/R – entità- relazioni iscrizione N 1 studente istituto 1 N Partecipazione Presta servizio N N allenamento 1 N manifestazione professore Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa RISOLUZIONE Definizione attributi (con formato e dimensione) Prof Ing Gaetano La Rosa
Modello E/R - attributi Denominazione, Indirizzo, telefono cogn, nome, nascita, classe Frequenza N 1 studente istituto CodIst 1 N CodStud Partecipazione Presta servizio CodMani N CodProf N allenamento 1 N manifestazione professore Cogn, nome, Titolo Descr, luogo, datainizio Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa RISOLUZIONE Eliminazione relazioni N-N con aggiunta nuove entità Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R – elim N-N Denominazione, Indirizzo, telefono cogn, nome, nascita, classe Frequenza N 1 studente istituto CodIst 1 1 CodStud Data_iscr N Presta servizio Iscrizione_gara N CodMani CodProf N 1 allenamento 1 N manifestazione professore Cogn, nome, Titolo Descr, luogo, datainizio Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa RISOLUZIONE Eliminazione relazioni 1-N Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R – elim 1-N Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Prof Ing Gaetano La Rosa RISOLUZIONE Interrogazioni SQL Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Numero di studenti partecipanti ad una determinata attività sportiva Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Numero di studenti partecipanti ad una determinata attività sportiva SELECT COUNT (*) FROM manifestazione, iscrizione_gara WHERE manifestazione.codMani=iscrizione_gara.CodMani AND Descr=[inserire attività sportiva] Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Elenco anagrafico degli allenatori di una attività sportiva Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Elenco anagrafico degli allenatori di una attività sportiva SELECT cogn, nome FROM professore, manifestazione WHERE professore.CodMani= manifestazione.CodMani AND Descr=[indicare attività sportiva] ORDER BY cogn, nome; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Elenco delle scuole (denominazione) con il numero di studenti che partecipano Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Prof Ing Gaetano La Rosa Elenco delle scuole (denominazione) con il numero di studenti che partecipano SELECT denominazione, COUNT(DISTINCT CodStud) FROM istituto, studente WHERE istituto.CodIst=studente.CodIst GROUP BY Denominazione; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Elenco delle scuole (denomin, telef, indirizzo) che hanno almeno uno studente che partecipa ad una determinata attività sportiva Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Prof Ing Gaetano La Rosa Elenco delle scuole (denomin, telef, indirizzo) che hanno almeno uno studente che partecipa ad una determinata attività sportiva SELECT denominazione, telef, indirizzo FROM istituto, manifestazione, studente, iscrizione_gara WHERE Manifestazione.CodMani= Iscrizione_gara.CodMani AND Studente.CodStud=iscrizione_gara.Codstud AND Studente.CodIst=Istituto.CodIst AND Descr=[inserire attività sportiva] Group BY Denominazione, telef, indirizzo HAVING COUNT (*) >0; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Elenco allenatori (cognome e nome) e scuole (denominazione) di appartenenza in ordine alfabetico Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Prof Ing Gaetano La Rosa Elenco allenatori (cognome e nome) e scuole (denominazione) di appartenenza in ordine alfabetico SELECT cogn, nome, denominazione FROM professore, istituto WHERE professore.CodIst=istituto.CodIst ORDER BY cogn, nome; Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Numero degli studenti di una determinata scuola che partecipano a ciascuna delle manifestazioni sportive. Prof Ing Gaetano La Rosa
Prof Ing Gaetano La Rosa Modello E/R Denominazione, Indirizzo, telefono cogn, nome, nascita, classe CodStud studente istituto CodIst CodIst Data_iscr CodStud Iscrizione_gara CodMani CodMani CodMani CodProf manifestazione professore Cogn, nome Descr, luogo, datainizio Prof Ing Gaetano La Rosa CodIst
Prof Ing Gaetano La Rosa Numero degli studenti di una determinata scuola che partecipano a ciascuna delle manifestazioni sportive. SELECT Descr, COUNT(*) FROM manifestazione, istituto, iscrizione_gara, studente WHERE manifestazione.Codmani=iscrizione_gara.Codmani AND studente.CodIst=istituto.CodIst AND studente.CodStud=iscrizione_gara.CodStud AND Denominazione=[inserire istituto] GROUP BY Descr; Prof Ing Gaetano La Rosa