CORSO ITP Informatica Gestionale Modulo – Le basi di dati Romeo Pruno University of Camerino [email protected] https://unicam.it/~romeo.pruno http://blogs.devleap.com/romeopruno Introduzione Per comprendere appieno cos'è un Data Base e quali sono i vantaggi legati al suo impiego, soprattutto nel settore gestionale, è necessario definire in modo esatto e preciso cosa si intende per: - Data Base; - Data Base Management System (DBMS); Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 2 Introduzione Un Data base può essere definito come un insieme di dati strettamente correlati, memorizzati su un supporto di memoria di massa, costituenti un tutt'uno, che possono essere manipolati, da più programmi applicativi; oppure possiamo dire che è un sistema di gestione di dati integrati, ricompilati e immagazzinati secondo precisi criteri, necessari all'attività che si deve svolgere. I programmi di gestione di Data Base realizzano una serie di operazioni che consentono l'accesso a dati immagazzinati in un PC e che ne permettono altresì una certa manipolazione. Tali operazioni consistono fondamentalmente in: -immissione e cancellazione di dati; -modifica di dati già introdotti; -ricerca di dati attraverso criteri definiti dall'utente; -ordinamento e classificazione dei dati singolarmente o secondo vari criteri; -stampa di rapporti o relazioni. Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 3 Introduzione Un Data base Management System (DBMS) è un sistema software per la gestione di basi dati; esso si occupa dell'aggiornamento, della manutenzione e della consultazione di un insieme di registrazioni contenute in un supporto di memoria di massa. Il DBMS, pertanto, è un insieme di programmi, che sono rivolti alla gestione di dati memorizzati in archivi. Ovviamente, tra Data Base e DBMS esiste una forte interazione, per cui spesso si tende a considerarli due parti distinte di un unico oggetto: il DBMS rappresenta la parte attiva, il Data Base quella passiva, sulla quale il DBMS opera. Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 4 Introduzione Tipi di Database -Gestori di file: Ogni base di dati è rappresentata da un file, che si divide in record: il record rappresenta uno degli elementi che si desidera registrare, ed è composto a sua volta da campi, cioè informazioni elementari che caratterizzano ogni entità da classificare. - Data Base relazionali: Si presentano in forma tabellare in cui le righe rappresentano i record e le colonne rappresentano i campi. Le operazioni realizzate con questo tipo di Data Base riguardano le tabelle e non i record individuali, come nel caso dei gestori di file. Oggi i principali Data Base in circolazione sono di tipo relazionale, ciò perché praticamente tutti gli insiemi di dati che corrispondono a entità complesse organizzate come imprese, scuole, associazioni varie,… implicano collegamenti tra i vari dati ad esempio: ai fornitori sono collegate le merci, agli alunni i corsi, e così via. Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 5 Introduzione Il campo che permette l'identificazione di ogni record è detto "chiave primaria" e deve essere comune alle tabelle che si intende correlare. Si possono stabilire tre tipi di relazione: - uno a uno: si tratta di relazioni tra elementi che hanno una corrispondenza univoca: ad un elemento di una tabella ne corrisponde uno soltanto in un'altra e viceversa; - uno a molti: sono relazioni che si stabiliscono tra un record di una tabella e più records di un'altra tabella, ma non il contrario; - molti a molti: un record può essere relazionato a più di un record di un'altra tabella e viceversa; questo tipo di relazione è normalmente definita tramite una terza tabella che costituisce un "ponte" tra le due da relazionare. Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 6 Progettazione – caso pratico Si vuole realizzare una base dati per l’Università degli Studi di Camerino, di cui vogliamo rappresentare i dati degli studenti, gli insegnanti, le materie di insegnamento e gli esami effettuati per ogni alunno. Per gli studenti, identificati da un codice, si vuole memorizzare il cognome, nome, l’indirizzo ed il numero di telefono. Anche le prove effettuate devono poter essere riconducibili allo studente che le ha superate. Per i docenti si deve tener conto delle loro generalità come ad esempio la matricola, cognome, nome, e-Mail. I dati delle materie devono essere prelevati da un’archivio degli insegnamenti attivati presso l’ Università riportando il titolare della cattedra. Si vuole determinare il libretto universitario di ogni alunno e le attività di insegnamento per ogni docente. …….togliamo le ambiguità Termine Descrizione Sinonimi Collegamenti Studente Partecipa ai corsi Alunno Esame Docente Titolare dei corsi Insegnante Corso Corso Offerta formativa Insegnamento Docente, Esame Esame Prova finale Prova Corso, Studente Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 7 Modalità ER Costrutti Rappresentazione Grafica Entità Relazioni Attributo Semplice Identificatore Interno (chiave) (1,1) (1,n) (n,n) Camerino, 26/11/2005 Cardinalità Dott. Romeo Pruno – [email protected] 8 Modalità ER Date le seguenti entità, realizziamo un semplice modello ER Docente PK,I1 Corso IdDocente PK,I1 IdCorso Cognome Nome E-Mail FK1,I2 IdDocente Titolo Materia Studente PK,I1 IdStudente Esame PK,FK1,I1 PK,FK2,I2 Cognome Nome Indirizzo Telefono IdCorso IdStudente Data Votazione Ricordiamo che: • Le entità rappresentano le “tabelle” • Le relazioni rappresentano azioni che coinvolgono più entità • Gli attributi semplici sono rappresentati dai campi delle tabelle • Gli identificatori rappresentano le chiavi delle tabelle Non esiste un perfetto modello ER, ognuno può avere una soluzione differente dall’altro a seconda di come si interpreta il problema dato……. Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 9 Modalità ER IdCorso IdStudente STUDENTE Cognome Nome Indirizzo Telefono Sostiene CORSO Richiede Insegna IdDocente IdCorso IdStudente ESAME Camerino, 26/11/2005 IdDocente Titolo Materia DOCENTE Data Votazione Dott. Romeo Pruno – [email protected] Cognome Nome E-Mail 10 Tabelle Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 11 Demo Realizzazione del DB utilizzando Access Step1 Creazione DB c:\itp.mdb Step2 Creazione tabelle CORSO, DOCENTE, ESAME , STUDENTE Step3 Creazione delle relazioni tra le tabelle Step4 Popolamento tabelle Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 12 SQL Structured Query Language Definiamo i domini di applicazione del linguaggio: Interrogazioni • Interrogazioni semplici • Interrogazioni con raggruppamento • Interrogazioni di tipo insiemistico • Interrogazioni nidificate Manipolazioni • Inserimento • Modifica • Cancellazione Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 13 INTERROGAZIONI \ semplici Costruzione SELECT [ListaAttributi] FROM [ListaTabelle] WHERE [Condizione] Esempio SELECT Studente.Cognome,Studente.Nome FROM Studente WHERE Studente.Cognome = “Severini” Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 14 INTERROGAZIONI \ raggruppamento Costruzione SELECT [ListaAttributi] FROM [ListaTabelle] GROUP BY [Campo] Esempio SELECT Data, Max(Esame.Votazione) AS MaxVotazione FROM Esame GROUP BY Esame.Data Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 15 INTERROGAZIONI \ tipo insiemistico Costruzione SELECT [ListaAttributi] FROM [Tabella] UNION – INTERSECT – MINUS SELECT [ListaAttributi] FROM [Tabella] Esempio select Cognome from Studente union select Nome from Studente Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 16 INTERROGAZIONI \ nidificate Costruzione SELECT [ListaAttributi] FROM [Tabella] WHERE [condizione] = SELECT [ListaAttributi] FROM [Tabella] WHERE [condizione] Esempio SELECT Votazione FROM Esame WHERE IdStudente = (SELECT IdStudente FROM Studente WHERE nome = "Sandro") Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 17 MANIPOLAZIONI \ inserimento Costruzione INSERT INTO NomeTabella [ListaAttributi] VALUES [ListaValori] Esempio INSERT INTO esame(idCorso,IdStudente,Data,Votazione) VALUES('14','4','08/05/2004','29') Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 18 MANIPOLAZIONI \ cancellazione Costruzione DELETE FROM NomeTabella WHERE [Condizioni] Esempio DELETE FROM esame WHERE Votazione = '29' Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 19 Demo#2 Scriviamo noi un pò di Queries Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 20 Question and Answer Camerino, 26/11/2005 Dott. Romeo Pruno – [email protected] 21