{"id":444,"date":"2018-08-20T17:32:22","date_gmt":"2018-08-20T23:32:22","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=444"},"modified":"2018-09-30T17:33:00","modified_gmt":"2018-09-30T23:33:00","slug":"diseno-de-bases-de-datos-parte-4","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/diseno-de-bases-de-datos-parte-4\/","title":{"rendered":"Dise\u00f1o de Bases de Datos &#8211; Parte 4"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Dise\u00f1o de Bases de Datos &#8211; Parte 4<\/h2>\n\n\n\n<p>\n\nEn el art\u00edculo anterior concluimos definiendo la estructura de la base de datos que vamos a crear ahora en FileMaker y nos quedaron las tablas de las siguiente manera:\n\n<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"141\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/tablas_final.gif\" alt=\"\" class=\"wp-image-442\"\/><\/figure><\/div>\n\n\n\n<p>\n\nSin embargo, antes de construir la base de datos en FileMaker, debemos considerar los casos de uso de la aplicaci\u00f3n.<\/p>\n\n\n\n<p>Los casos de uso describen que es lo que har\u00e1 la aplicaci\u00f3n y no tanto como lo har\u00e1, eso viene despu\u00e9s, de momento necesitamos entender que haremos con la aplicaci\u00f3n, como vamos a utilizar la aplicaci\u00f3n y eso tambi\u00e9n nos dar\u00e1 una idea de las interfaces de usuario que deberemos dise\u00f1ar, as\u00ed como el esquema de operaci\u00f3n de la misma.\n\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00bfCuales son los casos de uso de la aplicaci\u00f3n?<\/strong> <\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"299\" height=\"320\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/casosdeuso.jpg\" alt=\"\" class=\"wp-image-445\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/casosdeuso.jpg 299w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/casosdeuso-280x300.jpg 280w\" sizes=\"auto, (max-width: 299px) 100vw, 299px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Cat\u00e1logos<\/h2>\n\n\n\n<p>\n\nLos primero tres casos de uso nos permitir\u00e1n mantener los cat\u00e1logos de la aplicaci\u00f3n, estos cat\u00e1logos ser\u00e1n: Nacionalidades, Turistas y Recorridos Tur\u00edsticos.<\/p>\n\n\n\n<p>Por lo tanto debemos dise\u00f1ar una presentaci\u00f3n, que permita la creaci\u00f3n y modificaci\u00f3n de registros para las tablas Nacionalidad, Recorrido y Turista, as\u00ed como una presentanci\u00f3n quizas para listados en cada una de esas tablas.<\/p>\n\n\n\n<p>En la presentaci\u00f3n para el Alta de turistas se deber\u00e1 incorporar un portal que permita la creaci\u00f3n de registros relacionados hacia la tabla Tel\u00e9fono.<\/p>\n\n\n\n<p>Para la tabla Telefono, no es necesario crear una presentaci\u00f3n, ya que la navegaci\u00f3n en el sistema ser\u00e1 desde la tabla Turista, as\u00ed que podemos eliminar la presentaci\u00f3n que el sistema crea por defecto para la tabla Telefono.<\/p>\n\n\n\n<p>Dentro de la presentaci\u00f3n de captura en la tabla Turista, adicionalmente a colocar un portal para los tel\u00e9fonos, creamos una lista de valores para el campo idNacionalidad y a esa lista de valores, le asignamos el campo nacionalidad de la tabla Nacionalidad.<\/p>\n\n\n\n<p>Para las tablas Nacionalidad, Turista y Recorridos, podemos crear presentaciones para captura, consulta y listados.\n\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Funcionalidad de recorridos tur\u00edsticos<\/strong> <\/h2>\n\n\n\n<p>\n\nEl \u00faltimo caso de uso lo hemos llamado: &#8220;Alta de Recorridos Realizados&#8221;, esto es completamente distinto a lo que se refiere el caso de uso sobre Alta de Recorridos, este \u00faltimo es el manejo del cat\u00e1logo de recorridos tur\u00edsticos que ofrece la empresa y el primero se refiere a los recorridos que realiza un turista.<\/p>\n\n\n\n<p>Estos recorridos realizados ser\u00e1n las visitas realizadas por los turistas dentro de los recorridos tur\u00edsticos, raz\u00f3n por la cual se creo la tabla Realiza, que en realidad son las visitas llevadas a cabo en una fecha dada y hacia un recorrido determinado.<\/p>\n\n\n\n<p>En esta tabla, &#8220;Realiza&#8221;, se guardar\u00e1 un registro por cada turista que visita un mismo recorrido y en la misma fecha, es decir, Si el recorrido 1 es llevado a cabo por 20 turistas, entonces la tabla Realiza tendr\u00e1 para este caso 20 registros, uno por cada turista, pero los 20 registros tendr\u00e1n el mismo recorrido y la misma fecha. Si quisieramos mantener un cat\u00e1logo de visitas o recorridos realizados, uno por cada recorrido en un fecha determinada, dentro del cual existen varios turistas, entonces debemos hacer un cambio en el dise\u00f1o.<\/p>\n\n\n\n<p>A estas alturas del dise\u00f1o y una vez que empezamos a analizar los casos de uso, nos damos cuenta que nos hace falta considerar esta opci\u00f3n, por eso comentamos lineas arriba que a\u00fan no era prudente empezar a crear las tablas en FileMaker.<\/p>\n\n\n\n<p>Realiza ser\u00e1 una visita, por lo que se requiere descomponer la relaci\u00f3n entre Realiza y Turista, la cual es una relaci\u00f3n todav\u00eda de muchos a muchos, por lo tanto al realizar dicha descomposici\u00f3n creamos una tabla intermedia entre estas dos tablas que llamaremos Turista en Recorrido, a la cual pasamos el idTurista de la tabla Realiza y para lograr la integridad referencial adicionamos un idVisita en la tabla realiza que ser\u00e1 autonu\u00e9rico y que nos permitira establecer la relaci\u00f3n con la tabla Turista en Recorrido quedando de la siguiente manera:\n\n<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"113\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/modelo_final_relacional.gif\" alt=\"\" class=\"wp-image-446\"\/><\/figure><\/div>\n\n\n\n<p>Como observamos en la figura, se creo una tabla adicional llamada Turista en Recorrido, la cual contiene dos campos: idVisita e idTurista, adicionalmente se modific\u00f3 la tabla Realiza eliminando el campo idTurista y agregando un campo llamado idVisita, el cual ser\u00e1 auto-num\u00e9rico, para establecer la relaci\u00f3n entre Realiza y Turista en Recorrido, de esta manera podremos colocar un portal en la presentaci\u00f3n de Realiza para mostrar los registros relacionados de la tabla Turista en Recorrido, esta relaci\u00f3n deber\u00e1 permitir crear y borrar registros relacionados en la tabla Turista en Recorrido.<\/p>\n\n\n\n<p>Ahora si tenemos el dise\u00f1o final de la base de datos, por que para crear las tablas en FileMaker solo tenemos que establecer las consideraciones finales para los campos.<\/p>\n\n\n\n<p>El siguiente punto es tomar en cuenta las consideraciones para cada uno de los campos en todas las tablas, as\u00ed como la creaci\u00f3n de las relaciones entre tablas.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"238\" height=\"400\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/descripcion1.gif\" alt=\"\" class=\"wp-image-447\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"79\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/descripcion2.gif\" alt=\"\" class=\"wp-image-448\"\/><\/figure><\/div>\n\n\n\n<p>Una vez creadas las tablas (Nacionalidad, Tel\u00e9fono, Turista, Recorrido, Realiza y Turista en Recorrido) con estas consideraciones en los campos, establecemos las relaciones entre ellas.<\/p>\n\n\n\n<p>Parra ello, arrastramos desde la tabla Tel\u00e9fono, en esta relaci\u00f3n se activar\u00e1n las casillas para crear registros relacionados y eliminar registros relacionados en la tabla Tel\u00e9fono desde la tabla Turista, para la siguiente relaci\u00f3n arrastramos el campo idTurista hacia el campo idTurista en la tabla Turista, el campo idNacionalidad desde la tabla Turista hacia el campo idNacionalidad en la tabla Nacionalidad.<\/p>\n\n\n\n<p>El campo idTurista desde la tabla Realiza hacia el campo idTurista en la tabla Turista en Recorrido, esta relaci\u00f3n debe permitir el borrado y la creaci\u00f3n de registros relacionados en la tabla Turista en Recorrido desde la tabla Realiza, adicionalmente arrastramos el campo numero desde la tabla Realiza hacia el campo numero en la tabla Recorrido.<\/p>\n\n\n\n<p>Por \u00faltimo arrastramos el campo idTurista de la tabla Turista en Recorrido hacia el campo idTurista en la tabla Turista.<\/p>\n\n\n\n<p>Los valores de los campos idTurista en la tabla turista, as\u00ed como n\u00famero en la tabla Recorrido y el campo idNacionalidad de la tabla Nacionalidad ser\u00e1n asignados autom\u00e1ticamente por el sistema.<\/p>\n\n\n\n<p>Finalmente, para dar de alta a los turistas que realizan recorridos, creamos una presentaci\u00f3n para la tabla Realiza, en ella establecemos una lista de valores para el campo numero en el que asignamos el campo n\u00famero de la tabla Recorrido, de esta forma podemos escoger el recorrido tur\u00edstico y mostrar en la presentaci\u00f3n su nombre, para ello no se requiere un portal, simplemente colocar los campos relacionados de la tabla Recorrido en la presentaci\u00f3n de la tabla Realiza.<\/p>\n\n\n\n<p>Posteriormente colocamos un portal con los registro relacionados de la tabla Turista en Recorrido, aunque en este portal colocamos los campos de la tabla Turista.<\/p>\n\n\n\n<p>Adicionalmente, si deseamos visualizar que recorridos ha hecho un turista, entonces, en la presentaci\u00f3n de consulta para la tabla Turista podemos colocar un portal asignado a la tabla Realiza, pero en el colocamos campos de la tabla Recorrido, de esa forma podemos tener un historia de los recorridos que ha realizado un turista.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dise\u00f1o de Bases de Datos &#8211; Parte 4 En el art\u00edculo anterior concluimos definiendo la &hellip; <\/p>\n","protected":false},"author":2,"featured_media":449,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[47,6],"tags":[71,72,80,78,73,75,76,79,77],"class_list":["post-444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bases-de-datos","category-diseno-de-bases-de-datos","tag-bases-de-datos","tag-bases-de-datos-relacionales","tag-casos-de-uso","tag-creacion-de-bases-de-datos","tag-diseno-de-bases-de-datos","tag-modelado","tag-modelo-relacional","tag-tablas-de-datos","tag-transformacion-a-tablas"],"aioseo_notices":[],"author_meta":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"featured_img":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p4-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p4.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p4.png","author_info":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/\" class=\"advgb-post-tax-term\">Bases de Datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">Dise\u00f1o de Bases de Datos<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Bases de Datos<\/span>","<span class=\"advgb-post-tax-term\">Dise\u00f1o de Bases de Datos<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">bases de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">bases de datos relacionales<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">casos de uso<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">creaci\u00f3n de bases de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">dise\u00f1o de bases de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">modelado<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">modelo relacional<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">tablas de datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/bases-de-datos\/diseno-de-bases-de-datos\/\" class=\"advgb-post-tax-term\">transformaci\u00f3n a tablas<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">bases de datos<\/span>","<span class=\"advgb-post-tax-term\">bases de datos relacionales<\/span>","<span class=\"advgb-post-tax-term\">casos de uso<\/span>","<span class=\"advgb-post-tax-term\">creaci\u00f3n de bases de datos<\/span>","<span class=\"advgb-post-tax-term\">dise\u00f1o de bases de datos<\/span>","<span class=\"advgb-post-tax-term\">modelado<\/span>","<span class=\"advgb-post-tax-term\">modelo relacional<\/span>","<span class=\"advgb-post-tax-term\">tablas de datos<\/span>","<span class=\"advgb-post-tax-term\">transformaci\u00f3n a tablas<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Publicado 8 a\u00f1os hace","modified":"Actualizado 8 a\u00f1os hace"},"absolute_dates":{"created":"Publicado el agosto 20, 2018","modified":"Actualizado el septiembre 30, 2018"},"absolute_dates_time":{"created":"Publicado el agosto 20, 2018 5:32 pm","modified":"Actualizado el septiembre 30, 2018 5:33 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":1,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":450,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/444\/revisions\/450"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/449"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}