dia2sql
La doc sur l'utilisation de dia pour générer du sql est rare…
doc officielle de tedia2sql (en), mais tedia2sql ne sait plus faire d'export sql depuis dia 0.97 (qui est la version de squeeze). Il faut utiliser parsediasql (aka Parse::Dia::SQL), dispo en v 0.16 dans squeeze (paquet libparse-dia-sql-perl).
http://left.subtree.org/2007/12/05/database-design-with-dia/ est un petit tutoriel pour débuter.
Résumé
Un truc qui peut être énervant, pas moyen de modifier une “boite”… il faut choisir l'outil “curseur” (qui revient ensuite à “flèche de sélection”, qui permet d'afficher les propriétés au double clic mais pas d'éditer le contenu).
Choisir tedia2sql dans le menu déroulant de la palette d'outils de dia restreint aux boutons qui vont bien, mais UML marche aussi.
- primary key : mettre l'attribut en “protected”
- index : onglet opérations, type : “index” ou “unique index”, ajouter en paramètres les champs concernés
- auto_increment : c'est spécifique à mysql, il faut utiliser l'outil “Small Package” de “UML” (il s'appelle “Séquences” dans “tedia2sql”), et mettre “mysql: typemap” en Stereotype, avec comme valeur par ex “id_auto : int unsigned auto_increment;”, qui va crée le type de colonne interne à dia “id_auto”.
- foreign key : faut utiliser les relations, pas bien clair…
- jeu de données : c'est l'outil composant, mettre dans propriétés/stéréotype “ma_table(champs1, champs2)” et dans la boite les valeurs, une par ligne (comme elles seront écrites dans les parenthèses de VALUES() de la requête)
- vues : il faut cocher “abstraite” pour la classe, préciser la table concernée en opération de type “from” (et la notation table.champ s'il y a plusieurs tables), et mettre les where en opération (de type “where”, idem pour order, avec des parenthèse autour de la condition ⇒ name : “(champ1 > 1)”; type : “where”)