ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi). Indicativamente si può supporre che tali informazioni descrivano in qualche modo le proprietà interessanti di un oggetto o entità. Si può pensare ad un archivio come ad una tabella le cui righe rappresentano le registrazioni e le cui colonne rappresentano sequenze di uno stesso attributo. Esempio, archivio studenti Campo Cognome Nome Data_di_nascita Luogo_di_nascita Età Indirizzo Città Telefono Record Rossi Mario 13/03/1993 Carmagnola (TO) 16 Via Roma, 17 Trofarello (TO) 011.954.32.65 Magno Alessandro 22/08/1994 Savigliano (CN) 15 Corso Atene, 36 Savigliano (CN) 0172.54.321 Bianco Luisa 30/11/1992 Torino 17 Via Girivotto, 56 Racconigi (CN) 0172.83.439 Verdi Giuseppe 15/05/1992 Savigliano (CN) 17 Via dei Sospiri, 90 Racconigi (CN) 0172.84.433 Rossi Mario 25/04/1994 Cuneo 15 Via Torino, 56 Carmagnola (TO) 011.943.54.71 Rossi Mario 13/03/1993 Carmagnola (TO) 16 Via Alba, 20 Racconigi (CN) 0172.85.765 Oss: come si può notare i dati contenuti in un archivio possono essere i più svariati, dal Cognome all Età al Telefono; al momento della creazione della tabella bisognerà quindi indicare oltre al nome del campo anche il tipo di dato che conterrà. Es. il campo Cognome sarà di tipo Testo Nome Testo Data_di_nascita Data Età Numerico Telefono Testo (perché sono inclusi. e / ) Domanda, i campi Luogo_di_nascita, Indirizzo e Città di che tipo saranno? Database (o Base di Dati): è l insieme di uno o più archivi che possono essere anche posti in relazione fra loro 1
Problema: si ipotizzi ora di dover eseguire la ricerca di uno studente nella tabella dell esempio precedente, come si può notare fra i records vi sono alcuni casi di omonimia (vedi Rossi Mario ), a questo punto quindi o si dispone di tutte le informazioni dello studente che si sta cercando oppure diventa difficile trovarlo. Per ovviare a questo problema si è pensato di introdurre un campo apposito che viene associato ad uno e un solo record, un campo che soddisfi tale condizione può essere ad esempio un codice che viene incrementato per ogni registrazione e mai ripetuto, ecco che così nel caso degli studenti nasce ad esempio il campo matricola, ma non è inusuale trovarlo con il nome di codice o id(entificativo), questo campo viene posto normalmente all inizio della tabella e va sotto il nome di chiave primaria. Es. Codice_Articolo, Matricola, Codice_fiscale, Codice_Cliente, Id_Cliente, Codice_SkillCard_Ecdl : si definisce chiave un sottoinsieme degli attributi (campi) di un record primaria: una chiave primaria è una chiave che individua al massimo una registrazione fra quelle contenute in un archivio, il suo valore può essere posseduto da una solo record (univocità). Oss: per evitare ovvi problemi quindi non si possono accettare chiavi primarie con elementi vuoti. Problema: risolta la questione precedente, può capitare comunque di dover cercare un elemento di un archivio senza conoscere il valore della sua chiave primaria, sempre riferiti all esempio precedente si può cercare lo studente Bianco Luisa, inoltre diventa difficile ricordare tutti le matricole a memoria; per risolvere quindi questo secondo problema si è pensato di introdurre un altra chiave che possa essere formata anche da più campi, possa essere ripetuta e quindi possa contenere anche elementi vuoti, la chiave secondaria. Una chiave secondaria per l archivio studenti può essere ad esempio formata dai due campi Cognome e Nome, ma non è l unica possibilità. secondaria: una chiave non primaria è detta chiave secondaria, il suo valore individua, in generale, più di una registrazione Esempio, archivio studenti Primaria (1 ry key) Secondaria (2 ry key) Secondaria (2 ry key) Matricola Cognome Nome Data_di_nascita Luogo_di_nascita Età Indirizzo Città Telefono 1 Rossi Mario 13/03/1993 Carmagnola (TO) 16 Via Roma, 17 Trofarello (TO) 011.954.32.65 2 Magno Alessandro 22/08/1994 Savigliano (CN) 15 Corso Atene, 36 Savigliano (CN) 0172.54.321 3 Bianco Luisa 30/11/1992 Torino 17 Via Girivotto, 56 Racconigi (CN) 0172.83.439 4 Verdi Giuseppe 15/05/1992 Savigliano (CN) 17 Via dei Sospiri, 90 Racconigi (CN) 0172.84.433 5 Rossi Mario 25/04/1994 Cuneo 15 Via Torino, 56 Carmagnola (TO) 011.943.54.71 6 Rossi Mario 13/03/1993 Carmagnola (TO) 16 Via Alba, 20 Racconigi (CN) 0172.85.765 A questo punto, introdotti i concetti fondamentali degli archivi, vediamo nello specifico che cosa si può trovare in un software di gestione di database come Microsoft Access Tabelle costruzione di un archivio e inserimento dei primi dati Maschere interfaccia grafica per l inserimento dei dati (in un ufficio dopo alcune ore di inserimento dati in una tabella vi sarà un certo affaticamento della vista, per questo sono state introdotte le maschere, un interfaccia grafica per l inserimento dei dati) Query esecuzione di ricerche negli archivi Report stampa di tabelle o query 2
Le Relazioni Problema: poniamoci ora in un caso più complesso come la gestione di un magazzino, nel database in questione potrebbero essere presenti più tabelle, Clienti,,,, con i seguenti campi Come si può notare alcuni campi ricorrono in più tabelle, ad esempio Fornitore è presente sia nella tabella che in quella degli, mentre Articolo è presente sia nella tabella che nella tabella ed infine il Cognome del cliente si trova sia in che in. Ovviamente ripetere tutti questi dati (anche migliaia di volte) comporta sia un grande dispendio di memoria, che si traduce in un rallentamento dell elaborazione, sia una perdita di tempo per riscrivere ogni volta le informazioni. Soluzione, laddove in una tabella di debba ripetere un informazione presente in un altra tabella, invece di riscrivere l informazione stessa, si utilizzerà la sua chiave primaria quindi il suo codice identificativo, perciò il nuovo campo dovrà essere per forza di tipo Numerico, un campo come questo prenderà il nome di e permetterà di realizzare una fra la tabella in cui è presente il campo da duplicare e la tabella in cui si vuole duplicare il dato. Sostituendo la descrizione dell elemento con il suo codice numerico si risparmia spazio in memoria e di conseguenza si velocizza l elaborazione: infatti ogni carattere di una descrizione tradotto in codice ASCII occupa 1Byte (quindi 15caratteri occuperanno 15Byte), mentre con 2Byte soli è possibile scrivere 65536 codici numerici diversi! : è un legame fra due tabelle : date due tabelle A e B, i campi chiave di A presenti in B costituiscono una cosiddetta chiave 3
Esempio, archivio telefonico 1 ry key 2 ry key 1 ry key Tipi di relazione: date due tabelle A e B si possono avere i seguenti tipi relazione, 1:1 (uno a uno) se a un elemento di A corrisponde uno e un solo elemento di B. Es, associazione presidi-scuole 1:N (uno a molti) se a un elemento di A corrispondono più elementi di B, ma non il viceversa. Es, associazione madri-figli N:M(molti a molti) se a un elemento di A corrispondono più elementi di B, ed è vero anche il viceversa. Es, associazione libri-lettori Problema: da quanto spiegato finora si può evincere che se si cancellasse o aggiornasse un elemento di una tabella A in relazione con una tabella B, potrebbe capitare che in quest ultima rimangano delle informazioni non aggiornate con ovvi problemi. In riferimento all esempio precedente potrebbe capitare di eliminare un fornitore, ma che rimangano dei suoi articoli. In questo caso di parla di vincoli di integrità o integrità referenziale, cioè delle regole che devono essere rispettate dalle relazioni per il buon funzionamento del database. Combo-box: come abbiamo visto in una chiave non viene inserita la descrizione di un elemento, ma il suo codice, fino a qualche anno fa quindi non era inusuale trovare negli uffici impiegati davanti a un computer che consultavano elenchi in cui comparivano servizi o articoli affiancati dal loro codice da inserire nell archivio. Con l avvento degli ultimi programmi per la gestione di database si è ovviato però a questo problema con l utilizzo delle cosiddette combo-box, dei menù a tendina che opportunamente impostati permettono di selezionare da un elenco il valore da inserire in una chiave prendendolo direttamente dalla tabella originaria, ma inserendo al suo posto la sua chiave primaria. 4
Esercitazione - Archivio Telefonico Creare il proprio archivio telefonico e stamparlo con un report Tabelle: 1 ry key 2 ry key 1 ry key Maschere: una per tabella Query Cercare tutte le persone della tabella che hanno l iniziale del cognome compresa fra M ed S e che abitano a Racconigi, visualizzando tutti i campi associati Creare una query della tabella che contenga tutti i nominativi, ma solo i campi Cognome, Nome, Telefono, Cellulare Report Creare un report della seconda query Creare un report della tabella con i seguenti campi: Lettera, Cognome, Nome, Telefono, Cellulare, impostando il campo Lettera come intestazione di gruppo Relazioni, le relazioni sono indicate dalle Chiavi Esterne 5