







Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Breve testo contenente appunti per l'argomento delle basi di dati in informatica.
Tipologia: Appunti
1 / 13
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!








Un database o base di dati (DB) è un insieme di dati logicamente correlati per modellare un aspetto della realtà; i dati sono conservati in una memoria di massa e progettati in modo da essere utilizzati efficientemente da più utenti e da più applicativi. Essi sono strutturati in modo tale da consentire l’accesso veloce ai dati ( ricerca ) e il loro aggiornamento ( cancellazione, inserimento e modifica ). Il DB deve contenere le informazioni sulla rappresentazione dei dati, sulle relazioni che li legano, le informazioni sulla sicurezza (ad esempio quali profili utente sono autorizzati a modificare i dati) e infine i dati. Si chiama database designer colui che progetta il database.
Un requisito importante per un buon DB consiste nel non duplicare inutilmente le informazioni in esso contenute. Esempio : supponiamo di creare un archivio per memorizzare i dati dei libri di una biblioteca come rappresentato in tabella: codice libro
titolo casa editrice genere numero pagine
copie disponibili
copie prestate
nome autore
cognome autore
luogo nascita autore
data nascita autore 1 sistemi 1 hoepli informatico 450 3 1 pasquale levi pescara 15/9/ 2 informatica 1 Minerva italica informatica 259 7 4 piero gallo teramo 5/6/ 3 basi di dati Minerva italica informatica 321 4 0 maria rossi L’aquila 6/12/ 4 informatica 2 Minerva italica informatica 223 4 4 piero gallo teramo 5/6/ 5 sistemi 2 hoepli informatico 414 2 2 pasquale levi pescara 15/9/ 6 sistemi 3 hoepli informatico 390 2 1 pasquale levi pescara 15/9/ 7 matematica hoepli matematica 186 7 7 giovanni mantini chieti 5/5/
E’ evidente che questa soluzione non è efficiente in quanto alcuni dati devono essere riscritti più volte nello stesso archivio, con il rischio di fare errori e quindi di avere un archivio incoerente. Una possibile soluzione è rappresentata dalla seguente situazione in cui ci sono due tabelle, una per i libri e una per gli autori in relazione tra loro tramite il codice autore. Tabella Libri codice libro
titolo casa editrice genere numero pagine
copie disponibili
copie prestate
codice autore 1 sistemi 1 hoepli informatico 450 3 1 1 2 informatica 1 Minerva italica informatica 259 7 4 2 3 basi di dati Minerva italica informatica 321 4 0 3 4 informatica 2 Minerva italica informatica 223 4 4 2 5 sistemi 2 hoepli informatico 414 2 2 1 6 sistemi 3 hoepli informatico 390 2 1 1 7 matematica hoepli matematica 186 7 7 4 Tabella Autori codice autore nome autore cognome autore luogo nascita autore data nascita autore 1 pasquale levi pescara 15/9/ 2 piero gallo teramo 5/6/ 3 maria rossi L’aquila 6/12/ 4 giovanni mantini chieti 5/5/
occorrono e se di un libro ho bisogno delle informazioni sull’autore, cerco sulla seconda tabella l’autore con quel codice e prelevo i dati; viceversa se di un autore voglio avere l’elenco dei libri con il codice autore cerco nella prima tabella ed estraggo i dati dei libri.
I DB relazionali permettono di creare DB che hanno, appunto, questa caratteristica per cui, i dati di diversi oggetti possono essere messi in relazione tra loro utilizzando le informazioni che hanno in comune. Un database relazionale si basa, quindi, sul concetto di insiemi di record (tabelle) e le relazioni tra le informazioni derivano dalla corrispondenza di alcuni campi di record appartenenti a tabelle diverse. I sistemi basati su un DB relazionale consente un approccio dichiarativo, cioè si specifica cosa trovare, lasciando al sistema il compito di capire come trovarlo.
FASI DI PROGETTAZIONE DI UN DB
La metodologia di progettazione di un DB è un insieme di attività tra loro collegati, prodotti intermedi e finali di tali attività, criteri di verifica della qualità di tali fasi e prodotti, volti a realizzare una base di dati a partire da un insieme di specifiche che formalizzano le esigenze dell’utente. fase 1. Analisi dei requisiti o del problema : consiste nel capire cosa il programma deve fare; occorre individuare gli scopi del DB e, quindi, i diversi tipi di oggetti da definire attraverso le loro caratteristiche e le relazioni che li legano; questa fase è sicuramente la più importate per ottenere un prodotto efficiente e funzionale, va pertanto prodotta la documentazione di tutta questa fase. Nelle fasi successive stabiliamo come il programma deve essere per ottenere quanto stabilito con l’analisi dei requisiti. fase 2. Progettazione concettuale : permette di rappresentare le informazioni raccolte con l’analisi dei requisiti in uno schema formale, il modello concettuale , ma comunque astratto. Per realizzare il progetto concettuale useremo il modello E-R perché permette di creare DB senza duplicazione di dati. fase 3. Progettazione logica : permette di creare il modello logico , cioè lo studio di come memorizzare concretamente le informazioni del DB nelle memorie di massa. Queste sono fasi progettuali, cioè su carta. fase 4. Progettazione fisica consiste nell’implementare con il programma scelto, ad esempio Access, lo schema logico definendo gli aspetti fisici di memorizzazione e rappresentazione nelle memoria di massa. Inoltre è necessario testare il prodotto ottenuto per verificarne il funzionamento e la rispondenza alle specifiche date.
IL MODELLO E-R (Entity/Relationship)
Il modello ER consiste nel riorganizzare tutti gli elementi presenti nella documentazione sulle specifiche per rappresentare la realtà di interesse in termini di una descrizione formale e concreta di tipo grafico, indipendentemente dai criteri di memorizzazione che useremo. Esso, quindi, permette di realizzare il modello concettuale di un DB di cui ho già fatto l’analisi dei requisiti: il termine concettuale indica che si evita di descrivere i dettagli implementativi del DB. Si basa sui seguenti concetti: entità, attributi, relazioni. Ogni oggetto della realtà che occorre rappresentare è detto entità ed è descritto tramite le sue proprietà, dette attributi ; varie entità possono essere collegate tra loro tramite le relazioni.
Graficamente gli attributi di un’entità si rappresentano elencandoli nel rettangolo dell’entità.
Attributi chiave La chiave primaria è un attributo (o più attributi) che identifica univocamente ogni informazione che andremo a memorizzare nelle tabelle o record; è indicato con (pk), primary key. Potrebbero esserci più attributi adatti ad essere chiave, detti chiavi candidate : una sarà la chiave primaria mentre le altre saranno chiamate chiavi alternative. Si sceglie come chiave primaria l’attributo più piccolo, cioè che contiene meno informazioni e richiede meno byte di memoria rispetto alle altre. Ad esempio se consideriamo l’entità persona, le chiavi candidate possono essere:
Film Codice Titolo Genere Anno
Le relazioni Una relazione è un legame concettuale tra due o più entità. La relazione si descrive, in genere,
Graficamente le relazioni vengono rappresentate con una linea che congiunge le entità.
Le relazioni si possono classificare in base alla: cardinalità , cioè quante volte un’istanza (o tupla o record) di un’entità è collegata a 0, 1 o n (tante) istanze di un’altra entità. Graficamente si riconosce dal modo in cui la linea arriva sul rettangolo: la cardinalità è 1 se arriva in linea retta, è n se arriva così opzionalità : indica se la relazione deve esistere (graficamente si indica con una linea continua) oppure se è opzionale (linea tratteggiata). direzione : indica la direzione in cui si legge la relazione, ad esempio da Opera a Museo o da Museo verso Opera. dipendenza : indica se una relazione dipende da altre relazione. Esempio:
Indica che la relazione “appartiene” segue la direzione da Opera verso Museo; è opzionale (linea tratteggiata) perché un’opera può stare in un museo (potrebbe anche essere in una collezione privata); ha cardinalità 1 perché un’opera può stare in un unico museo. La relazione “colleziona” segue la direzione da Museo verso Opera; è obbligatoria (linea continua) perché un museo deve necessariamente avere almeno un’opera; ha cardinalità n perché un museo ha tante (n) opere. Data una relazione binaria (cioè tra solo due entità) lo schema della relazione è descritto da due frasi che ne descrivono le caratteristiche in entrambe le direzioni. La creazione delle due frasi è definita dalle seguenti regole:
Opera IDOpera(pk) Titolo Dimensioni Periodo Autore Collocazione
Museo IDMuseo(pk) Nome Indirizzo Città Telefono Responsabile
appartiene n
1 colleziona
Entità 1 relazione Entità 2
Esercizi
Approfondimento sulle chiavi La chiave primaria è un attributo o un insieme di attributi che identificano univocamente una specifica istanza di un’entità. Affinché un attributo sia chiave primaria è necessario che: deve esistere il suo valore per ogni istanza (non può essere NULL) il valore deve essere univoco per ogni istanza il valore non deve cambiare o diventare nullo durante la vita di ogni istanza dell’entità.
DEF : Se la chiave primaria è composta da più attributi si dice chiave composta.
DEF : Una chiave è detta artificiale se non ha un significato proprio e si introduce se nella tabella non c’è nessun attributo che soddisfa tutte le proprietà per essere una chiave primaria oppure se la chiave primaria è troppo complessa. Una chiave artificiale è un contatore che viene inserito automaticamente ad ogni istanza e il suo nome solitamente inizia con ID seguito dal nome dell’entità ed è di tipo intero, autoincremento.
DEF : Una chiave si dice esterna se completa la relazione tra due entità. Le chiavi esterne sono sempre presenti nelle relazioni 1:N e permettono di navigare tra le diverse istanze dell’entità e di mantenere l’integrità referenziale, cioè la navigazione tra dati corretti e coerenti di entità relazionate. Il nome di una chiave esterna, per semplicità di riconoscimento, si indica con la parola codice e con il nome dell’entità con cui è collegata. La chiave esterna deve avere lo stesso dominio della chiave primaria corrispondente.
Esempio 1 : Consideriamo un archivio in cui memorizziamo i dati dei docenti e delle materie di una classe.
Ogni materia può essere assegnata a uno o più docenti, ogni docente insegna una sola materia. La relazione ha cardinalità 1:N allora la chiave primaria dell’entità Materia diventa chiave esterna nell’entità Docente, con il nome CodMateria e si identifica con (fk). IDDocente (pk) Nome Cognome CodMateria (fk) IDMateria (pk) Descrizione NoreSettim 1 Mario Rossi 1 1 Italiano 3 2 Lucia Verdi 2 2 Matematica 4 3 Lucia Bianchi 3 3 Storia 4 4 Franco Di Battista 1 4 Informatica 6 5 Ilaria Contesto 4 6 Luigi Di Giacomo 4 7 Marcella Rossi 2 8 Maria Montini 4
Esempio 2 : rispetto al precedente, supponiamo che più docenti possono insegnare più materie.
La relazione è N:N e va semplificata aggiungendo una nuova entità associativa Incarico, che contiene le chiavi primarie delle due entità primarie come chiavi esterne ed eventuali attributi sulla relazione. L’entità associativa non deve necessariamente avere una chiave primaria.
Docente IDDocente(pk) Cognome Nome CodMateria(fk)
Materia IDMateria(pk) Descrizione NOreSettimanali
insegna n è assegnata 1
Docente IDDocente(pk) Cognome Nome CodMateria(fk)
Materia IDMateria(pk) Descrizione NOreSettimanali
insegna n è assegnata n
Docente IDDocente(pk) Cognome Nome
Materia IDMateria(pk) Descrizione Incarico^ NOreSettimanali CodDocente(fk) CodMateria(fk) DataInizio
La documentazione Poiché lo schema ER potrebbe essere complesso, prevedere tante entità, ognuna con i suoi attributi e tante relazioni, è necessario che ogni DB sia accompagnato da un’opportuna documentazione che specifica, nel dettaglio, le caratteristiche di ogni oggetto usato nel modello. In particolare ci dovrebbero essere le informazioni relative all’attribuzione dei nomi, alla definizione e alla descrizione degli oggetti utili per usi futuri (eventuali correzioni o aggiornamenti del DB). Contiene inoltre le cosiddette regole aziendali , cioè la descrizione di vincoli non esprimibili nel modello, ad esempio il perché sono state effettuate determinate scelte, elementi che devono essere tenuti presenti nelle fasi successive.
INTEGRITÀ DEI DATI
I vincoli di integrità sono le regole che devono essere soddisfatte dai campi dei diversi record memorizzati nella base di dati, ad esempio l’età di una persona deve rispettare il vincolo di essere un numero positivo e deve essere un numero inferiore a 100; oppure un altro vincolo è che non ci possono essere due persone con lo stesso codice fiscale. I vincoli di integrità vanno specificati sia nell’analisi dei requisiti che nello schema E-R. I vincoli di integrità possono essere di due tipi: vincoli impliciti che dipendono dalla struttura dei dati e vincoli espliciti che impongono regole sulla modifica dei dati.
I vincoli impliciti sono vincoli sull’integrità dei dati e può essere di due tipi: a. integrità sui dati (o integrità dell’entità ): il valore della chiave primaria deve esistere, essere unico e non NULL. b. integrità referenziale : per ogni valore della chiave esterna deve esistere un valore per la chiave primaria nella tabella associata. Nello schema E-R l’integrità sui dati si rappresenta sottolineando le chiavi, mentre l’integrità referenziale si rappresenta mettendo la linea continua nelle relazioni.
I vincoli espliciti sono ad esempio che l’età deve essere un numero compreso tra 0 e 100 e si rappresenta, sempre nell’analisi dei requisiti nel modo seguente: V1: (0 < Studente.Età < 100)
ESEMPIO
Creare un archivio per gestire le gare dei campionati automobilistici di diversi anni memorizzando le informazioni relative ai piloti, alle scuderie e alle gare.
1. ANALISI DEI REQUISITI Ci sono tre entità:
Leggiamo le relazioni: Ogni pilota deve correre per una sola scuderia. Ogni scuderia deve avere in contratto uno o più piloti. Ogni pilota può gareggiare in uno o più circuiti. Ogni circuito deve iscrivere uno o più piloti.
Tra le tre entità ci sono due relazioni (è ridondante quella tra Scuderia e Circuito, quindi non si inserisce): quella tra Pilota e Scuderia che si realizza semplicemente inserendo in Pilota la chiave esterna che rappresenta il codice della scuderia con cui è in contratto; quella tra Pilota e Circuito è n:n e, poiché non è consentito nello schema E-R, inseriamo una nuova entità associativa tra le due, Gara, che ha le chiavi esterne di Pilota e Circuito.
Pilota IDPilota (pk) Cognome Nome DataNascita Nazionalità NGareDisputate NGareVinte NPolePosition
Circuito IDCircuito (pk) Nome Città Dimensione CaratterTecniche DataGara CondAtmosferiche Note 1Classificato 2Classificato 3Classificato 4Classificato 5Classificato 6Classificato 7Classificato 8Classificato 9Classificato 10 Classificato
Scuderia IDScuderia (pk) Nome Indirizzo Città Telefono Nazionalità NVittorie
gareggia n n iscrive
corre per ha in contratto n 1
6Classificato(fk) Codice del pilota sesto classificato intero
Circuito IDCircuito (pk) Codice del circuito, chiave primaria intero, autoincremento Nome Nome del circuito char(20) Città Città dove ha sede il circuito char(15) Dimensione Lunghezza del circuito char( CaratterTecniche Descrizione delle particolari caratteristiche tecniche del circuito, ad esempio n° e lunghezza dei rettilinei, numero di gimcane, …
char(30)
Scuderia IDScuderia (pk) Codice della scuderia, chiave primaria intero, autoincremento Nome Nome della scuderia char(15) Indirizzo Indirizzo dove ha sede la scuderia char(15) Città Città dove ha sede la scuderia char(15) Telefono Telefono char(15) Nazionalità Nazionalità della scuderia char(15) NVittorie Numero di vittorie conquistate dalla scuderia nel campionato intero