1
DB-MAIN CASE tool
Un tool per la progettazione di DB relazionalihttp://www.info.fundp.ac.be/~dbm/tool.shtml
dott.ssa Alessandra Lumini 2
DB-MAIN case-tool: funzionalità
Tool di supporto al system engineering:attività di forward and reverse engineeringsupporto alla modellizzazione
concettualelogicafisica
generazione di codice SQL e di reportpossibilità di automatizzare le procedure
analisi di schemiintegrazione di schemireverse engineering
2
dott.ssa Alessandra Lumini 3
Un caso di studio
Si vuole automatizzare la gestione dei corsi in una facoltà universitaria. La facoltà prevede diversi corsi, caratterizzati da un codice e da un nome. Ciascun corso è tenuto da un solo docente, di cui si vogliono memorizzare il codice, il nome, il cognome, il codice fiscale, l’indirizzo (opzionale) e fino a 5 recapiti telefonici. Di ciascun corso si vuole memorizzare l’orario settimanale (2 o 3 lezioni in ore e aule diverse). La gestione degli esami prevede un’iscrizione agli appelli (per un massimo di 50 studenti per appello) e in caso di superamento, la memorizzazione di data e voto. L’iscrizione a un esame è vincolata al superamento di determinati esami che per un corso sono considerati propedeutici. Gli studenti iscritti sono identificati da un numero di matricola e caratterizzati da nome, cognome, codice fiscale, indirizzo (opzionale) e fino a 5 recapiti telefonici.
dott.ssa Alessandra Lumini 4
L’ambiente di lavoro
Eseguire DB-main.exe
Creare un nuovo progetto
o aprire un progetto esistente
3
dott.ssa Alessandra Lumini 5
Progettazione Concettuale
Creazione di un nuovo schema:Comando “Product/New Schema”Versione: Schema Concettuale
Nel progetto viene inserita una nuova finestra in cui disegnare lo schema
dott.ssa Alessandra Lumini 6
Definizione di entità
Creazione di una nuova entitàentità
Definizione del nomenome
Definizione degli attributiattributiLa cardinalitàcardinalità di un attributo consente di esprimere se puòassumere valore NULL
4
dott.ssa Alessandra Lumini 7
Definizione di attributi
Diversi tipi di attributi
semplicisemplici
multiplimultipli
composticomposti
composti e ripetuticomposti e ripetuti
PersonaCognomeNome
1 nome2 nome
Indirizzo[0-5]vianumerocittàcap
Telefono[0-5]
permette di aggiungere sotto-attributi agli attributi composti
selezione del dominio su cui è definito l’attributo(type=“compound” per attributi composti) cardinalità
dell’attributo
dott.ssa Alessandra Lumini 8
Definizione di associazioni
Selezionare lo strumento “RoleRole||RelRel--typetype “
Trainare un collegamento tra le due entità coinvolteDefinire il nome nome dell’associazioneAggiungere eventuali attributiDefinire le cardinalità:
è sufficiente fare doppio-click sul relativo campo per modificarne il valore (dopo aver deselezionato )
5
dott.ssa Alessandra Lumini 9
Associazioni n-arie
Selezionare lo strumento “Role|Rel-type“
Trainare un collegamento tra due delle entità coinvolte
Trainare un collegamentocollegamento tra la nuova associazione e la terza entità
dott.ssa Alessandra Lumini 10
Associazioni: anelli
Selezionare lo strumento “Rel-type“
Disegnare una nuova associazioneassociazione
Selezionare lo strumento “Role|Rel-type“
Trainare 2 collegamenti tra entità e associazione
Definire i ruoli ruoli dell’entità nell’associazione
6
dott.ssa Alessandra Lumini 11
Definizione delle chiavi primarie
Selezione degli attributi chiavedi una entitàDefinizione del vincolo di chiave primaria
Chiavi primarie multiple si ottengono evidenziando più attributiChiavi primarie composte si ottengono evidenziando la cardinalità sulla relazione e l’attributo sull’entità entità
Premere il pulsante È possibile definire chiavi alternative con la stessa procedura
IDIDIDID
dott.ssa Alessandra Lumini 12
Altri vincoli: i gruppi
Vincoli di GRUPPOSelezione degli attributi che fanno parte di un gruppoPremere il pulsante Impostare i vincoli nell’apposita finestra
CoexistenceCoexistencedevono comparire tutti
ExclusiveExclusivesolo uno del gruppo
AtAt--leastleast--oneonealmeno 1 del gruppo
ExactlyExactly--oneoneExclusive+At-least-one
Questi vincoli possono essere aggiunti anche nel progetto logico
GRGRGRGR
7
dott.ssa Alessandra Lumini 13
Definizione delle gerarchie
Definire le entità coinvolte nella gerarchiaSelezionare le proprietà di una delle entità figlie (doppio-click sull’entità)Aggiungere l’entità padre nell’elenco dei SupertypesSupertypesÈ possibile esprimere la tipologia della gerarchia nelle proprietà dell’entità padrepadre
totale-parziale (total)esclusiva- sovrapposta (disjoint)
dott.ssa Alessandra Lumini 14
Tipi di gerarchie
T = Total (totale e sovrapposta)P = Partition (totale e disgiunta)D = Disjoint (parziale e disgiunta)
(parziale e sovrapposta)
8
dott.ssa Alessandra Lumini 15
Formati di visualizzazione
Visualizzazione in formato graficografico o testualetestuale
dott.ssa Alessandra Lumini 16
Documentare lo schema
È possibile documentare lo schema inserendo un commento nelle finestra Semantic DescriptionSemantic Description associata a ciascun oggetto
Nella finestra proprietàTasto della toolbar
Per visualizzare il reportreport:
Visualizzazione testualeFile/Report/Textual view
SEM
9
dott.ssa Alessandra Lumini 17
Creare il DB associato
È possibile ottenere una traduzione in SQL dello schema concettuale
Selezionare il comando “TransformTransform\\QuickQuick SQLSQL”Salvare il file di testo Il progetto contiene nel nuovo filefile le istruzioni SQL DDL per generare il DB
dott.ssa Alessandra Lumini 18
Tool Grafici
Comandi grafici disponibili (“Windows/Graphical Tools”)
Copia e incolla come metafile
Allineamento degli oggetti grafici
Cambiamento ordine degli attributi (tasti ALT+ )
Generazione di Report (“File/Report/”)
CopyGrap
10
dott.ssa Alessandra Lumini 19
Eseguire il progetto logico
Obiettivo: trasformare lo schema concettuale in uno schema SQLSQL--compliant compliant
ogni sua componente può essere direttamente e esplicitamente rappresentata mediante un oggetto relazionale
Uno schema SQL-compliant NONNON comprende:gerarchieassociazioniattributi compostiattributi multi-valore (multipli)
Uno schema SQL-compliant comprende solo:entitàattributi atomici a valori singoliidentificatoriattributi importati
tabellacolonnachiavechiave importatamodello relazionalemodello relazionale
dott.ssa Alessandra Lumini 20
Eliminazione delle associazioni 1-N
Trasformazione di una relazione 1-N in un attributo importato
SelezionareSelezionare la relazione da trasformareEseguire il comando “TransformTransform\\RelRel--TypeType\\AttributeAttribute”Scegliere la direzionedirezionedell’importazioneAssegnare un nomenome all’attributo importato
1-1
0-N
tiene
docenteCodDocid: CodDoc
corsiIDCorsoNome
docenteCodDocid: CodDoc
corsiIDCorsoNomeCodDocref: CodDoc
11
dott.ssa Alessandra Lumini 21
Eliminazione delle associazioni N-M
Trasformazione di una relazione M-N in una nuova entità
SelezionareSelezionare la relazione da trasformareEseguire il comando “TransformTransform\\RelRel--TypeType\\EntityEntity typetype”Assegnare un nomenome alla nuova entità e alle 2 relazioni 1-N
Le due relazioni 1-N devono essere trasformate in attributi importati
0-N 0-Nesamedatavoto
studentiMatricolaid: Matricola
corsiIDCorsoNome
1-10-N da 1-1 0-Ndi
studentiMatricolaid: Matricola
esamedatavotoid: da.studenti
di.corsi
corsiIDCorsoNome
dott.ssa Alessandra Lumini 22
Eliminazione di associazioni complesse
La trasformazione Associazione Entità (TransformTransform\\RelRel--TypeType\\Entity Entity typetype) può essere utilizzata per trasformare relazione di qualsiasi tipo:
associazioni N-arie (con grado maggiore di 2)associazioni con attributiassociazioni 1-Nassociazioni 1 a 1auto-anelli
1-3
0-400-N si tienegiornogiorno
aulanome
corsiIDCorsoNome
1-10-N quando
1-1
1-3
quale
1-10-40dove
si tieneid: quale.corsi
dove.aulaquando.giorno
giornogiorno
corsiIDCorsoNome
aulanome
12
dott.ssa Alessandra Lumini 23
Rimozione attributi composti e multi-valore
Eliminazione di attributi multi-valore: gli attributi vengono trasformati in entità
SelezionareSelezionare l’attributoEseguire il comando “TransformTransform\\AttributeAttribute\\EntityEntity--TypeType”
Instance representation = la nuova entità è in associazione 1-1 con la vecchiaValue representation = la nuova entità è in associazione 1-N con la vecchia, contiene i valori che l’attributo può assumere
Eliminazione di attributi composti (semplici): gli attributi composti vengono disaggregati
SelezionareSelezionare l’attributoEseguire il comando “TransformTransform\\AttributeAttribute\\DisaggregationDisaggregation”
dott.ssa Alessandra Lumini 24
Rimozione delle gerarchie
Rimozione di una gerarchiaSelezionareSelezionare l’entità padreEseguire il comando “TransformTransform\\EntityEntity\\IsIs--AA-->>RelRel--TypeType””Le associazione devono essere poi eliminate
P
studentiMatricolaid: Matricola
personeCodiceFiscaleCognomeNomeTelefono[0-5]id: CodiceFiscale
docenteCodDocid: CodDoc
1-1
0-1
per_stu
1-1
0-1
per_doc
studentiMatricolaid: Matricola
personeCodiceFiscaleCognomeNomeTelefono[0-5]id: CodiceFiscaleexact-1: per_stu.studenti
per_doc.docente
docenteCodDocid: CodDoc
13
dott.ssa Alessandra Lumini 25
Tips
Inserimento di chiavi (contatori)Il comando TransformTransform\\Entity typeEntity type\\Add Add Tech IdTech Id aggiunge un attributo chiave (contatore) a una entità
Mantenimento valori di cardinalitàDurante la trasformazione da associazione ad attributo il valore delle cardinalitàcardinalità è memorizzato nelle proprietà di gruppoproprietà di gruppodell’attributo generato
1-1
0-6
tiene
docenteCodDocid: CodDoc
corsiIDCorsoNome
docenteCodDocid: CodDoc
corsiIDCorsoNomeCodDocref: CodDoc
dott.ssa Alessandra Lumini 26
Procedura di trasformazione
Rimozione delle gerarchie trasformazione in associazionicollasso verso l’altocollasso verso il basso
Rimozione di associazioni n-arie e binarie N-Mcreazione di una nuova entità e più associazioni 1-N
Eliminazione di attributi multivalore/composti
Trasformazione delle associazioni 1-N in attributi importati
14
dott.ssa Alessandra Lumini 27
Generare lo schema logico in un passo
Fare una copia dello schema concettuale
Selezionare lo schema concettualeComando “Product/Copy Product”Versione: Schema Logico
Nel progetto viene inserito un nuovo schema
Selezionare in nuovo schemaComando “Transform/RelationalModel”
dott.ssa Alessandra Lumini 28
Un altro modo di generare codice SQL
È possibile ottenere una traduzione in SQL dello schema logico
Selezionare il comando “File\Generate|StandardSQL (check)”Salvare il file di testo Il progetto contiene nel nuovo filefile le istruzioni SQL DDL per generare il DB
15
dott.ssa Alessandra Lumini 29
Reverse Engineering
Da istruzioni SQL al modello relazionale:Aprire il file SQLEseguire il comando “File/Extract/SQL”
Dal modello relazionale allo schema E/R:trasformare in associazioni gli attributi esterni
selezionare il gruppo “refref”comando “Transform/Group/Rel-type”
trasformare le entità in associazioni N-M se le chiave è esterna
comando “Transform/Entity-type/Rel-type”
…
Automatizzazione delle procedure:comando “Assist/Global Trasformation”
Applica a tutti i casi possibili la trasformazione selezionata
CORSIIDCORSONOMECODDOCid: IDCORSO
acc ref: CODDOC
acc
DOCENTECODDOCCODICEFISCALEid: CODDOC
acc id': CODICEFISCALE
acc
1-1
insegna
DOCENTECODDOCCODICEFISCALEid: CODDOC
acc id': CODICEFISCALE
acc
CORSIIDCORSONOMEid: IDCORSO
acc acc: insegna.DOCENTE
0-N
dott.ssa Alessandra Lumini 30
Altri Tools
Programma Casa link GiudizioMicrosoft Visio Microsoft www.microsoft.com/ERStudio Embarcadero www.embarcadero.com/Database Design Studio Chillisource www.chillisource.com/ERWin 4.0 Computer Associates www.ca.com/Dezign Datanamic www.datanamic.comVisible Analyst Visible www.visible.com/Silverrun ERX Silverrun www.silverrun.com/Case 4/0 v5 Microtool www.microtool.de/Power Desiger sybase www.sybase.comCAST AppViewer Cast www.castsoftware.com/InfoVisor ER-Designer InfoVisor infovisor.ivanovo.ru/RoboCase db Logic inc. www.dblogic.com/Designer 2000 Oracle www.oracle.comSystem architect popkin www.popkin.com/