La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini.

Presentazioni simili


Presentazione sul tema: "G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini."— Transcript della presentazione:

1 G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 2 G. Mecca - mecca@unibas.it - Basi di Dati Sommario m Introduzione Il Processo di Progetto della BD m Algoritmo di Progettazione Logica Traduzione delle Classi Traduzione delle Gerarchie Traduzione delle Associazioni molti a molti Traduzione delle Associazioni 1-1 e 1-molti Progettazione Logica >> Sommario

3 3 G. Mecca - mecca@unibas.it - Basi di Dati Introduzione m Siamo nella fase di progettazione si è conclusa (uniterazione del)la fase di analisi m Attività da svolgere definire larchitettura dellapplicazione definire la struttura e i metodi delle classi definire la struttura della base di dati m Fase successiva: sviluppo Progettazione Logica >> Introduzione

4 4 G. Mecca - mecca@unibas.it - Basi di Dati Il Processo di Progetto della BD m Punto di partenza il modello concettuale dei dati m Progettazione Logica dallo schema concettuale viene derivato uno schema logico standard e i necessari schemi esterni m Progettazione Fisica lo schema logico viene sottoposto a verifica e viene ottimizzato Progettazione Logica >> Introduzione

5 5 G. Mecca - mecca@unibas.it - Basi di Dati Il Processo di Progetto della BD m Progettazione logica viene condotta sulla base di un semplice algoritmo sistematico m Progettazione fisica attività mista: progettazione e tuning difficilmente sistematizzabile m In questa lezione ci concentriamo sulla progettazione logica Progettazione Logica >> Introduzione

6 6 G. Mecca - mecca@unibas.it - Basi di Dati Algoritmo di Progettazione Logica m I passo: trad. iniziale delle classi non coinvolte in gerarchie m II passo: trad. iniziale delle gerarchie m III passo: trad. degli attributi multivalore m IV passo: trad. delle assoc. molti a molti m V passo: trad. delle assoc. uno a molti m VI passo: trad. delle assoc. uno a uno m VII passo: introduzione di eventuali ulteriori vincoli m VIII passo: progettazione degli schemi esterni Progettazione Logica >> Algoritmo di Traduzione

7 7 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Algoritmo di Traduzione Studente > matricola cognome nome anno Docente cognome nome qualifica numTelefono [0..*] DocenteInterno facolta SupplenteStudente Laurea Triennale Studente Laurea Specialistica 0..*0..1 tutor > relatore > 0..*0..1 Corso > codice titolo ciclo titolarità 0..* Esame voto lode data ha sostenuto > 1 0..* < relativo a 0..*1 Schema Concettuale Tirocinio sede dataInizio durata ha svolto > 1 0..1 relatore solo se al 3 anno

8 8 G. Mecca - mecca@unibas.it - Basi di Dati Notazione Grafica per le Tabelle m Stereotipo di UML tabella e attributi chiave primaria chiave esterna m Esempio: Progettazione Logica >> Algoritmo di Traduzione FKrelatore CHAR(4) ciclo CHAR(20) anno INTEGER nome CHAR(20) cognome CHAR(20) matricola INTEGER Studente PK T … codice CHAR(4) Docente PK T CREATE TABLE Studente ( matricola integer PRIMARY KEY, cognome char(20), nome char(20), anno integer, ciclo char(20), relatore char(4) REFERENCES Docente(codice));

9 9 G. Mecca - mecca@unibas.it - Basi di Dati I Passo: Traduzione delle Classi m Idea ogni classe diventa una tabella inizialmente gli stessi attributi monovalore successivamente possono essere aggiunti altri attributi m E necessario individuare il tipo degli attributi individuare la chiave primaria individuare eventuali chiavi esterne Progettazione Logica >> Algoritmo di Traduzione

10 10 G. Mecca - mecca@unibas.it - Basi di Dati I Passo: Traduzione delle Classi m Chiave primaria deve essere semplice da usare e compatta identificatore interno esplicito (es: matricola per Studente, codice per Corso) un identificatore esterno può diventare una chiave primaria esterna (es: matricola dello studente per Tirocinio) purchè sia compatto altrimenti si aggiunge un identificatore sintetico Progettazione Logica >> Algoritmo di Traduzione

