










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
Dispensa riassuntiva ben articolata sui database e sul linguaggio MySql
Tipologia: Dispense
1 / 18
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!











Il database è un insieme di archivi di datiben organizzati e ben strutturati , gestiti in modo integrato da un sistema per la gestione delle basi di dati che costituiscono una base di lavoro per utenti diversi con programmi diversi. I prodotti software per la gestione dei database sono indicati con il termine DBMS , acronimo di Database Management System.
Il database deve quindi assicurare alcune caratteristiche fondamentali, al fine di permettere un’organizzazione efficiente e produttiva: la possibilità di ritrovare facilmente le informazioni desiderate , in termini di velocità dell’elaborazione, sicurezza dei dati e integrità delle registrazioni.
Nello specifico, i seguenti termini stanno a significare:
Il vantaggio principale dell’uso dei database è proprio quello di favorire l’utente del computer nel suo modo di vedere i dati, liberandolo dagli aspetti riguardanti la collocazione fisica delle registrazioni sui supporti magnetici degli archivi. In particolare, il DBMS consente all’utente di collocarsi in una posizione più lontana dall’hardware, dalle memorie di massa e dal Sistema Operativo, bensì di avvicinarsi all’applicazione che utilizza i dati contenuti negli archivi.
La facilitazione dell’uso dei database, quindi, ha creato una distinzione tra le varie figure degli utenti del computer: si parla di utenti finali che utilizzeranno effettivamente il database e di amministratori che si occuperanno della progettazione e della manutenzione degli archivi. Questa ripartizione corrisponde alla differenza tra struttura concettuale e struttura fisica dei dati , cioè tra il modo attraverso il quale l’utente pensa
all’organizzazione e al ritrovamento dei dati, e le tecniche usate dal Sistema Operativo per registrare e leggere negli archivi.
Quando si parla di integrazione degli archivi e di base di dati, può nascere spontanea l’idea di dati accentrati. In realtà gli archivi possono risiedere su un unico computer oppure possono essere distribuiti sullememorie di massa di computer diversi. In quest’ultimo caso si parla di database distribuiti: archivi residenti in memorie di massa di computer diversi, facenti parte di una rete aziendale, i cui nodi possono essere anche fisicamente lontani.
In questo caso gli utenti del database elaborano in modo locale gli archivi che hanno a disposizione nel proprio sistema e nello stesso tempo accedono in modo remoto a sistemi centrali attraverso le linee di comunicazione. Il vantaggio è proprio la facilitazione della gestione dei dati, i quali vengono aggiornati per tutti gli utenti che fanno uso del database, a prescindere dalla loro posizione geografica. L’integrazione degli archivi, quindi, è realizzata a livello logico e non più fisico.
Le tecniche di gestione delle basi di dati nascono per superare i problemi e i limiti insiti nelle tradizionali organizzazioni degli archivi in modo non integrato. Il tradizionale approccio basato sugli archivi (file based) favorisce una serie di inconvenienti individuabili nel seguente elenco:
C’è da tenere in considerazione che la descrizione dei dati (la loro composizione, i vincoli, le limitazioni ecc..) è mantenuta all’interno dei database stesso con i dati ed è formata dai metadati , cioè dati che descrivono dati. Questi vengono raccolti in un data dictionary.
L’uso efficace dei dati organizzati in un database presuppone un attento lavoro di progettazione iniziale, che viene fatto con riferimento ai dati che si vogliono memorizzare e successivamente elaborare.
Nel rappresentare gli aspetti significativi della porzione di mondo reale che si vuole modellare, devono essere identificate, mediante opportuni schemi, le entità di interesse, la loro articolazione e le correlazioni tra le entità individuale. Il modello costruito è indipendente dalle modalità con cui la base di dati verrà realizzata, perché ne presenta soltanto l’aspetto concettuale. Tra i numerosi modelli proposti per la progettazione concettuale, quello maggiormente diffuso è il modello Entità/Associazioni , in inglese Entity/Relationship, introdotto dal matematico Peter P. Chen. Nel modello E/R di una realtà si individuano gli oggetti che la compongono dette entità , gli attributi , che rappresentano le caratteristiche delle entità individuate, e infine le associazioni che individuano le correlazioni logiche tra entità.
A partire dallo schema concettuale E/R, un database può essere progettato e realizzato passando al modello logico , cioè alle strutture di dati che organizzano i dati, in modo da
consentire le operazioni di manipolazione e di interrogazione. Nello sviluppo della teoria dei database, dal 1960 in poi, sono emersi principalmente tre tipi di modelli per le basi di dati: gerarchico, reticolare e relazionale. Quest’ultimo è quello predominante. Il modellorelazionale rappresenta il database come un insieme di tabelle. Esso nasce nel 1970, proposto da Edgar F. Codd , ricercatore IBM, e viene considerato il modello più semplice ed efficace, perché è più vicino al modo consueto di pensare ai dati. Le operazioni sui database gerarchici e reticolari sono complesse, agiscono su singoli record che vengono identificati specificando i percorsi per ritrovarli. Si dice in tal caso che l’approccio adottato nell’elaborazione dei dati è di tipo procedurale , ovvero bisogna indicare al computer come deve fare per trovare i dati. I sistemi relazionali adottano invece un approccio di tipo dichiarativo nell’elaborazione delle informazioni, in quanto viene specificato cosa si vuole trovare, mentre i percorsi per trovare i dati sono a carico del sistema. Inoltre il modello relazionale si basa su alcuni concetti fondamentali tipicamente matematici, ponendosi come obiettivo l’utilizzo di un linguaggio conosciuto a livello mondiale (quello matematico) , eliminando così i problemi di ambiguità nella terminologia e nella simbologia. Infatti, il modello relazione si basa sul concetto matematico di relazione, inquadrato nell’ambito della teoria degli insiemi.
2.0 Modellazione dei dati
La progettazione concettuale è la sintesi tra la visione degli utenti e la visione dei progettisti dell’applicazione. Come detto pocanzi, dev’essere assolutamente precisa e dev’essere espressa tramite formalismi semplici che permettono una lettura e comprensione anche da parte di un’utenza non tecnica.
Il modello Entità/Associazioni presenta tali caratteristiche e si concretizza in un documento grafico che fa uso del linguaggio UML , UnifiedModeling Language che è un linguaggio semi-grafico usato per definire, visualizzare e specificare tutte le costruzioni di un sistema software.
Modellare i dati significa quindi, costruire una rappresentazione semplificata della realtà osservata o di un problema aziendale.
La progettazione di un modello di dati avviene a livelli diversi:
Per molteplicità di un’associazione si intende il numero di possibili istanze di un’entità che viene messo in corrispondenza con un’istanza dell’altra entità che partecipa all’associazione.
Alla molteplicità vengono associati i concetti di obbligatorietà e di cardinalità dell’associazione.
L’ obbligatorietà dell’associazione definisce se questa è obbligatoria o facoltativa, nel diagramma UML si indica rispettivamente con una freccia continua o tratteggiata.
La cardinalità dell’associazione può essere:
3.0 Modello Relazionale
Il modello relazionale si sviluppa quando si lavora nel livello logico della progettazione del database. Il modello relazionale si chiama così perché è fondato sul concetto matematico di relazione tra insiemi di oggetti. Una relazione può essere definita come un sottoinsieme del prodotto cartesiano di due insiemi.
In generale, una relazione con n-colonne si indica come una relazione di grado n , il nome con il quale si identifica una colonna si chiama attributo , l’insieme dei valori che possono essere assunti da un attributo definisce il dominio di quell’attributo e il numero di n-uple (tuple) indica la cardinalità della relazione.
La chiave della relazione è un attributo o una combinazione minimale di attributi che identificano univocamete le tuple all’interno della relazione, cioè ogni riga della tabella possiede valori diversi per l’attributo/i chiave.
I requisiti fondamentali che caratterizzano il modello relazionale sono:
Dal modello concettuale è possibile ottenere il modello logico dei dati: in altre parole si può definire la struttura degli archivi adatti per organizzare i dati. Per far ciò, c’è bisogno di seguire delle regole, dette regole di derivazione.
1.5. Grado: il grado è dato dalla somma dei gradi
1.6. Cardinalità: solitamente non si può prevedere.
Se c’è una cosa da evitare nella progettazione di una base di dati, quella è la ridondanza, non solo perché viene sprecato spazio su disco ma, soprattutto, per le possibili anomalie che si possono presentare nel corso delle diverse fasi del trattamento dei dati: si parla quindi di anomalie di aggiornamento, inserimento e cancellazione che sono la principale causa dell’incosistenza dei dati.
Sono stati definiti, quindi, opportuni criteri che devono essere soddisfatti dalle relazioni per evitare la ridondanza dei dati e le possibili anomalie che ne conseguono. Tali criteri prendono il nome di forme normali. Esistono algoritmi appositi per far rispettare queste forme normali alle relazioni. Il processo prende il nome di normalizzazione che è l’ultimo passo della progettazione di un database relazionale.
Prima di analizzare le tre forme normali, è opportuno fare un appunto su alcune definizioni:
Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello relazionale che sono:
Una relazione è in seconda forma normale (2FN) quando è in prima forma normale e tutti i suoi attributi non-chiave dipendono dall’intera chiave, cioè non possiede attributi che dipendono soltanto da una parte della chiave. La seconda forma normale elimina la dipendenza parziale degli attributi dalla chiave e riguarda il caso di relazioni con chiavi composte, cioè formate da più attributi.
Una relazione è in terza forma normale (3FN) quando è in seconda forma normale e tutti gli attributi non-chiave dipendono direttamente dalla chiave, cioè non possiede attributi non-chiave che dipendono da altri attributi non-chiave. La terza forma normale elimina la dipendenza transitiva degli attributi dalla chiave.
L’integrità referenziale è un insieme di regole del modello relazionale che garantiscono l’integrità dei dati quando si hanno relazioni associate tra loro attraverso la chiave esterna: queste regole servono per rendere valide le associazioni tra le tabelle e per eliminare gli errori di inserimento, cancellazione o modifica di dati collegati tra loro. L’integrità
Le tabelle vengono modificate col comando ALTER TABLE e la sintassi è la seguente:
ALTER TABLE NomeTabella
Le tabelle vengono eliminate col comando DROP TABLE e la sintassi è la seguente:
DROP TABLE NomeTabella;
I valori degli attributi nelle righe della tabella possono essere inseriti, aggiornati o cancellati rispettivamente con i comandi INSERT , UPDATE , e DELETE.
INSERT INTO NomeTabella (NomeAttributo)
VALUES (ValoreAttributo);
UPDATE NomeTabella
SET CampoGenerico = ‘CampoSpecifico’
WHERE NomeAttributo = ValoreAttributo;
DELETE FROM NomeTabella
WHERE NomeAttributo = ValoreAttributo;
Il QL all’interno del SQL ha tre clausole fondamentali:
SELECT Colonne
FROM Tabelle
WHERE Condizioni
Se per esempio si vogliono visualizzare tutti gli abitanti registrati all’anagrafe di Roma la cui età è maggiore di 18, la query diventa:
SELECT *
FROM Anagrafe
WHERE (Residenza=”Roma”) AND (Età>= 18)
Conta il numero di righe selezionate dall’interrogazione.
SELECT COUNT *
FROM Anagrafe
WHERE (Residenza=”Roma”) AND (Età>= 18)
Risultati: lo stipendio più basso e quello più alto tra tutti impiegati che lavorano presso il dipartimento di amministrazione.
Il comando ORDER BY restituisce i risultati di un’interrogazione ordinati secondo i valori contenuti in una o più colonne, tra quelle elencate alla parola Select.
SELECT Cognome, Stipendio;
FROM Impiegati
WHERE Dipartimento=”Amministrazione”;
ORDER BY Stipendio DESC, Cognome;
Risultato: l’elenco dei dipendenti del dipartimento amministrazione in ordine decrescente di stipendio, e a parità di stipendio, in ordine crescente di cognome.
Il comando GROUP BY permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate dalla clausola.
Se si volessero elencare i dipartimenti dove lavorano i dipendenti con la somma degli stipendi e il numero dei dipendenti per ogni dipartimento:
SELECT Dipartimento, COUNT (ID) AS Dipendenti, SUM (Stipendio) AS Stipendi; FROM Impiegati GROUP BY Dipartimento;
Quando si utilizza una clausola Group Bytutti gli attributi che compaiono nella lista accanto alla parola Select devono essere inclusi nella clausola Group By oppure devono essere argomenti di una funzione di aggregazione. LaGroup By va sempre dopo la clausola Where .La struttura del comando Selectcon raggruppamenti può essere ulteriormente ampliata con la clausola HAVING con la quale è possibile sottoporre al controllo di una o più condizioni i gruppi creati con la clausola Group By. La clausola Havingsi inserisce
dopo la clausolaGroup By eserve a visualizzare le sole righe dei raggruppamenti che soddisfano le condizioni scritte accanto a Having
Se si volesse ottenere, per i soli dipartimenti con più di due addetti, il numero degli addetti e la somma dei relativi stipendi, la query diventerebbe:
SELECT Dipartimento, COUNT (ID) AS Dipendenti, SUM (Stipendio) AS Stipendi;
FROM Impiegati;
GROUP BY Dipartimento;
HAVINGCOUNT (ID) > 2;
La clausola Having differisce da Where in quanto la prima pone condizioni sui gruppi, la seconda pone condizioni sulle singole righe.
Le condizioni di ricerca sono utilizzate nella clausole Where e Having per determinare i criteri di selezione rispettivamente delle righe e del raggruppamenti. Per favorire la ricerca, è possibile usare i segni del confronto = , < , > , <> , >= , <= e anche gli operatori logici tipo AND , OR , NOT. In quest’ultimo caso l’ordine degli operatori è il seguente: NOT viene applicato prima di AND e AND prima di OR.
L’operatore Between controlla se un valore è compreso all’interno di un intervallo di valori, inclusi gli estremi. È possibile specificare, anteponendolo a Between, anche l’operatore logico NOT per valutare la condizione opposta, cioè per controllare se il valore non rientra nell’intervallo specificato.
Per ottenere l’elenco dei dipendenti (con cognome, nome, residenza) che hanno retribuzione compresa tra 30000 e 45000, si può usare la parola Betweennella scrittura della condizione dopo Where:
SELECT Cognome, Nome, Residenza;
FROM Impiegati
WHERE Stipendio BETWEEN 30000 AND 45000;
È preferibile usare la clausola Betweenal posto di inserire le condizioni nella clausola Where: Stipendio >=30000 AND Stipendio<=45000.