Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS •...

13
Matteo Picozzi http://home.dei.polimi.it/picozzi {[email protected] } Tutorial Basi di Dati 1 Esercitazione 5 08/01/2013

Transcript of Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS •...

Page 1: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Matteo Picozzihttp://home.dei.polimi.it/picozzi

{[email protected]}

TutorialBasi di Dati 1

Esercitazione 508/01/2013

Page 2: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Strumenti necessari

• Community Server (DBMS)- http://www.mysql.it/downloads/mysql/

• Workbench (GUI Tool)- http://www.mysql.it/downloads/workbench/

• Connectors (questo vi servirà in futuro)- http://www.mysql.it/downloads/connector/

• Manuali- http://dev.mysql.com/doc/refman/5.6/en/

2

Page 3: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

DBMS

• Il server deve essere avviato• Solitamente ascolta alla porta 3306• Si può interagire con il server tramite

- Terminale- GUI Tool (Workbench, Navicat, ...)- Web Application (e.g., PHP MyAdmin)- Codice (Java, C, C++, PHP, Ruby, Python, Perl)

3

Page 4: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

GUI Tool4

Page 5: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Esempio usato per il tutorial• Progettare un database per un’azienda che deve comprare e gestire la vendita di

diversi prodotti in tutto il mondo. L’azienda gestisce diversi prodotti che sono costituiti da una o più parti, prodotte da fornitori dislocati in tutto il mondo.

• I clienti dell’azienda, aziende a loro volta, devono essere rappresentati con codice identificativo, nome, indirizzo, numero di telefono, account balance, segmento di mercato e commenti.

• I clienti possono ordinare dei prodotti. Si è interessati a tenere traccia di codice dell’ordine, stato, data, priorità di ordine e consegna dell’ordine, prezzo totale, impiegato che ha gestito l’ordine ed eventuali commenti.

• Il prodotto ordinato (line item), costituito da diverse parti, è rappresentato tramite un numero identificativo, quantità di prodotti per ordine, prezzo, eventuale sconto, tasse, flag di ritorno, stato della linea, data di spedizione, data di commit, data di ricezione, istruzioni per la spedizione, modalità di spedizione ed eventuali commenti.

• Ogni fornitore è rappresentato con un identificatore univoco, nome, indirizzo, telefono, account balance e commento.

• Ogni parte dei prodotti è rappresentata tramite codice, nome, produttore, marchio, tipo, dimensione, prezzo di vendita, contenitore e commenti e, ogni fornitore, ne fornisce una certa quantità ad un prezzo di vendita e con la possibilità di annotare commenti. Una stessa parte può essere prodotta da più fornitori.

• Le nazioni e le aree geografiche sono rappresentate con una chiave, un nome e un commento. Ogni regione appartiene ad un’area geografica.

5

Page 6: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Progetto Concettuale6

REGIONNATIONSUPPLIER

PART

CUSTOMER

ORDER

belong belongNati

onKey

NameCom

ment

Region

Key

NameCom

ment

SuppK

ey

NameAdd

ress

PhoneAcct

Bal

Commen

t

PartKey

NameMFGR

BrandTy

peSize

CommentContainerRetailPrice

CommentSupplyCostAvailQty

parts

upp

belong

(1, 1) (1, n) (1, 1) (1, n)

(1, n)

(1, 1)

(1, n)

(1, 1)(1, n)

(1, n)

LINEITEMbelongbelong

makeLin

eNum

ber

Quanti

ty

Extend

edPric

e

Discou

nt

Tax

ReturnF

lag

LineStatus

ShipDate

CommitDate

ReceiptDate

ShipInstruct

ShipMode

Comment

(1, 1)(1, 1)

(1, n)

(1, n)

CustKey

NameAdd

ress

PhoneAcct

Bal

MktSeg

ment

Commen

t

OrderKey

OrderStatus

TotalPrice

OrderPriority

OrderDate

Clerk

ShipPriorityComment

Page 7: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Notazioni

• NOMI_TABELLE• PAROLE CHIAVE• NomiCampi• ‘Stringa’• Data: AAAA-MM-GG

7

Page 8: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Progetto Logico

PART(PartKey, Name, MFGR, Brand, Type, Size, Container, RetailPrice, Comment)SUPPLIER(SuppKey, Name, Address, NationKey, Phone, AcctBal, Comment)PARTSUPP(PartKey, SuppKey, AvailQty, SupplyCost, Comment)CUSTOMER(CustKey, Name, Address, NationKey, Phone, AcctBal, MktSegment, Comment)ORDERS(OrderKey, CustKey, OrderStatus, TotalPrice, OrderDate, OrderPriority, Clerk, ShipPriority, Comment)LINEITEM(OrderKey, PartKey, SuppKey, LineNumber, Quantity, ExtedndePrice, Discount, Tax, ReturnFlag, LineStatus, ShipDate,commitDate, ReceiptDate, ShipInstruct, ShipMode, Comment)NATION(NationKey, Name, RegionKey, Comment)REGION(RegionKey, Name, Comment)

8

Page 9: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Progetto Fisico - Schema del DB• Non è un

diagramma E-R• Non rappresenta il

progetto concettuale

• È più simile al progetto logico

• Rappresenta l’implementazione lo schema delle tabelle usate nel DB

9

Page 10: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

DDL e dump

• In riferimento alle pagine 13 e seguenti del documento TPC BENCHMARK è possibile scrivere il codice SQL per creare le tabelle.

• Per importare i dati utilizzare il dump corrispondente.

• Il dump contiene:- definizione dello schema (creazione delle tabelle)- inserimento dei dati

• Provare a definire le tabelle a mano e poi inserire i dati copiando le INSERT dal dump.

10

Page 11: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Qualche query 1/3

• Pricing Summary Report- Questa query fornisce un sommario dei prezzi per tutti i

lineitems spediti 90 giorni prima di una particolare data.

- La query ritorna i totali di prezzo pieno, prezzo pieno scontato, prezzo pieno scontato più le tasse, la quantità media, il prezzo esteso medio, e lo sconto medio aggregando per flag di ritorno e stato della linea, ordinando per gli stessi attributi. È da includere nel risultato il conto degli elementi inclusi in ogni gruppo.

11

Page 12: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Qualche query 2/3

• Minimum Cost Supplier- La query trova quali fornitori debbano essere

selezionati perché forniscono un particolare pezzo (‘BRASS’) di una particolare misura (tra 10 e 20) in una determinata regione (‘EUROPE’) al prezzo più basso.

- Per ogni fornitore selezionato la query ritorna l’account balance, il nome, l’indirizzo, il numero di telefono, i commenti e la nazione di provenienza del fornitore, il codice e il costruttore del pezzo.

12

Page 13: Tutorial - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/basididati/05 Tutorial.pdf · DBMS • Il server deve essere avviato • Solitamente ascolta alla porta 3306 • Si può

Qualche query 3/3

• Order Priority Checking- Questa query permette di determinare quanto bene

lavori il sistema che gestisce la priorità degli ordini come misura della soddisfazione del cliente

- Contare il numero di ordini ordinati in un particolare quarto dell’anno in cui almeno un lineitem è stato ricevuto dal cliente in ritardo rispetto alla data di commit prevista. Restituire la lista di del conto di tali ordini per ogni priorità, orinata in ordine crescente.

13