La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di Dati Realizzato da Roberto Savino. Realizzato da Roberto Savino 2 Sommario Aspetti teorici della teoria dei database relazionali Aspetti progettuali.

Presentazioni simili


Presentazione sul tema: "Basi di Dati Realizzato da Roberto Savino. Realizzato da Roberto Savino 2 Sommario Aspetti teorici della teoria dei database relazionali Aspetti progettuali."— Transcript della presentazione:

1 Basi di Dati Realizzato da Roberto Savino

2 Realizzato da Roberto Savino 2 Sommario Aspetti teorici della teoria dei database relazionali Aspetti progettuali di un database relazionale Aspetti applicativi: Microsoft Access

3 Aspetti teorici della teoria dei database relazionali

4 Realizzato da Roberto Savino 4 Database: Prima Definizione Un Database è un archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Esempio: Rubrica Telefonica NomeCognomeTelefonoIndirizzo MarioRossi0692873Via Conteverde,68 PaoloBianchi0927362Corso Italia,15 CarloVerdi0283472Piazza Indipendenza,4 Interlocutori

5 Realizzato da Roberto Savino 5 Tabella I dati nel database sono strutturati ossia sono organizzati in tabelle. La tabella è costituita da  colonne o campi  righe o record NomeCognomeTelefonoIndirizzo MarioRossi0692873Via Conteverde,68 PaoloBianchi0927362Corso Italia,15 CarloVerdi0283472Piazza Indipendenza,4 record campo Interlocutori

6 Realizzato da Roberto Savino 6 Campi Ogni campo ha associato:  Un nome (etichetta)  Un tipo di dato (numerico,testo,…)  Un insieme di attributi dipendenti dal tipo di dato scelto (dimensione, formato,…) NomeCognomeTelefonoIndirizzo MarioRossi0692873Via Conteverde,68 PaoloBianchi0927362Corso Italia,15 CarloVerdi0283472Piazza Indipendenza,4 Interlocutori

7 Realizzato da Roberto Savino 7 Chiave primaria Al fine della ricerca è opportuno per ogni record poter essere distinto da qualsiasi altro. E’ necessario un valore (o un insieme di valori) che identifichi il record univocamente. Tale valore prende il nome di chiave di ricerca primaria Una chiave può essere costituita da un campo o dalla combinazione di più campi

8 Realizzato da Roberto Savino 8 Chiave primaria: Esempio Il campo Nome non va bene come chiave primaria NomeCognomeTelefonoIndirizzo MarioRossi0692873Via Conteverde,68 PaoloBianchi0927362Corso Italia,15 MarioGialli3434234Piazza della Repubblica, 23 Interlocutori

9 Realizzato da Roberto Savino 9 Chiave Primaria: Esempio (continua) I campi Nome e Cognome presi insieme non vanno bene come chiave primaria se esistono omonimi Il campo Codice Fiscale è sufficiente, ma se non fosse presente nella tabella ?

10 Realizzato da Roberto Savino 10 Chiave Primaria: Contatore Posso definire un campo aggiuntivo di tipo contatore, distinto per ogni record della tabella #InterlocutoreNomeCognomeTelefono 1MarioRossi0692873 2PaoloBianchi0927362 3MarioGialli3434234 Interlocutori

11 Realizzato da Roberto Savino 11 Indice Un indice consente il recupero immediato dei dati mediante la ricerca random (Es. CD) opposta a quella sequenziale (Es. TAPE). La chiave primaria deve essere associata ad un indice Possiamo però definire indici anche su campi diversi dalla chiave primaria ma con accesso frequente. La definizione di indici complica la struttura interna del database

12 Realizzato da Roberto Savino 12 Database Relazionale Un database è costituito da tabelle che sono correlate mediante relazioni tra campi. Le relazioni consentono la costruzione di insiemi di dati (record logici) aggregando campi appartenenti a tabelle diverse. #Interlocutore Nome Cognome Telefono Indirizzo Nome Azienda Telefono Azienda Indirizzo Azienda Interlocutori