11 11 G. Mecca - mecca@unibas.it - Basi di Dati I Passo: Traduzione delle Classi Progettazione Logica >> Algoritmo di Traduzione Corso > codice titolo ciclo Esame voto lode data Tirocinio luogo dataInizio durata ciclo CHAR(20) titolo CHAR(20) codice CHAR(3) Corso PK T TirocinioT matricola INTEGERPK, FK sede CHAR(20) dataInizio DATE durata INTEGER EsameT codice CHAR(5)PK voto INTEGER lode BOOL data DATE identificatore sintetico identificatore esplicito identificatore esterno

12 12 G. Mecca - mecca@unibas.it - Basi di Dati I Passo: Traduzione delle Classi Progettazione Logica >> Algoritmo di Traduzione Corso > codice titolo ciclo ciclo CHAR(20) titolo CHAR(20) codice CHAR(3) Corso PK T {PR1, Programm. I laurea tr.} {ADS Algoritmi e Strutt. Dati laurea tr.} {INFT, Inf. Teorica laurea sp.} codicetitolociclo… PR1Programmazione Ilaurea tr.… ASDAlgoritmi e Str. Datilaurea tr.… INFTInformatica Teoricalaurea sp.…

13 13 G. Mecca - mecca@unibas.it - Basi di Dati I Passo: Traduzione delle Classi Progettazione Logica >> Algoritmo di Traduzione { Microsoft, 25/06/2002, 3 mesi } { SOGEI 1/7/2002, 4 mesi } { Microsoft, 25/06/2002, 3 mesi } Tirocinio luogo dataInizio durata TirocinioT matricola INTEGERPK, FK sede CHAR(20) dataInizio DATE durata INTEGER studentesededataIniziodurata… 444Microsoft2002-05-153… 77777Microsoft2002-05-153… 88888Basica2002-09-013…

14 14 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m E lunico passo di una certa complessità non esiste la generalizzazione nel modello relazionale m Tre possibili strade tradurre solo il padre della gerarchia tradurre solo i figli della gerarchia tradurre il padre e i figli collegandoli con chiavi esterne Progettazione Logica >> Algoritmo di Traduzione

15 15 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m I Soluzione: Solo il padre ununica tabella con il nome del padre la tabella deve avere tutti gli attributi di padre e figli serve un ulteriore attributo (es: tipo) per distinguere le istanze dei figli conveniente se le operazioni sui figli non sono particolarmente rilevanti nellappl. genera valori nulli Progettazione Logica >> Algoritmo di Traduzione

16 16 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m I Soluzione: Solo il padre Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] DocenteInterno facolta Supplente DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) facolta CHAR(10) qualifica CHAR(15) tipo CHAR(10) tipo può valere: - -interno oppure - -supplente per ora lattributo multivalore viene trascurato

17 17 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m II Soluzione: Solo i figli una tabella per ciascun figlio ciascun figlio eredita le associazioni e gli attributi del padre possibile solo se la gerarchia è completa conveniente se lapplicazione richiede spesso di accedere singolarmente ai figli costringe ad effettuare molte unioni Progettazione Logica >> Algoritmo di Traduzione

18 18 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m II Soluzione: Solo i figli Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] DocenteInterno facolta Supplente DocenteInternoT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) facolta CHAR(10) qualifica CHAR(15) SupplenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) qualifica CHAR(15)

19 19 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m III Soluzione: Sia il padre che i figli una tabella per il padre e una per ciascun figlio (per ogni istanza del figlio: parte degli attributi nella tabella specifica, parte nella tabella generale) riferimento da ciascun figlio al padre conveniente se bisogna spesso accedere tanto al padre che singolarmente ai figli costringe ad effettuare molti join Progettazione Logica >> Algoritmo di Traduzione

20 20 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m III Soluzione: Sia il padre che i figli Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] DocenteInterno facolta Supplente indirizzo DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) qualifica CHAR(15) DocenteInternoT codice CHAR(4)PK,FK facolta CHAR(10) SupplenteT codice CHAR(4) PK, FK indirizzo CHAR(20)

