{"id":1082,"date":"2006-11-13T12:24:35","date_gmt":"2006-11-13T15:24:35","guid":{"rendered":"http:\/\/www.maurom.com\/blog\/?p=1082"},"modified":"2014-12-13T20:41:58","modified_gmt":"2014-12-13T23:41:58","slug":"obtener-sql-a-partir-de-diagramas-dia","status":"publish","type":"post","link":"https:\/\/maurom.com\/blog\/2006\/11\/13\/obtener-sql-a-partir-de-diagramas-dia\/","title":{"rendered":"Obtener SQL a partir de diagramas DIA"},"content":{"rendered":"<p>Hace bastante tiempo que vengo buscando alg\u00fan set de <a href=\"http:\/\/es.wikipedia.org\/wiki\/Herramienta_CASE\">herramientas CASE<\/a> para trabajar tranquilo pero siempre que comienzo la b\u00fasqueda me encuentro con lo mismo: pocas herramientas en el mundillo libre.<\/p>\n<p>Y habiendo asistido a una charla en la <a style=\"font-weight: bold;\" href=\"http:\/\/www.cafeconf.org\/\">CaFeConf 2006<\/a> dictada por Christian Kuroki me encuentro con que esto no es nada nuevo, y que muchos tenemos el mismo problema. El opt\u00f3 por <a style=\"font-weight: bold;\" href=\"http:\/\/uml.sourceforge.net\/\">Umbrello<\/a> y un script de su autor\u00eda denominado <a style=\"font-weight: bold;\" href=\"http:\/\/umbrello2sql.sourceforge.net\/\">umbrello2sql<\/a>, que a\u00fan no he revisado.<\/p>\n<p>En mi caso, de todas las que revis\u00e9 para edici\u00f3n de <a href=\"http:\/\/es.wikipedia.org\/wiki\/DER\">Diagramas de Entidad Relaci\u00f3n<\/a> (DER), me qued\u00e9 con <a style=\"font-weight: bold;\" href=\"http:\/\/www.gnome.org\/projects\/dia\">DIA<\/a>, y aunque no tiene un conjunto de plantillas nativo para este tipo de diagramas, los mismos pueden ser &#8220;generados&#8221; utilizando la plantilla de componentes para diagramas de clase. En realidad, lo que uno puede modelar no es en esencia un DER sino un <a href=\"http:\/\/en.wikipedia.org\/wiki\/Data_Structure_Diagram\">Diagrama de Estructura de Datos<\/a> (DED) que es algo un poco distinto.<\/p>\n<p>Estos diagramas pueden ser exportados a sentencias SQL con el script <a href=\"http:\/\/tedia2sql.tigris.org\/\"><span style=\"font-weight: bold;\">tedia2sql<\/span><\/a>. Uno genera las entidades siguiendo las instrucciones de la <a href=\"http:\/\/tedia2sql.tigris.org\/usingtedia2sql.html\">Gu\u00eda de utilizaci\u00f3n de tedia2sql<\/a>, y lo que obtiene despues de pasar el diagrama por el script es un archivo con las sentencias SQL de definici\u00f3n de la base de datos.<\/p>\n<p>Yo soy un poco quisquilloso con el SQL, me gusta que est\u00e9 de determinada forma, con todo expl\u00edcito, etc, etc&#8230; y tedia no generaba algo que realmente me satisfaga. As\u00ed que las opciones eran dos:<\/p>\n<ol>\n<li>Editar tedia2sql para que genere en el SQL las cosas que me interesan.<\/li>\n<li>Programar un nuevo generador de c\u00f3digo, hecho a medida de las necesidades.<\/li>\n<\/ol>\n<p>Bien, la opci\u00f3n 1 la descart\u00e9 porque tedia est\u00e1 programado en perl, y ustedes saben que perl no es de lo m\u00e1s amigable para leer c\u00f3digo. Por eso opt\u00e9 por la 2, hacer el programita a mano.<\/p>\n<p>Adem\u00e1s como estaba tratando de iniciarme con <a href=\"http:\/\/www.python.org\/\">python<\/a>, decid\u00ed que ser\u00eda interesante empezar el entrenamiento con un proyecto concreto, y fue as\u00ed que surgi\u00f3 maudia2sql. Por supuesto que al ser un script hecho por un novato, tiene 2^100 fallas y cosas que mejorar, pero para eso est\u00e1n ustedes, jejeje&#8230;<\/p>\n<p>Bueno ac\u00e1 est\u00e1 el c\u00f3digo por si les interesa.<\/p>\n<p>Download: <a style=\"font-weight: bold;\" href=\"http:\/\/maurom.com\/files\/dia2sql-1.07.zip\">dia2sql-1.07.zip<\/a><\/p>\n<p>Uso: python dia2sql.py [-mysql4] [-d] [-h] archivo.dia<\/p>\n<p>-h Esta ayuda<br \/>\n-mysql4 Generar SQL para MySQL 4.x<br \/>\n-d Generar sentencias para eliminar el esquema anterior.<\/p>\n<p><span style=\"font-weight: bold;\">Actualizaci\u00f3n:<\/span> Debido a problemas con el hosting, encontrar\u00e1n <a href=\"http:\/\/maurom.com\/files\/dia2sql-1.07.zip\">dia2sql.zip en otro servidor<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace bastante tiempo que vengo buscando alg\u00fan set de herramientas CASE para trabajar tranquilo pero siempre que comienzo la b\u00fasqueda me encuentro con lo mismo: pocas herramientas en el mundillo libre. Y habiendo asistido a una charla en la CaFeConf 2006 dictada por Christian Kuroki me encuentro con que esto no es nada nuevo, y [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/1082"}],"collection":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/comments?post=1082"}],"version-history":[{"count":0,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/1082\/revisions"}],"wp:attachment":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/media?parent=1082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/categories?post=1082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/tags?post=1082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}