13 Realizzato da Roberto Savino 13 Esempio (continua) NomeCogno me Nome Aziend a Indirizzo Azienda Telefono Azienda MarioRossiAtacVia Milano,2308543572 PaoloBianch i FSPiazza Belli,506324613 MarioGialliFiatViale XXI Aprile,397 02473465 Antoni o VerdiAtacVia Milano,2308543572 Interlocutori DATI RIDONDANTI (RIPETITIVI)

14 Realizzato da Roberto Savino 14 Dati Ridondanti Sono un onere in termini di spazio occupato Sono pericolosi in fase di aggiornamento del database:  che succede se modifico l’indirizzo dell’azienda? NomeCognomeNome Azienda Indirizzo Azienda Telefono Azienda MarioRossiAtacVia Milano,2308543572 PaoloBianchiFSPiazza Belli,506324613 MarioGialliFiatViale XXI Aprile,397 02473465 Antoni o VerdiAtacVia Milano,2308543572

15 Realizzato da Roberto Savino 15 Esempio (continua) #Interlocutore Nome Cognome Telefono Indirizzo Azienda Indirizzo Numero Di Telefono Interlocutori Aziende relazione Tabella Primaria Tabella Correlata

16 Realizzato da Roberto Savino 16 Esempio (continua) NomeCognomeAzienda MarioRossiAtac PaoloBianchiFS MarioGialliFiat AntonioVerdiAtac AziendaIndirizzoTelefono AtacVia Milano,2308543572 FSPiazza Belli,506324613 FiatViale XXI Aprile,39702473465 Interlocutori Aziende

17 Realizzato da Roberto Savino 17 Relazione Uno ad Uno Ad un record di una prima tabella corrisponde, al massimo un record di una seconda tabella #Direttore Nome Cognome Telefono Indirizzo Direttore #Dipartimento Nome Telefono Indirizzo Dipartimento (1,1) dirige

18 Realizzato da Roberto Savino 18 Relazione Uno a Molti Ad un record di una prima tabella corrispondono più record di una seconda tabella (non vale il viceversa) #Giocatore Nome Cognome Data Nascita Squadra Giocatore Nome Città Colori Sociali Squadra (1,n) gioca

19 Realizzato da Roberto Savino 19 Relazione Molti a Molti Ad un record di una prima tabella corrispondono più record di una seconda tabella (vale il viceversa) #Studente Nome Cognome Data Nascita Studente #Corso Nome Ore Lezione Corsi (n,m) ? ? Quali campi associo ? frequenta

20 Realizzato da Roberto Savino 20 Esempio: Scomposizione della relazione Molti a Molti #Studente Nome Cognome Data Nascita Studente #Corso #Studente Corsi Frequentati (1,n) #Corso Nome Ore Lezione Corsi (1,n) Tabella intermedia

21 Realizzato da Roberto Savino 21 Chiave Esterna Se la relazione è tra una chiave primaria di una tabella secondaria e un campo di una tabella primaria, tale campo prende il nome di chiave esterna #Giocatore Nome Cognome Data Nascita Squadra Giocatore Nome Città Colori Sociali Squadra (1,n) gioca

22 Realizzato da Roberto Savino 22 Integrità Referenziale Quando si definiscono relazioni è importante che sia mantenuta l’integrità. Esempio:  Non vogliamo studenti che frequentano corsi non registrati o corsi frequentati da studenti non registrati.  Non vogliamo eliminare corsi frequentati da studenti Per attivare questi controlli dobbiamo indicare al sistema di mantenere l’integrità referenziale L’integrità referenziale è importante ma pone dei vincoli che possono compromettere la gestione del sistema

23 Aspetti Progettuali di un Database Relazionale Realizzato da Roberto Savino

24 24 Progettazione di un Database Una corretta progettazione consente di realizzare un database efficace (tutti i dati opportuni sono rappresentati) ed efficiente (in termini di spazio- tempo) Una cattiva progettazione può portare a database ridondanti ed altamente inefficienti Dunque “Pensare prima”, ovvero progettare il database.

25 Realizzato da Roberto Savino 25 Fasi della Progettazione Definizione degli obiettivi del database (quale è lo scopo?) Definizione delle tabelle del database (quali sono le entità principali ?) Definizione dei campi delle tabelle e degli attributi dei campi (quali sono i dati che caratterizzano tali entità?) Definizione delle relazioni tra tabelle (in che modo sono correlate tali entità) Verifica della struttura ed eventuali correzioni