21 21 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m III Soluzione: Sia il padre che i figli Progettazione Logica >> Algoritmo di Traduzione codicecognomenomequalifica FTTottiFrancescoordinario CVVieriChristianassociato ADPDel PieroAlessandronull Docente codicefacolta FTIngegneria CVScienze codiceIndirizzo ADPStadio delle Alpi, Torino DocenteInternoSupplente

22 22 G. Mecca - mecca@unibas.it - Basi di Dati II Passo: Traduzione delle Gerarchie m Nel nostro esempio soluzione n.1 per i docenti ununica tabella Docente soluzione n.1 per gli studenti ununica tabella Studente Progettazione Logica >> Algoritmo di Traduzione StudenteT matricola INTEGERPK cognome CHAR(20) nome CHAR(20) anno INTEGER ciclo CHAR(15)

23 23 G. Mecca - mecca@unibas.it - Basi di Dati III Passo: Trad. degli Attributi Multiv. m Ogni attributo multivalore genera una nuova tabella chiave esterna per fare riferimento alla tabella che traduce la classe originale Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) facolta CHAR(10) qualifica CHAR(15) tipo CHAR(10) NumeriT numero CHAR(15)PK docente CHAR(4)FK

24 24 G. Mecca - mecca@unibas.it - Basi di Dati IV Passo: Trad. delle Associazioni m-m m Ogni associazione molti a molti genera una tabella riferimenti (chiavi esterne) alle tabelle che traducono le classi coinvolte eventuali attributi dellassociazione la chiave della tabella deve includere le chiavi esterne Progettazione Logica >> Algoritmo di Traduzione

25 25 G. Mecca - mecca@unibas.it - Basi di Dati IV Passo: Trad. delle Associazioni m-m Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] Corso > codice titolo ciclo titolarità 0..* 1..* DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) …… TitolaritàT corso CHAR(3)PK, FK docente CHAR(4)PK, FK primoAnnoTit INTEGER CorsoT codice CHAR(3)PK titolo CHAR(20) ciclo CHAR(20) attributo dell associazione (nel seguito omesso) primoAnnoTit

26 26 G. Mecca - mecca@unibas.it - Basi di Dati IV Passo: Trad. delle Associazioni m-m Progettazione Logica >> Algoritmo di Traduzione Docente cognome nome qualifica numTelefono [0..*] Corso > codice titolo ciclo titolarità 0..* 1..* primoAnnoTit codicecognomenome… FTTottiFrancesco… CVVieriChristian… ADPDel PieroAlessandro… codicetitolociclo PR1Programmazione Ilaurea tr. ASDAlgoritmi e Str. Datilaurea tr. INFTInformatica Teoricalaurea sp. docentecorsoprimoAnnoTit FTPR12001 CVASD2002 FTASD1999 ……

27 27 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m m Potrebbero essere tradotte con nuove tabelle sarebbe inefficiente costringerebbe a più join del normale m Generano chiavi esterne ciascuna istanza dellassociazione è identificata dalloggetto dal lato 1 chiave esterna della tabella dal lato 1 nella tabella corrispondente alla classe dal lato m Progettazione Logica >> Algoritmo di Traduzione

28 28 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m Progettazione Logica >> Algoritmo di Traduzione Corso > codice titolo ciclo Esame voto lode data < relativo a 0..*1 EsameT codice CHAR(5)PK voto INTEGER lode BOOL data DATE corso CHAR(3)FK CorsoT codice CHAR(3)PK titolo CHAR(20) ciclo CHAR(20)

29 29 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m Progettazione Logica >> Algoritmo di Traduzione StudenteT matricola INTEGERPK cognome CHAR(20) nome CHAR(20) anno INTEGER ciclo CHAR(15) relatore CHAR(4)FK Studente > matricola cognome nome anno Docente cognome nome qualifica numTelefono [0..*] relatore > 0..*0..1 DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) facolta CHAR(10) qualifica CHAR(15) tipo CHAR(10)

