Progettazione basi di dati:
Che cosa è una base di dati
Sistema informativo e sistema informatico (sottoinsieme sistema informativo).
Metodologia di progettazione di una base di dati (Prog. Concettuale, Logica e Fisica)
Che cosa è il DBMS
Perché si utilizzano i database invece che i tradizionali archivi ?
DBMS permette indipendenza dalla struttura fisica dei dati
DBMS permette indipendenza dalla struttura logica dei dati
I linguaggi di una base di dati: DDL (definizione dei dati-costruisce lo schema fisico); DMCL (interfaccia l’hardware); DML (trattamento
dati – inser., modif., canc.); DCL (vincoli di integrità, accessi e permessi); QL (query).
Utenti di una base di dati (semplice, avanzato, programmatore, amministratore)
Modello ER
Astrazioni: per classificazione; aggregazione; generalizzazione.
Diagramma E.R. elementi base (entità, attributi, associazioni, generalizzazione, aggregazione, vincoli d’integrità, identificatori)
Entità (classi di oggetti) Istanza (elementi di un’entità)
Da che cosa è formato un attributo (nome, formato, dimensione, valore);
Cosa sono gli attributi composti o aggregati (data) e gli attributi multipli (hobby)
Attributo chiave (insieme di uno o + attrib. che consentono di distinguere un’istanza dall’altra in modo univoco)
Come si rappresentano graficamente in D.E.R. entità e attributi ?
Che cosa è un’associazione (legame esistente tra 2 o più entità) (classi di fatto) (mettono in corrispondenza istenze di due o più entità).
Quanti versi ha un’associazione. Rappresentazione grafica di un’associazione. Associazioni totali o parziali.
Tipi di associazione 1:1; 1:N; N:N;
Astrazione per generalizzazione: gerarchie ISA (sottoinsiemi) (ereditarietà) (generalizzazione totale quando ogni occorrenza dell’entità
padre e un’occorrenza di almeno una delle entità figlie – generalizzazione esclusiva se ogni occorrenza dell’entità padre è al massimo
un’occorrenza di una delle entità figlie).
Astrazione per aggregazione: associazione HASA (le entità componenti contribuiscono a formare l’entità contenitore)
Aggregazione lasca (indipendenza dell’elemento componente) Aggregazione stretta (il componente non ha vita propria, ma esiste
unicamente perché è stato creato l’oggetto contenitore)
Vincoli di integrità: (asserzione, ovvero un predicato che deve essere soddisfatto dalle istanze delle categorie)
Vincoli impliciti : vincoli di chiave primaria (istanze tutte diverse); vincoli referenziali.
Vincoli espliciti: apposite dichiarazioni.
Modello Relazionale
Relazioni (sotoinsieme finito del prodotto cartesiano D1xD2…xDN)
Schema, Grado, Dominio, elementi di una relazione (ennuple o tupla) , Relazione no tuple uguali, istanza di una relazione (insieme delle
tuple in un tempo T – significato estensionale); numero delle tuple (cardinalità) ?
Chiavi di una relazione (attributo/i attraverso i quali è possibile identificare univocamente una tupla per ogni istanza)
Chiave primaria (chive con minor num. di attr. superchiave minimale). Rappresentazione di chiave (sottolineato)
Schema (insieme delle relazioni)
Vincolo d’integrità (proprietà che deve essere soddisfatta dalle istanze che rapp. inform. corrette per il DB)
Vincolo Intrrelazionali o interni: vincoli su singola tupla: (dominio su un attributo o su più attributi) vincoli su più tuple (vincoli di chiave
primaria)
Vincoli di integrità referenziale.
Dal diagramma ER allo schema relazionale: 1:N; 1:1;N:N;
Dal diagramma ER allo schema relazionale: associazioni di generalizzazione: accorpamento delle figlie nel padre (viene aggiunto un
attributo per distinguere il tipo di ogni tupla); accorpamento del padre nelle figlie (solo se la generalizzazione è totale); sostituzione della
generalizzazione con associazioni 1:1
Dal diagramma ER allo schema relazionale: associazioni per aggregazione.
Operazioni relazionali: algebra relazionale -> il risultato di un’interrogazione o query è una relazione.
Operatori: Unione, differenza, prodotto, proiezione e restrizione – intersezione di 2 rel e giunzione naturale di 2 rel.
Unione: sole se due relazioni sono compatibili se (stesso num. Attrib. e ogni attrib. è dello stesso tipo)
Unione: Grado risultante = Num. Attrib.; Cardinalità = somma – tuple uguali.
Differenza: relazioni compatinìbili; Grado = num. Attrib.; Cardinalità = Numero Tuple A – Numero tuple = presenti in B
Prodotto = relazioni qualsiasi con Grado = g1+g2; Cardinalità = Num. Tuple A x Num. Tuple B
Proiezione = l’oper. che ci permette di selezionare un certo numero di colonne dalla tabella della relazione Grado è <= grado di partenza;
cardinalità è <= cardinalità di partenza. Project R on a1, a2…ak.
Restrizione = da una rel R e un predicato P la restr. È la relazione costituita dalle tuple di R che soddisfano P. restrict R where P =
condizione. Grado = Grado di partenza; cardinalità è <= cardinalità di partenza.
Intersezione tra due relazioni = restituisce una relazione composta da tutte le tuple presenti sia in R che in S.
Giunzione di due relazioni: g.n. di R su S su un attributo A di R e un attributo B di S, aventi lo stesso tipo restituisce una relazione di grado
gr+gs-1 le cui tuple si ottengono così: prodotto cartesiano RxS; restrict RxS where A = B (equi-join o join interno); si elimina A o B.
Se si vuole tutte le tuple da una tabella indipendentemente se abbia delle tuple corrispondenti nell’altra tabella si ricorre al Join esterno.
Il Join esterno può essere sinistro: visualizza tutte le tuple della 1° tab. e solo quelle della 2° che hanno l’attr. in comune.
Il Join esterno può essere destro: visualizza tutte le tuple della 2° tab. e solo quelle della 1° che hanno l’attr. in comune.
Modello Relazionale
Normalizzazione delle relazioni: la normalizzazione è un procedimento che serve per trasformare uno schema che presenta delle anomalie
in uno euivalente in cui le anomalie sono state eliminate. Comportamenti indesiderati in inser./canc./modif.
Prima forma normale: R è in 1FN quando ripecchia i requisiti fondamentali del modello relazionale: i valori di un attributo sono dello
stesso tipo; i valori di una tupla sono diversi da quelli delle altre tuple (non ci sono tuple uguali); l’ordine delle tuple è irrilevante; gli
attributi sono di tipo elementare.
Seconda forma normale: R è in 2FN se non esistono attributi dipendenti solo da una parte della chiave, cioè dipendenti parzialmente dalla
chiave. (creare altre relazioni es. codcli, ind, citta cap; e codprod, merce, prezzo )
Terza Forma Normale: R è in 3FN se per ogni chiave di R accade che: R è in 2FN; non esistono attributi non chiave che dipendono
transitivamente dalla chiave cioè nonn esistono attributi non chiave che dipendono da altri attributi non chiave.
(es. CodCli, Indirizzo, Cap, Città – cap dip. Trans. – perciò R1 codcli, indirizzo, cap – R2 cap, città)
SQL
Il Linguaggio SQL è un linguaggio non procedurale o di tipo dichiarativo. Standard tra i linguaggi per i database relazionali.
SQL assolve alle funzioni di: DDL; DML; DCL; può essere usato in modalità stand-alone(a sé stante) embedded (linguaggio ospite)
ISTRUZIONI DDL:
Creare una tabella;
CREATE TABLE nometabella (attributo tipo NOT NULL, PRIMARY KEY attributo, FOREIGN KEY (attribkeyesterno)
REFERENCES nometabellaesterna, CHECK ( attributo BETWEEN ‘0’ AND ‘9’);
Modificare la struttura di una tabella
ALTER TABLE nometabella ADD attributo tipo;
ALTER TABLE nometabella DROP COLUMN attributo;
ALTER TABLE nometabella MODIFY (attributo nuovotipo);
Creare un indice
CREATE UNIQUE INDEX nomeindice ON nometabella (attributochiave);
CREATE INDEX nomeindice ON nometabella (attributosemplice);
Eliminare una tabella
DROP TABLE nometabella;
DROP TABLE nometabella RESTRICT; operaz. Non consentita se ci sono chiavi esterne
DROP TABLE nometabelle CASCADE; elimana nometabella e tutti i rifer. collegati.
ISTRUZIONI DML
Inserire i valori in una tabella
INSERT INTO nometabella (attributo1, attributo2) VALUE (valore1, valore2);
Modificare i valori delle righe di una tabella
UPDATE nometabella SET attributo1 = espressione [WHERE condizione]; es. UPDATE azienda set ragsoc=”el20” WHERE cod=”01”;
Cancellare le righe di una tabella
DELETE FROM nometabella [WHERE condizione]
Istruzioni per reperire i dati: SELECT
SELECT [DISTINCT] attributi FROM tabelle [WHERE condizione];
Select restituisce una tabella formata dagli attributi del prodotto di tabelle ristretto alle righe che soddisfano le condizioni.
Se presente DISTINCT il risultato viene fornito privo di righe duplicate.
* se si vogliono visualizzare tutti gli attributi presenti nelle tabelle.
Intenstare le colonne usare AS.
Eseguire calcoli senza modificare le colonne SELECT pippo * 10 / 20 as nuovovalorepippo.
L’operazione di RESTRIZIONE in SQL
Viene realizzata utilizzando la clausola WHERE nel comando SELECT
SELECT * FROM nometabella WHERE stip > 100;
L’operazione di PROIEZIONE in SQL
Si realizza indicando accanto alla SELECT l’elenco degli attributi richiesti
SELECT cog, nom, stip FROM nometabella;
L’operazione di GIUNZIONE NATURALE
SELECT fa il prodotto di più tabella per ottenere la giunzione dopo la parola WHERE occorrerà indicare i nomi degli attributi che
corrispondono nelle due tabelle
SELECT * FROM nometab1, nometab2 WHERE nometab1.cod = nometab2.cod;
FUNZIONI di AGGREGAZIONE
SQL ha funzioni per ottenere conteggi, somme, calcoli, medie etc. Tali funzioni si applicano all’attributo
COUNT; MIN; MAX; SUM; AGV;
SELECT COUNT(stipendio) FROM tab1 WHERE Stipendio > 2000;
ORDINAMENTI: ORDER BY attrib [ASC|DESC], attrib1…;
RAGGRUPPAMENTI: GROUP BY attrib, attrib1 [HAVING condizione]; viene eseguito il prodotto delle tabelle presenti; su tale
prodotto si effettua una restrizione data dalla clausola WHERE; la tabella risultante viene partizionata in gruppi di righe. Le righe sono
dello stesso gruppo se hanno gli stessi valori per gli attributi specificati nella clausola GROUP BY; tutti i ruppi che non soddisfano la
clausola HAVING vengolo eliminati. SELECT livello, SUM(stip) FROM tab1 GROUP BY livello.
Il VALORE NULL: si controlla con IS NULL oppure IS NOT NULL.
Interrogazioni annidate e sottointerrogazioni:
SELECT attrib1 FROM tab1, (SELECT cod2 FROM tab2 WHERE Codice = ‘10’) AS tab3 WHERE tab3.cod2 = tab1.cod2;
Conservazione dati parziali inserire INTO: SELECT * INTO nuova tabella FROM vecchiatabella WHERE condizione;
ISTRUZIONI DCL di SQL
Diritti di accesso ai dati:
GRANT elencoprivilegi ON nometabella TO elencoautorizzati [PUBLIC]
Elencopriviligi = SELECt, INSERT, UPDATE, DELETE etc. con PUBLIC si estende a tutti gli utenti del database.
I permessi possono essere revocati
REVOKE elencoprivilegi ON nometabella TO elencoautorizzati [PUBLIC];
VISTE: CREATE VIEW nomevista AS SELECT……
Le viste non sono fisicamente memorizzate sul DB
Architettura di un DBMS
Che cosa è un DBMS.
Dati e Metadati (informazioni sulla struttura dei dati, indici)
Composizione DBMS: Gestore Interfaccia; Gestore Interrogazioni; Gestore Transazioni; Gest. Memoria; Gest. Guasti.