26 Realizzato da Roberto Savino 26 Esempio 1: Obiettivi Supponiamo di dover realizzare un database relativo agli ordini di prodotti di una piccola impresa. Il database deve contenere i dati dei clienti; un cliente può effettuare 1 o più ordini (in cui ci sono 1 o più prodotti)

27 Realizzato da Roberto Savino 27 Esempio 1: Definizione delle tabelle Clienti Ordini Prodotti Dettaglio Ordine

28 Realizzato da Roberto Savino 28 Esempio 1: Definizione dei campi delle tabelle #Ordine #Cliente Clienti Ordini Prodotti #Cliente Nome Cognome Indirizzo Telefono #Ordine #Prodotto Dettaglio Ordine #Prodotto Nome Tipologia Foto Prezzo

29 Realizzato da Roberto Savino 29 Esempio 1: Definizione degli attributi dei campi #Ordine: Contatore #Cliente: Numerico Clienti Ordini Prodotti #Cliente: Contatore Nome: Testo Cognome: Testo Indirizzo: Testo Telefono: Numerico #DettaglioOrdine: Contatore #Prodotto: Numerico Dettaglio Ordine #Prodotto: Contatore Nome: Testo Tipologia: Testo Foto: Oggetto OLE Prezzo: Valuta

30 Realizzato da Roberto Savino 30 Esempio 1: Definizione delle relazioni #Ordine: Contatore #Cliente: Numerico Ordini Prodotti #Cliente: Contatore Nome: Testo Cognome: Testo Indirizzo: Testo Telefono: Numerico #Dettaglio Ordine: Contatore #Prodotto: Numerico Quantità: Numerico Dettaglio Ordine #Prodotto: Contatore Nome: Testo Tipologia: Testo Foto: Oggetto OLE Prezzo: Valuta (1,n) Clienti

31 Realizzato da Roberto Savino 31 Esempio 1 #ClienteNomeCognome 1MarioRossi 2PaoloBianchi 3MarioGialli 4AntonioVerdi Clienti #Ordine#Cliente 10011 10021 10032 10044 Ordini #Dettaglio Ordine#ProdottoQuantità 100199003212 10029900653 100299017255 100299001223 Dettaglio Ordine

32 Realizzato da Roberto Savino 32 Esempio 1 #Dettaglio Ordine#ProdottoQuantità 100199003212 10029900653 100299017255 100299001223 Dettaglio Ordine #ProdottoNomeFotoPrezzo 990032Computer500 990033FD1 ………… 990065Ass50 Prodotto

33 Realizzato da Roberto Savino 33 Esempio 2: Obiettivi Supponiamo di dover realizzare un database relativo agli studenti di un’ università. Gli studenti sostengono esami e seguono corsi. I corsi sono tenuti da docenti.

34 Realizzato da Roberto Savino 34 Esempio 2: Definizione delle tabelle Studenti Corsi Esami Docenti

35 Realizzato da Roberto Savino 35 Esempio 2: Definizione dei campi delle tabelle #Corso Nome Docente Studenti Corsi Esami #Studente Nome Cognome Indirizzo Telefono Docenti #Esame Corso Data Voto #Docente Nome Cognome Indirizzo Telefono

36 Realizzato da Roberto Savino 36 Esempio 2: Definizione degli attributi dei campi #Corso: Contatore Nome: Testo Docente: Numerico Studenti Corsi Esami #Studente: Contatore Nome: Testo Cognome: Testo Indirizzo: Testo Telefono: Numerico Docenti #Esame: Contatore Corso: Testo Data: Data/Ora Voto: Numerico #Docente: Contatore Nome: Testo Cognome: Testo Indirizzo: Testo Telefono: Numerico

37 Realizzato da Roberto Savino 37 Esempio 2: Definizione delle relazioni #Corso Nome Docente Studenti Corsi Esami #Studente Nome Cognome Indirizzo Telefono Docenti #Esame Studente Corso Data Voto #Docente Nome Cognome Indirizzo Telefono (1,n) (n,m) (1,n)