30 30 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m Progettazione Logica >> Algoritmo di Traduzione Studente > matricola cognome nome anno Docente cognome nome qualifica numTelefono [0..*] relatore > 0..*0..1 codicecognomenome… FTTottiFrancesco… CVVieriChristian… ADPDel PieroAlessandro… matricolacognomenome…relatore 111RossiMario…null 222NeriPaolo…null 333RossiMaria…null 444PincoPalla…FT 77777BrunoPasquale…FT 88888PincoPietro…CV

31 31 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m m Attenzione: nel caso degli studenti, lassociazione del tutorato produrrebbe un vincolo di riferimento ricorsivo (scomodo) Progettazione Logica >> Algoritmo di Traduzione Studente Laurea Triennale Studente Laurea Specialistica 0..*0..1 tutor > StudenteT matricola INTEGERPK cognome CHAR(20) nome CHAR(20) anno INTEGER relatore CHAR(4)FK tutor INTEGERFK nonostante non sia scorretta, non adotteremo questa soluzione

32 32 G. Mecca - mecca@unibas.it - Basi di Dati V Passo: Trad. delle Associazioni 1-m Progettazione Logica >> Algoritmo di Traduzione TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK Studente Laurea Triennale Studente Laurea Specialistica 0..*0..1 tutor > StudenteT matricola INTEGERPK cognome CHAR(20) nome CHAR(20) anno INTEGER relatore CHAR(4)FK

33 33 G. Mecca - mecca@unibas.it - Basi di Dati VI Passo: Trad. delle Associazioni 1-1 m Discorso simile a quelle 1 a molti posso scegliere dove mettere la chiave est. si preferisce utilizzare come chiave esterna la chiave primaria della classe la cui card. min. è 1 Progettazione Logica >> Algoritmo di Traduzione StudenteT matricola INTEGERPK …… TirocinioT matricola INTEGERPK, FK sede CHAR(20) dataInizio DATE durata INTEGER > matricola anno nome cognome Studente durata dataInizio sede Tirocinio 1 0..1 ha svolto

34 34 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Algoritmo di Traduzione TirocinioT studente INTEGERPK, FK sede CHAR(20) dataInizio DATE durata INTEGER TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudenteT matricola INTEGERPK cognome CHAR(20) nome CHAR(20) ciclo CHAR(15) anno INTEGER relatore CHAR(4)FK DocenteT codice CHAR(4)PK cognome CHAR(20) nome CHAR(20) facolta CHAR(10) qualifica CHAR(15) tipo CHAR(10) EsameT codice CHAR(5)PK voto INTEGER lode BOOL data DATE corso CHAR(3)FK stud INTEGERFK CorsoT codice CHAR(3)PK titolo CHAR(20) ciclo CHAR(20) TitolaritàT corso CHAR(3)PK, FK docente CHAR(4)PK, FK NumeriT numero CHAR(15)PK docente CHAR(4)FK

35 35 G. Mecca - mecca@unibas.it - Basi di Dati VII Passo: Aggiunta di Vincoli Ulteriori m A questo punto sono definite le tabelle gli attributi le chiavi primarie i vincoli di riferimento m Per ottenere lo schema conclusivo è possibile aggiungere altri vincoli (NOT NULL, DEFAULT, CASCADE, CHECK ecc.) Progettazione Logica >> Algoritmo di Traduzione

36 36 G. Mecca - mecca@unibas.it - Basi di Dati VII Passo: Aggiunta di Vincoli Ulteriori m In particolare le cardinalità minime danno origine a vincoli NOT NULL Esempio: Progettazione Logica >> Algoritmo di Traduzione ciclo > codice titolo Corso data lode voto Esame < relativo a 0..* 1 CREATE TABLE Esame ( codice char(5) PRIMARY KEY, corso char(3) NOT NULL REFERENCES Corso(codice),... );

37 37 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale CREATE TABLE Studente ( matricola integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Docente(codice), CHECK(relatore is NULL or anno=3 or ciclo=Laurea sp.) ); CREATE TABLE Docente ( codice char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10), tipo char(10) NOT NULL ); Lo Schema Finale

