Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Database: teoria e linguaggio MySql, Dispense di Informatica

Dispensa riassuntiva ben articolata sui database e sul linguaggio MySql

Tipologia: Dispense

2017/2018

Caricato il 16/06/2018

gabriele.ruta
gabriele.ruta 🇮🇹

4.7

(6)

13 documenti

1 / 18

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Database
1.0 Archivi e basi di dati
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:
Consistenza: per consistenza s’intende consistenza degli archivi, ovvero i dati in
essi contenuti devono essere significativi ed utilizzabili nelle applicazioni
dell’azienda;
Sicurezza (protezione): per sicurezza ci si riferisce all’impedimento che il database
venga danneggiato da interventi non autorizzati o accidentali;
Integrità: significa garantire che le operazioni effettuate sul database da utenti
autorizzati non provochino una perdita di consistenza ai dati.
1.1 Vantaggi del Database
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
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Anteprima parziale del testo

Scarica Database: teoria e linguaggio MySql e più Dispense in PDF di Informatica solo su Docsity!

Database

1.0 Archivi e basi di dati

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:

  • Consistenza: per consistenza s’intende consistenza degli archivi, ovvero i dati in essi contenuti devono essere significativi ed utilizzabili nelle applicazioni dell’azienda;
  • Sicurezza (protezione): per sicurezza ci si riferisce all’impedimento che il database venga danneggiato da interventi non autorizzati o accidentali;
  • Integrità: significa garantire che le operazioni effettuate sul database da utenti autorizzati non provochino una perdita di consistenza ai dati.

1.1 Vantaggi del Database

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.

1.2 Database distribuiti

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.

1.3I limiti dell’organizzazione convenzionale degli archivi

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:

  • Dipendenza dei dati: i programmi sono dipendenti dagli archivi che essi gestiscono, nel senso che tutti i linguaggi di programmazione richiedono di specificare all’interno del programma, quali sono gli archivi utilizzati e la struttura del loro record: qualsiasi modifica alla struttura del record, richiede la modifica di tutti i programmi che fanno uso di quel tipo di record.
  • Interrogazioni e difficoltà nell’accesso ai dati: è possibile accedere ai dati solo tramite le applicazioni specifiche, cioè solo tramite un numero limitato di interrogazioni predefinite. Per ogni altra esigenza, bisogna sviluppare delle applicazioni ad hoc.
  • Indipendenza dalla struttura fisica dei dati: i programmi applicativi sono indipendenti dai dati fisici (è possibile modificare i supporti fisici senza modifiche all’applicazione);
  • Eliminazione della ridondanza: gli stessi dati non compaiono più volte in archivi diversi, in quanto il database è costituito da archivi integrati di dati;
  • Eliminazione della inconsistenza: il database non deve presentare più campi uguali con valori diversi in archivi diversi;
  • Integrità dei dati: vengono previsti controlli per evitare anomalie ai dati causate dai programmi e dalle applicazioni degli utenti;
  • Utilizzo da parte di più utenti: il database può esser visto da più utenti coi loro programmi, anche se solo in modalità parziale;
  • Controllo della concorrenza: le operazioni effettuate da più utenti in modo concorrente, non devono influenzarsi a vicenda;
  • Sicurezza dei dati: sono previste procedure di controllo sia per impedire accessi non autorizzati, sia per la protezione da guasti accidentali.

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.

1.5Modelli per il database

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:

  • Uno a uno, 1:1 o biunivoca: quando ogni istanza della prima entità si deve associare a una sola istanza della seconda entità e viceversa;
  • Uno a molti, 1:N o semplice: quando ogni istanza della prima entità si può associare ad una o più istanza della seconda entità, mentre ad ogni istanza della seconda entità si deve associare solo un’istanza della prima;
  • Molti a molti, N:N o complessa: quando ad ogni istanza della prima entità si possono associare una o più istanza della seconda entità e viceversa.

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:

  • Tutte le righe della tabella contengono lo stesso numero di colonne , corrispondenti agli attributi;
  • Gli attributi presentano informazioni elementari (o atomiche), non scomponibili ulteriormente;
  • I valori assunti da un campo appartengono al dominio dei valori possibili per quel campo e quindi sono valori omogenei tra loro, cioè dello stesso tipo;
  • In una relazione, ogni riga è diversa da tutte le altre: la chiave primaria è indispensabile per questa caratteristica.
  • Le tuple compaio nella tabella secondo un ordine non prefissato.