38 Realizzato da Roberto Savino 38 Esempio 2: Definizione delle relazioni #Corso Nome Docente Studenti Corsi Esami #Studente Nome Cognome Indirizzo Telefono Docenti #Esame Studente Corso Data Voto #Docente Nome Cognome Indirizzo Telefono (1,n) #Corso #Studente (1,n) Studenti Frequentanti

39 Realizzato da Roberto Savino 39 Esempio 1 #StudenteNomeCognome 1MarioRossi 2PaoloBianchi 3MarioGialli 4AntonioVerdi Studenti #Corso#Studente 10011 10021 10032 10044 Studenti Frequentanti #CorsoNomeDocente 1001Analisi I99001 1002Fisica I99002 1003Logica99003 1004Sistemi99004 Corsi

40 Realizzato da Roberto Savino 40 Esempio 1 #Esame#StudenteCorsoDataVoto 110001110012/2/200418 1100021100223/3/200424 110003210014/2/200430 1100044100412/4/200427 Esami #DocenteNomeCognome 99001Pitagora 99002AlbertEinstein 99003RenèDeScartes Docenti

41 Aspetti applicativi: Microsoft Access Realizzato da Roberto Savino

42 42 Tipi dati Testo: combinazione di caratteri e numeri fino a 255 caratteri Memo: combinazione di caratteri e numeri fino a 65535 caratteri Numerico: valori numerici tra cui (Byte, Intero, Intero lungo, Precisione singola, Precisione doppia, ID replica) Data/Ora: valori di data e ora dall’anno 100 all’anno 9999

43 Realizzato da Roberto Savino 43 Tipi di dati Valuta: valori di valuta con quattro cifre decimali Contatore: numero sequenziale incrementato automaticamente Si/No: valori booleani Oggetto OLE: foglio Excel, Immagine Collegamento Ipertestuale: percorso di un file o di una pagina Web

44 Realizzato da Roberto Savino 44 Attributi dei campi Dimensione: numero max di caratteri Formato: permette di memorizzare (output) i vari dati in modi differenti Maschera di input: vincola l’input ad assumere un determinato formato Etichetta: cambia il nome al campo nelle maschere di input ed output Valore predefinito: specifica un valore iniziale Valido se..: consente di definire degli intervalli di validità dei valori immessi

45 Realizzato da Roberto Savino 45 Attributi dei campi Messaggio di errore: viene mostrato nel caso il campo non sia valido Richiesto: vincola il campo ad essere obbligatorio Indicizzato: specifica se sul campo esiste un indice Consenti lunghezza zero: permette di avere delle stringhe nulle Compressione Unicode: consente la riduzione dello spazio per la memorizzazione

46 Realizzato da Roberto Savino 46 Garantire la correttezza dei dati immessi Creare maschere di input che impongono un formato sull’immissione dei dati Es. Data g/m/a oppure m/g/a ? Definire un formato di memorizzazione dei dati Creare delle regole di convalida che impongono una limitazione ai dati, introducendo dei vincoli

47 Realizzato da Roberto Savino 47 Regole di convalida Le regole di convalida sono espressioni che consentono un controllo preciso su ogni campo o su interi record  Per i campi (l’unico termine dell’exp sarà il campo stesso) Vanno inserite nell’attributo Valido se del campo Es. [Voto] >=18 And <=30  Per i record (il valore di un campo è messo in relazione con quello di altri); solo alla fine dell’inserimento dell’intero record si può verificare la correttezza Vanno inserite nell’attributo Valido se della finestra Proprietà tabella Es. [DataSpedizione] > [DataOrdine]

48 Realizzato da Roberto Savino 48 Integrità Referenziale Insieme di regole che garantiscono che le relazioni siano valide e che non vengano modificati o eliminati i record correlati Può essere applicata solo se:  Il campo corrispondente della tabella primaria è una chiave primaria o dispone di un indice univoco  I campi correlati hanno lo stesso tipo di dati (a meno di eccezioni)  Entrambe le tabelle appartengono allo stesso DB Access

49 Realizzato da Roberto Savino 49 Limiti dell’Integrità Referenziale Il campo chiave esterna non può contenere un valore che non è contenuto nella chiave primari (permesso solo NULL su record non in relazione) Non è possibile eliminare record nella tabella primaria se esistono record correlati in quella secondaria La chiave primaria non può essere modificata se il record ha record correlati