38 38 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale CREATE TABLE Esame ( codice char(5) PRIMARY KEY, studente integer NOT NULL REFERENCES Studente(matricola) ON DELETE cascade ON UPDATE cascade, corso char(3) NOT NULL REFERENCES Corsi(codice), voto integer, lode bool, data date, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), UNIQUE (studente, corso) ); CREATE TABLE Corso ( codice char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20) ); CREATE TABLE Tutorato ( studente integer REFERENCES Studente(matricola), tutor integer REFERENCES Studente(matricola), PRIMARY KEY (studente, tutor) );

39 39 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale CREATE TABLE Numeri ( numero char(9) PRIMARY KEY, docente char(4) REFERENCES Docente(codice) ); CREATE TABLE Tirocinio ( studente integer PRIMARY KEY REFERENCES Studente(matricola), sede char(20) NOT NULL, dataInizio date, durata integer ); CREATE TABLE Titolarita ( docente char(4) REFERENCES Docente(codice), corso char(3) REFERENCES Corso(codice), PRIMARY KEY (docente, corso) );

40 40 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale Una Possibile Istanza codicecognomenomequalificafacoltatipo FTTottiFrancescoordinarioIngegneriainterno CVVieriChristianassociatoScienzeinterno ADPDel PieroAlessandronull supplente matricolacognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Docente Studente

41 41 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale codicetitolociclo PR1Programmazione Ilaurea tr. ASDAlgoritmi e Str. Datilaurea tr. INFTInformatica Teoricalaurea sp. Corso studentetutor 11177777 22277777 33388888 44488888 Tutorato codicestudentecorsovotolodedata pr101111PR127false2002-06-12 asd01222ASD30true2001-12-03 inft1111INFT24false2001-09-30 pr10277777PR121false2002-06-12 asd0277777ASD20false2001-12-03 asd0388888ASD28false2002-06-13 pr10388888PR130false2002-07-01 inft288888INFT30true2001-09-30 Esame

42 42 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Lo Schema Finale numerodocente 0971205145FT 347123456FT 0971205227VC 0971205363ADP 338123456ADP Numeri docentecorso FTPR1 CVASD ADPINFT ADPPR1 FTASD TitolaritastudentesededataIniziodurata 444Microsoft2002-05-153 77777Microsoft2002-05-153 88888SOGEI2002-09-013 Tirocinio

43 43 G. Mecca - mecca@unibas.it - Basi di Dati VIII Passo: Schemi Esterni m Dallo schema logico è necessario derivare gli schemi esterni eventuali viste autorizzazioni agli utenti su tabelle e viste m Esempio: due categorie di utenti segreteria: accesso a tutti i dati docenti: accesso a dati ristretti sugli esami (es: una vista EsameSenzaVoto) Progettazione Logica >> Algoritmo di Traduzione

44 44 G. Mecca - mecca@unibas.it - Basi di Dati Sommario m Introduzione Il Processo di Progetto della BD m Algoritmo di Progettazione Logica Traduzione delle Classi Traduzione delle Gerarchie Traduzione delle Associazioni molti a molti Traduzione delle Associazioni 1-1 e 1-molti Progettazione Logica >> Sommario

45 45 G. Mecca - mecca@unibas.it - Basi di Dati Progettazione Logica >> Modello Concettuale Studente > matricola cognome nome annoDiCorso Docente cognome nome qualifica numTelefono [0..*] DocenteInterno facolta SupplenteStudente Laurea Triennale Studente Laurea Specialistica 0..*0..1 tutor > relatore > 0..*0..1 Corso > codice titolo ciclo titolarità 0..* Esame voto lode data ha sostenuto > 1 0..* < relativo a 0..*1 Schema Concettuale Tirocinio sede dataInizio durata ha svolto > 1 0..1 relatore solo se al 3 anno

46 46 G. Mecca - mecca@unibas.it - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. http://creativecommons.org/licenses/by-sa/1.0/ m m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. http://creativecommons.org/licenses/by-sa/1.0/


Scaricare ppt "G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini."

Presentazioni simili


Annunci Google