Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Basi dati stampa
1. Basi di Dati
Alan Giacomin
Maggio 2009
Alan Giacomin Basi di Dati Maggio 2009 1 / 54
2. Basi di dati
1 Raccolta e analisi requisiti
Raccolta requisiti
Requisiti strutturati
Schema ER
2 Ristrutturazione
Generalizzazioni
Ridondanze
Schema ER ristrutturato
Schema logico
3 Implementazione SQL
Creazione tabelle
Interrogazioni
Alan Giacomin Basi di Dati Maggio 2009 2 / 54
3. Raccolta e analisi requisiti Raccolta requisiti
Raccolta requisiti
Mini-mondo
Colloqui
Questionari
Dati raccolti a livello informale
Sinonimi
Concetti non chiari
Alan Giacomin Basi di Dati Maggio 2009 4 / 54
4. Raccolta e analisi requisiti Raccolta requisiti
Esempio - Raccolta requisiti
Una società vuole gestire l’attività
di videonoleggio. I video noleg-
giabili possono essere cd o dvd
e sono identificabili attraverso un
codice, oltre ad avere un proprio
titolo e dati relativi alla durata e
qualità. Possono noleggiare film
solamente i possessori di tessera
ricaricabile dalla quale alla con-
segna viene scalato un importo in
base al tempo passato dal ritiro.
Le tessere sono personali dell’u-
tente che ne richiede una. Dei
clienti si desidera tenere traccia
dei suoi dati anagrafici (cf, cogno-
me, nome). Di ciascun video no-
leggiato memorizziamo un codi-
ce, l’utente noleggiante e l’impor-
to pagato. Per tutti i video si vuo-
le conoscere il numero di noleg-
gi effettuati. Un video non può
essere noleggiato da più utenti
contemporaneamente.
Alan Giacomin Basi di Dati Maggio 2009 5 / 54
5. Raccolta e analisi requisiti Requisiti strutturati
Requisiti strutturati
Suddivisione per concetti
Raggruppamento per frasi
Struttura frasi standard
“Per <concetto> rappresentiamo ...”
Alan Giacomin Basi di Dati Maggio 2009 7 / 54
6. Raccolta e analisi requisiti Requisiti strutturati
Esempio - Requisiti strutturati
Per video rappresentiamo
un codice identificatore,
titolo, durata e qualità. Si
vuole conoscere anche il
numero di volte che è stato
noleggiato. Possono
essere cd o dvd. Più utenti
non possono noleggiare lo
stesso video assieme.
Per utente rappresentiamo
cf, cognome, nome. Ogni
utente ha una tessera.
Per noleggio
rappresentiamo un codice,
il video, l’utente, data e ora
del ritiro e consegna.
Per tessera
rappresentiamo un codice
identificativo, l’utente
possessore ed il credito
residuo.
Alan Giacomin Basi di Dati Maggio 2009 8 / 54
7. Raccolta e analisi requisiti Schema ER
Schema ER
Spiegazione generale
Dai concetti alle entità
Buon punto di inizio
Prime associazioni
Immediate
Cardinalità ricavate dai
requisiti
Analizzare bene i requisiti
strutturati e terminare lo
schema
Documentare quanto non
rappresentabile
Vincoli
Derivazioni/ridondanze
Documentare scelte per
punti non espressi nei
requisiti
Attenersi a quel che viene
richiesto, non si aggiunge
niente (ad esempio gestione
ricariche)
Alan Giacomin Basi di Dati Maggio 2009 10 / 54
8. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (1)
Per video rappresentiamo un codice identificatore, titolo, durata e
qualità. Si vuole conoscere anche il numero di volte che è stato
noleggiato. Possono essere cd o dvd.
Alan Giacomin Basi di Dati Maggio 2009 11 / 54
9. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (2)
Per utente rappresentiamo cf, cognome, nome. Ogni utente ha una
tessera. Per tessera rappresentiamo un codice identificativo, l’utente
possessore ed il credito residuo.
Alan Giacomin Basi di Dati Maggio 2009 12 / 54
10. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (3)
Per noleggio rappresentiamo un codice, il video, l’utente, data e ora del
ritiro e consegna.
Alan Giacomin Basi di Dati Maggio 2009 13 / 54
11. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (4)
Non è specificato ma si suppone che nel tempo lo stesso video viene
noleggiato più volte. Analogamente si suppone che un utente effettui
più noleggi.
Alan Giacomin Basi di Dati Maggio 2009 14 / 54
12. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (5)
Alan Giacomin Basi di Dati Maggio 2009 15 / 54
13. Raccolta e analisi requisiti Schema ER
Esempio - Schema ER (6)
Regole di vincolo
Un video non deve essere noleggiato se un utente lo ha già noleggiato
ed ancora non consegnato
Regole di derivazione
Il numero di noleggi per un video si ottiene contando il numero di
occorrenze di Noleggio a cui Video partecipa.
Alan Giacomin Basi di Dati Maggio 2009 16 / 54
14. Ristrutturazione Generalizzazioni
Generalizzazioni
Ristrutturazione necessaria in quanto non sono traducibili a livello
logico
Si possono rimuovere adottando più tecniche
Accorpamento entità figlie nel padre
Accorpamento entità padre nelle figlie
Sostituzione generalizzazione con associazioni
Composizione delle precedenti
Alan Giacomin Basi di Dati Maggio 2009 18 / 54
16. Ristrutturazione Generalizzazioni
Generalizzazioni (Figlie -> Padre)
Si sceglie quando l’applicazione accede maggiormente al
concetto generale anzichè ai singoli sottotipi
+ minor numero di accessi
- presenza di valori nulli
- aggiunta attributo (tipo)
- aggiunta regola di vincolo
Alan Giacomin Basi di Dati Maggio 2009 20 / 54
18. Ristrutturazione Generalizzazioni
Generalizzazioni (Padre -> Figlie)
Si sceglie quando si accede spesso ad un dettaglio rispetto
all’intero concetto
Porre attenzione se la generalizzazione non è totale
+ assenza valori nulli
+ minor numero di accessi
- duplicazione associazioni legate al padre
Alan Giacomin Basi di Dati Maggio 2009 22 / 54
20. Ristrutturazione Generalizzazioni
Generalizzazioni (Associazioni)
Si sceglie quando l’applicazione accede equamente al padre ed
alle figlie
+ assenza valori nulli
- maggior numero di accessi
- aggiunta attributo (tipo)
- aggiunta regola di vincolo
Alan Giacomin Basi di Dati Maggio 2009 24 / 54
22. Ristrutturazione Generalizzazioni
Generalizzazioni (Composizione)
Si sceglie per combinare pro e contro di tecniche differenti
Ad esempio accorpare una figlia nel padre e creare
un’associazione tra la seconda figlia ed il padre
Alan Giacomin Basi di Dati Maggio 2009 26 / 54
24. Ristrutturazione Generalizzazioni
Esempio - Generalizzazione
Nel nostro esempio abbiamo una generalizzazione di Video che si
suddivide in cd e dvd
Le entità figlie non sono particolarmente interessate
dall’applicazione
Le entità figlie non hanno attributi propri
Si sceglie quindi di accorpare le figlie nel padre
Alan Giacomin Basi di Dati Maggio 2009 28 / 54
26. Ristrutturazione Ridondanze
Ridondanze
Sono utili perchè in fase di visualizzazione un dato è facilmente
accessibile senza tanti conti
In fase di inserimento dati è necessario ricordare di aggiornare tali
valori
Tenere o lasciare le ridondanze?
Alan Giacomin Basi di Dati Maggio 2009 31 / 54
28. Ristrutturazione Ridondanze
Esempio - Tavole volumi
Supponiamo di avere 500 video disponibili e 200 utenti. Ogni utente
noleggia una media di 5 video.
Entità Volume
Utente 200
Video 500
Tessera 200
Noleggio 1000
Alan Giacomin Basi di Dati Maggio 2009 33 / 54
29. Ristrutturazione Ridondanze
Tavole delle operazioni
Evidenzia le operazioni più frequenti
Permette di trovare le operazioni che incidono sulle ridondanze
Descrizione Frequenza
OP1 Memorizzare un dato in AAA 1/giorno
OP2 Visualizzare tutti i dati di BBB 1/mese
Alan Giacomin Basi di Dati Maggio 2009 34 / 54
30. Ristrutturazione Ridondanze
Esempio - Tavole delle operazioni
Nel nostro esempio possiamo ipotizzare le seguenti operazioni.
Descrizione Frequenza
OP1 Inserire nuovo utente 1/giorno
OP2 Inserire nuovo video 1/mese
OP3 Noleggiare un video 3/giorno
OP4 Visualizzare info video 1/mese
Alan Giacomin Basi di Dati Maggio 2009 35 / 54
31. Ristrutturazione Ridondanze
Tavola degli accessi
Utili nelle analisi delle ridondanze nelle singole operazioni
Vengono utilizzate per ricavare il numero totale di accessi
Gli accessi in scrittura vengono contati doppi
Alan Giacomin Basi di Dati Maggio 2009 36 / 54
32. Ristrutturazione Ridondanze
Tavola degli accessi
Ipotizziamo un inserimento in AAA con un codice preso in BBB (20
elementi, 3/giorno)
Concetto Tipo Accessi
BBB L 1
AAA S 20
Operazione: 41
Totale: 123/giorno
Alan Giacomin Basi di Dati Maggio 2009 37 / 54
33. Ristrutturazione Ridondanze
Esempio - Tavole degli accessi
Tra le nostre operazioni solo due agisono sulla ridondanza presente
Descrizione Frequenza
OP3 Noleggiare un video 3/giorno
OP4 Visualizzare info video 1/mese
Alan Giacomin Basi di Dati Maggio 2009 38 / 54
34. Ristrutturazione Ridondanze
Esempio - Tavole degli accessi
OP3 con ridondanza OP3 senza ridondanza
Concetto Tipo Accessi
Video L 1
Utente L 1
Noleggio S 1
Video S 1
Operazione: 6
Totale: 6570/anno
Concetto Tipo Accessi
Video L 1
Utente L 1
Noleggio S 1
Operazione: 4
Totale: 4380/anno
Alan Giacomin Basi di Dati Maggio 2009 39 / 54
35. Ristrutturazione Ridondanze
Esempio - Tavole degli accessi
OP4 con ridondanza OP4 senza ridondanza
Concetto Tipo Accessi
Video L 500
Operazione: 500
Totale: 6000/anno
Concetto Tipo Accessi
Video L 500
Noleggio L 1000
Operazione: 1500
Totale: 18000/anno
Alan Giacomin Basi di Dati Maggio 2009 40 / 54
36. Ristrutturazione Ridondanze
Esempio - Tavole degli accessi
Riassumendo...
Con ridondanza Senza ridondanza
OP3 6570
OP4 6000
Totale 12570
OP3 4380
OP4 18000
Totale 22380
Decisione: Teniamo la ridondanza
Alan Giacomin Basi di Dati Maggio 2009 41 / 54
37. Ristrutturazione Schema ER ristrutturato
Schema ER ristrutturato
Alan Giacomin Basi di Dati Maggio 2009 43 / 54
39. Implementazione SQL Creazione tabelle
Tabella Video
CREATE TABLE video (
codice INTEGER,
titolo VARCHAR(255),
durata INTEGER,
qualita VARCHAR(255),
noleggi INTEGER,
tipo VARCHAR(5),
PRIMARY KEY (codice)
);
Alan Giacomin Basi di Dati Maggio 2009 47 / 54
40. Implementazione SQL Creazione tabelle
Tabella Tessera
CREATE TABLE tessera (
codice INTEGER,
importo FLOAT,
PRIMARY KEY (codice)
);
Alan Giacomin Basi di Dati Maggio 2009 48 / 54
41. Implementazione SQL Creazione tabelle
Tabella Utente
CREATE TABLE utente (
cf CHAR(15),
cognome VARCHAR(255),
nome VARCHAR(255),
PRIMARY KEY (cf),
FOREIGN KEY (tessera) REFERENCES tessera (codice)
);
Alan Giacomin Basi di Dati Maggio 2009 49 / 54
42. Implementazione SQL Creazione tabelle
Tabella Noleggio
CREATE TABLE noleggio (
codice INTEGER,
ritiro DATE,
consegna DATE,
utente CHAR(15),
video INTEGER,
PRIMARY KEY (codice),
FOREIGN KEY (utente) REFERENCES utente (cf),
FOREIGN KEY (video) REFERENCES video (codice)
);
Alan Giacomin Basi di Dati Maggio 2009 50 / 54
43. Implementazione SQL Interrogazioni
Interrogazioni
Visualizzazione informazioni video
SELECT v.codice, titolo, COUNT(*) AS noleggi
FROM video AS v
JOIN noleggio AS n ON n.video=v.codice
GROUP BY v.codice, titolo
ORDER BY titolo;
Alan Giacomin Basi di Dati Maggio 2009 52 / 54
44. Implementazione SQL Interrogazioni
Interrogazioni
Visualizzazione noleggi di Bianchi Silvio
SELECT DISTINCT titolo
FROM video AS v
JOIN noleggio AS n ON n.video=v.codice
JOIN utente AS u ON u.cf=n.utente
WHERE u.cognome=’Bianchi’
AND u.nome=’Silvio’
ORDER BY titolo;
Alan Giacomin Basi di Dati Maggio 2009 53 / 54
45. Implementazione SQL Interrogazioni
FINE
Autore
Alan Giacomin
Contatti
email: alan.giacomin@gmail.com
web: http://easyprog.altervista.org
Chat
msn: alan.giacomin@gmail.com
skype: alan.giacomin
Alan Giacomin Basi di Dati Maggio 2009 54 / 54