50 Realizzato da Roberto Savino 50 Maschere E’ un’interfaccia per l’inserimento, la visualizzazione, la modifica, la cancellazione dei record presenti nel DB Permette ad un utente di un DB di utilizzarlo senza necessariamente conoscere Access

51 Realizzato da Roberto Savino 51 Ricerca di dati Funzione Trova Applicare un Filtro:  Può essere applicato solo ad una tabella aperta  Opera solo su una tabella  Seleziona record e non campi Query

52 Realizzato da Roberto Savino 52 Filtri Filtro in base a selezione: pone come criterio la stringa della cella attiva o la parte selezionata di una stringa Filtro in base a maschera: consente di impostare più criteri contemporaneamente (,=,<>) su più campi

53 Query Realizzato da Roberto Savino

54 54 Query Interrogazione sull’archivio che estrae un insieme di dati che corrispondono a determinati criteri Le interrogazioni possono essere su più tabelle e avere più criteri Le interrogazioni avvengono mediante il linguaggio SQL (Structured Query Language) La generazione delle query in Access avviene mediante l’interfaccia grafica (con la tecnica QBE = Query By Example) senza la necessità di conoscere SQL  Access è quindi un interprete Il risultato della query è una tabella con i dati che soddisfano i criteri della query. Tale tabella può essere associata ad una maschera, ridotta con filtri, oggetto di una nuova query, stampata attraverso un report

55 Realizzato da Roberto Savino 55 Esempio (Facile) Vogliamo scrivere una query che dia il nome e cognome dell’interlocutore e il numero di telefono dell’azienda in cui lavora In altre parole vogliamo la seguente tabella come risultato della query: NomeCognomeTelefono Azienda MarioRossi08543572 PaoloBianchi06324613 MarioGialli02473465 AntonioVerdi08543572

56 Realizzato da Roberto Savino 56 Esempio: Rubrica Telefonica NomeCognomeAzienda MarioRossiAtac PaoloBianchiFS MarioGialliFiat AntonioVerdiAtac AziendaIndirizzoTelefono AtacVia Milano,2308543572 FSPiazza Belli,506324613 FiatViale XXI Aprile,39702473465 Interlocutori Aziende

57 Realizzato da Roberto Savino 57 Esempio (Continua) Vogliamo scrivere una query che dia il nome e cognome dell’interlocutore e il numero di telefono dell’azienda in cui lavora Individuiamo le tabelle della query  Interlocutori, Aziende Individuiamo i campi della query  nome(Interlocutori), cognome(Interlocutori), telefono (Aziende) Ci sono altri vincoli che impongono criteri?  No

58 Realizzato da Roberto Savino 58 Passaggi per la costruzione di Query Selezione della funzione (creazione guidata, struttura…) Scelta della definizione della struttura della query (ovvero delle tabelle su cui operare) Selezione dei campi su cui operare e i campi da inserire nella tabella risultato Definizione dei criteri Esecuzione della query

59 Realizzato da Roberto Savino 59 Operatori Logici: AND, OR Criterio1 And Criterio2  vengono restituiti tutti i record che soddisfano entrambi i criteri ES. Tutti gli studenti che frequentano il corso di Basi di dati e non hanno sostenuto l’esame di Word Criterio1 Or Criterio2  vengono restituiti tutti i record che soddisfano Criterio1 + tutti i record che soddisfano Criterio 2 + tutti i record che soddisfano entrambi ES. Tutti gli studenti che hanno sostenuto l’esame di Basi Dati oppure di Foglio Elettronico

60 Realizzato da Roberto Savino 60 Operatori Logici: NOT Not Criterio  Vengono selezionati tutti i record che non verificano il criterio ES. Tutti gli studenti che non hanno sostenuto l’esame di Reti

61 Realizzato da Roberto Savino 61 Operatori di Confronto Servono per mettere a confronto i campi con dei valori numerici,alfanumerici o date ES. Tutti gli studenti che hanno sostenuto un qualsiasi esame con un voto maggiore o uguale a 24.  Il vincolo è su Voto:>= 24 ES. Tutti gli studenti che hanno sostenuto l’esame di basi dati in data (uguale) 17/11/2004  Il vincolo è su Data:= #17/11/2004# ES. Tutti i prodotti con prezzo minore di 100 euro  Il vincolo è su Prezzo:< 100 Per i dati alfanumerici si considera l’ordinamento lessicografico  ES. “Anna” < “Antonio” < “Mario”  <> diverso

