Capitolo 13 Interrogare una base di dati
Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per evitare inconsistenza tra le copie potremmo cambiare un dato in un posto e dimenticare di cambiarlo in un altro I dati incoerenti sono chiamati garbage spazzatura, perché la loro presenza è peggio della mancanza assoluta di dati Copyright 2006 Pearson Education. All rights reserved. 13-2
Il database fisico (cont.) Una sola copia di ogni dato evitare le duplicazioni favorisce la coerenza interna, ma non assicura che i dati siano corretti L informazione potrebbe essere necessaria in più parti del DB è meglio tenere una lista singola e permettere agli altri di accedervi Copyright 2006 Pearson Education. All rights reserved. 13-3
Il database fisico (cont.) La cosa migliore è mantenere una tabella separata e la sua chiave piuttosto che ripetere l informazione, si tiene una tabella separata con una chiave che funge da identificatore unico (chiave esterna) per reperire i dati, si fa una ricerca usando la chiave esterna Copyright 2006 Pearson Education. All rights reserved. 13-4
Lo schema di un database I metadati di una tabella sono chiamati schema del database struttura e progetto Immaginiamo un DB universitario con due tabelle, Studente e Residenza: Copyright 2006 Pearson Education. All rights reserved. 13-5
Copyright 2006 Pearson Education. All rights reserved. 13-6
Collegare tabelle mediante relazioni Le due tabelle sono distinte, ma non indipendenti Il Num_Matricola le collega si dice che tra le due entità c è una relazione corrispondenza tra le righe le relazioni fanno parte dei metadati la relazione è bidirezionale (possiamo trovare l indirizzo per ogni studente ma anche lo studente per ogni indirizzo) Copyright 2006 Pearson Education. All rights reserved. 13-7
Ricostruire le tabelle con il join Le relazioni tra due tabelle permettono di costruirne una terza (Lista_Master) che contiene le informazioni combinate di entrambe le tabelle utilizziamo l operazione di join naturale descritta nel Capitolo 12 Copyright 2006 Pearson Education. All rights reserved. 13-8
Progettare uno schema di database Poniamo che l ufficio del Preside e il centro sportivo necessitino entrambi delle informazioni sugli indirizzi definiamo le tabelle senza l indirizzo ma con Num_Matricola come chiave primaria ogni nuova tabella ha una relazione uno-auno con la tabella Residenza e Studente (sia l ufficio del Preside che il centro sportivo possono cercare il nome degli studenti) Copyright 2006 Pearson Education. All rights reserved. 13-9
Database logici e fisici Partendo dal nostro insieme base di quattro tabelle, ne possiamo creare altre personalizzate per i vari dipartimenti e uffici Il database logico non esiste fisicamente È ricreato ogni volta che è necessario, usando i valori correnti del DB fisico I database logici contengono informazioni duplicate, ragion per cui non li memorizziamo in modo permanente (cosa che creerebbe ridondanza) DB logici personalizzati (noti come viste) permettono a ogni gruppo di utenti di vedere i dati da un punto di vista particolare Copyright 2006 Pearson Education. All rights reserved.
Database logici: creare viste sui dati Le viste sono tabelle logiche costruite mediante l applicazione di operazioni alle tabelle fisiche Le operazioni che creano le viste sono chiamate query o interrogazioni il join naturale è una query Ogni tabella dotata di nome è una tabella fisica registrata sull hard disk oppure una tabella logica creata da un interrogazione Copyright 2006 Pearson Education. All rights reserved. 13-11
Creare la vista del Preside Contiene informazioni selezionate dalle tabelle fisiche Copyright 2006 Pearson Education. All rights reserved. 13-12
Riunire tre tabelle con un join Primo passo: notate che la vista del Preside contiene informazioni prese da tre tabelle L operazione di join associa l informazione per ogni studente Per ogni studente si possono riunire le informazioni prese da tutte e tre le tabelle Copyright 2006 Pearson Education. All rights reserved. 13-13
Sfoltire i dati nella tabella Recupera solo le colonne che il Preside vuole vedere La strategia del join più sfoltimento è un approccio standard si crea una supertabella mediante il join di diverse tabelle fisiche quindi si estraggono solo le informazioni che interessano l utente Copyright 2006 Pearson Education. All rights reserved. 13-14
La vista del centro sportivo Copyright 2006 Pearson Education. All rights reserved. 13-15
Un linguaggio di interrogazione: SQL SQL (Structured Query Language): è un linguaggio standard di uso larghissimo fornisce una struttura specifica di query per tecniche come join più sfoltimento ogni venditore usa un proprio dialetto SQL, ma le interrogazioni semplici sono più o meno uguali: SELECT FROM WHERE lista di campi tabella/e vincoli sulle righe Copyright 2006 Pearson Education. All rights reserved. 13-16
La clausola ON di SQL Dopo il SELECT c è una lista di campi Il FROM specifica le tabelle da riunire nel Join, la clausola ON il campo da usare come riferimento per far corrispondere le righe Copyright 2006 Pearson Education. All rights reserved. 13-17
La clausola WHERE di SQL La clausola WHERE permette di specificare condizioni sulle righe: il Preside ad esempio vuole vedere solo gli studenti con una media uguale o superiore al 28 Copyright 2006 Pearson Education. All rights reserved. 13-18
Diagrammi entità-relazione La creazione di nuove tabelle coinvolge relazioni Le relazioni entrano a far parte dello schema di un database per indicare le connessioni tra le informazioni; i join le realizzano in pratica Se c è una relazione, probabilmente sarà applicata nella costruzione del database logico Gli amministratori di un database ne documentano la struttura riportando su un diagramma le relazioni Copyright 2006 Pearson Education. All rights reserved. 13-19
Diagrammi entità-relazione (cont.) Copyright 2006 Pearson Education. All rights reserved. 13-20
Diagrammi entità-relazione (cont.) Relazioni uno-a-uno ogni riga della prima entità è associata al più a una riga della seconda entità Relazioni uno-a-molti molte righe della prima entità possono essere associate a una singola riga della seconda entità Nei diagrammi ER questi tipi di relazione possono essere rappresentati in modi diversi Copyright 2006 Pearson Education. All rights reserved. 13-21
Copyright 2006 Pearson Education. All rights reserved. 13-22
Copyright 2006 Pearson Education. All rights reserved. 13-23
Copyright 2006 Pearson Education. All rights reserved. 13-24