1. Regole di derivazione dal modello E/R

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. Ogni entità diventa una relazione;
  2. Ogni attributo di un’entità diventa un attributo della relazione, cioè il nome di una colonna della tabella;
  3. Ogni attributo della relazione eredita le caratteristiche dell’attributo dell’entità da cui deriva;
  4. L’identificatore univoco di un’entità diventa la chiave primaria della relazione derivata;
  5. L’associazione uno-a-uno diventa un’unica relazione che contiene gli attributi della prima e della seconda entità;

1.5. Grado: il grado è dato dalla somma dei gradi

1.6. Cardinalità: solitamente non si può prevedere.

3. Normalizzazione

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:

  • La chiave o chiave primaria è l’insieme di uno o più attributi che identificano in modo univoco una tupla (riga della tabella);
  • La chiave candidata è un insieme minimale di uno o più attributi che possono svolgere la funzione di chiave (possono essere molteplici, ma la chiave primaria è un solo attributo);
  • L’attributo non chiave è un campo che non fa parte della chiave primaria.
  • Si ha dipendenza funzionale tra attributi quando il valore di un insieme di attributi A determina un singolo valore dell’attributo B. Si dice che B dipende funzionalmente da A o che A è determinante per B.
  • Si ha dipendenza transitiva tra attributi quando un attributo A determina B e B determina C; si dice allora che C dipende transitivamente da A per mezzo di B.

3.1. Prima forma normale

Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello relazionale che sono:

  1. Tutte le righe della tabella contengono lo stesso numero di colonne;
  2. Gli attributi rappresentano informazioni elementari;
  3. I valori che compaiono in una colonna sono dello stesso tipo, cioè appartengono allo stesso dominio;
  4. Ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori nelle colonne (chiave primaria indispensabile);
  5. L’ordine con il quale le righe compaiono non è rilevante.

3.2. Seconda forma normale

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.

3.3.3. Terza forma normale

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.

4. Integrità referenziale

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à

  • TipoAttributo definisce il tipo dell’attributo (es. char, int, double ecc…);
  • DimAtt. definisce la dimensione dell’attributo (es. 30, 15, 255 ecc..);
  • ClausolaAttributo serve a qualificare meglio l’attributo stesso, alcuni tipi di clausole sono: - NOT NULL : rende il campo obbligatorio; - DEFAULT : definisce ilvalore da attribuire al campo se non gli viene assegnato alcun valore; - REFERENCES : definisce un vincolo di integrità referenziale e definisce l’attributo come chiave esterna.

Le tabelle vengono modificate col comando ALTER TABLE e la sintassi è la seguente:

ALTER TABLE NomeTabella

  • ADD NomeAttributo; (per aggiungere)
  • DROP NomeAttributo; (per rimuovere)

Le tabelle vengono eliminate col comando DROP TABLE e la sintassi è la seguente:

DROP TABLE NomeTabella;

2. Manipolazione dei dati (DML in SQL)

I valori degli attributi nelle righe della tabella possono essere inseriti, aggiornati o cancellati rispettivamente con i comandi INSERT , UPDATE , e DELETE.

  • (^) Per inserire i valori in una nuova riga della tabella:

INSERT INTO NomeTabella (NomeAttributo)

VALUES (ValoreAttributo);

  • Per assegnare il valore di un attributo ad un campo specifico:

UPDATE NomeTabella

SET CampoGenerico = ‘CampoSpecifico’

WHERE NomeAttributo = ValoreAttributo;

  • Per eliminare una riga conosciuto l’attributo:

DELETE FROM NomeTabella

WHERE NomeAttributo = ValoreAttributo;

3. Interrogazione dei dati (QL in SQL)

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)

  • la clausola DISTINCT accanto a SELECT serve per ridurre le righe duplicate ad una sola
  • la clausola AS accanto a SELECT serve per modificare l’intestazione della nuova tabella.

4. Funzioni di aggregazione

  • (^) Funzione COUNT

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.

5. Ordinamenti e raggruppamenti

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.

  • ASC ordina i dati in ordine crescente (è facoltativo in quanto impostato come default);
  • DESC ordina i dati in ordine decrescente.

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.

6. Condizioni di ricerca

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.

  • BETWEEN

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.

  • IN