62 Realizzato da Roberto Savino 62 Operatori complessi Between 12 And 40 equivale >=12 And <=40 In (a1,…,an) equivale a1 Or a2 Or… …Or an date() restituisce la data di sistema Null e Not Null permettono di asserire se il campo non ha valore o ha un valore Nel caso di campi Si/No i criteri usabili sono Si,No,Vero,Falso Nei criteri dei campi testuali è possibile usare i caratteri jolly (? e *) ES. Tutti i voti degli studenti con iniziale del Cognome ‘D’ Vincolo è su Cognome:= “D*”

63 Realizzato da Roberto Savino 63 Caratteri jolly Servono per esprimere delle sequenze di caratteri non note.  ? Indica un carattere ES. Mari?Corrisponde a Maria, Marib,Maric,….,Mariz…  * Indica una sequenza di 0 o n caratteri ES. casa*Corrisponde a casa, casato, casale, (ma ci sono anche parole senza senso) casafsfhdh, casashdfhsu…  Posso usarli in combinazione ES. Ca*ll?Corrisponde a Castello, Castelli, Casello, Caselli, Casella….

64 Realizzato da Roberto Savino 64 Criteri di una Query Per imporre i criteri usa le righe Criteri o Oppure Le celle sono legate da vincolo di AND se si trovano sulla stessa riga, di OR se si trovano su righe diverse

65 Realizzato da Roberto Savino 65 Tabelle dinamiche Le tabelle generate dalle query sono dinamiche:  i dati in una tabella di output di una query sono modificabili e le modifiche vengono registrate nelle tabelle origine

66 Realizzato da Roberto Savino 66 Esempio (Un po’ meno facile) Vogliamo tutti i nomi e cognomi degli studenti che hanno sostenuto l’esame di basi dati nell’anno 2002 Individuiamo le tabelle della query: Studenti, Esame, Corso (serve perché qui è contenuto il nome del corso) Individuiamo i campi della query: nome (Studenti), cognome (Studenti), nome (Corso), data (Esame) Ci sono altri vincoli che impongono criteri?  nome (Corso) = “basi dati”  data (Esame)>=#1/1/2002# And <=#31/12/2002#

67 Realizzato da Roberto Savino 67 Esempio 2: Definizione delle relazioni #Corso Nome Docente Studenti Corsi Esami #Studente Nome Cognome Indirizzo Telefono Docenti #Esame Studente Corso Data Voto #Docente Nome Cognome Indirizzo Telefono (1,n) #Corso #Studente (1,n) Studenti Frequentanti

68 Report Realizzato da Roberto Savino

69 69 Report Una volta compilata una tabella o effettuata la query, il report permette di poter stampare il risultato in forma elegante ed efficace E’ possibile attivare altre opzioni di ricerca: i dati di un report possono essere raggruppati per valori di determinati campi. Questi raggruppamenti permettono di impostare funzioni di calcolo di ciascun gruppo, ottenendo nel report dei dati aggiuntivi La struttura di un report è divisa in fasce: contiene un’intestazione ed un piè di pagina per l’intero report, per ogni pagina e per ciascun raggruppamento impostato (migliorano il controllo su ogni elemento inserito in un report)

70 Realizzato da Roberto Savino 70 Esempio Report

71 Realizzato da Roberto Savino 71 Struttura di un report Intestazione pagina Piè di pagina pagina Intestazione report Intestazione pagina Piè di pagina pagina Corpo Intestazione pagina Piè di pagina pagina Intestazione pagina Piè di pagina paginaPiè di pagina report Intestastione pagina Piè di pagina pagina 123 4 … ultima

72 Realizzato a cura di Roberto Savino


Scaricare ppt "Basi di Dati Realizzato da Roberto Savino. Realizzato da Roberto Savino 2 Sommario Aspetti teorici della teoria dei database relazionali Aspetti progettuali."

Presentazioni simili


Annunci Google