{"id":422,"date":"2018-08-27T16:48:11","date_gmt":"2018-08-27T22:48:11","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=422"},"modified":"2018-09-30T16:56:49","modified_gmt":"2018-09-30T22:56:49","slug":"diseno-de-bases-de-datos-parte-1","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/diseno-de-bases-de-datos-parte-1\/","title":{"rendered":"Dise\u00f1o de Bases de Datos &#8211; Parte 1"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Dise\u00f1o de Bases de Datos &#8211; Parte 1<\/h2>\n\n\n\n<p>\n\nCuando hablamos de temas acordes al modelo relacional, nos referimos principalmente al conocimiento, al menos b\u00e1sico, de los siguientes temas:<br\/><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Dise\u00f1o y Modelado de la base de datos.<br\/><\/li><li>Dise\u00f1o de tablas y sus relaciones.<\/li><li>Normalizaci\u00f3n.<\/li><li>Construcci\u00f3n de tablas relacionadas normalizadas.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1o y Modelado de Bases de Datos<\/h2>\n\n\n\n<p><strong><\/strong>Uno de los pasos importantes en la construcci\u00f3n de una aplicaci\u00f3n que maneja una base de datos, es precisamente, el dise\u00f1o de la base de datos. Si las tablas no son definidas correctamente, podemos tener problemas al momento de ejecutar consultas que nos permitan obtener la informaci\u00f3n que deseamos.No importa si la base de datos contiene solo unos cuantos registros o miles de ellos, es importante asegurar que la base de datos est\u00e1 correctamente dise\u00f1ada para obtener la m\u00e1xima eficiencia y que podamos utilizarla por mucho tiempo.<\/p>\n\n\n\n<p>Dependiendo de los requeriminetos de la base de datos, el dise\u00f1o puede ser complejo, pero tomando en cuenta algunas de las reglas simples ser\u00e1 mucho m\u00e1s f\u00e1cil crear una base de datos para cada uno de nuestros proyectos.<\/p>\n\n\n\n<p>Algunas de las consideraciones que debemos tomar en cuanta al realizar el dise\u00f1o de la base de datos son:\n\n<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Velocidad de acceso<\/li><li>Tama\u00f1o de la informaci\u00f3n<\/li><li>Tipo de informaci\u00f3n<\/li><li>Facilidad de acceso<\/li><li>Importaci\u00f3n y exportaci\u00f3n de informaci\u00f3n<\/li><li>Presentaci\u00f3n de la informaci\u00f3n<\/li><\/ol>\n\n\n\n<p>No importa que tan buenas sean las aplicaciones que hemos desarrollado con anterioridad, siempre es recomendable seguir algunos est\u00e1ndares de dise\u00f1o para garantizar la m\u00e1xima eficiencia en lo que se refiere al almacenamiento y recuperaci\u00f3n de la informaci\u00f3n.<br\/><\/p>\n\n\n\n<p>Al igual que un arquitecto crea los planos para la construcci\u00f3n de un edificio, nosotros debemos crear el modelo para la construcci\u00f3n de una aplicaci\u00f3n. Ning\u00fan arquitecto se avienta a iniciar la construcci\u00f3n de un edificio sin antes tener una idea clara de lo que quiere construir, y esta idea se modela con el desarrollo de los planos, ah\u00ed es donde se plasman las dimensiones, caracter\u00edsticas y alcances de lo que se requiere construir. Pues en el desarrollo de software sucede lo mismo, antes de iniciar la programaci\u00f3n y\/o la construcci\u00f3n como tal es importante crear un modelo que nos permita visualizar las caracter\u00edsticas y los alcances de nuestra aplicaci\u00f3n.El modelo es una abstracci\u00f3n de la realidad, que nos permite simular el producto final y entender claramente el objetivo que perseguimos.<\/p>\n\n\n\n<p>El modelo Entidad-Relaci\u00f3n es uno de principales est\u00e1ndares que nos permiten plasmar la funcionalidad de la aplicaci\u00f3n en terminos de entidades y la forma en que se relacionan unas con otras. Las entidades representan los datos del dominio de nuestra aplicaci\u00f3n. Por ejemplo, si deseamos desarrollar una aplicaci\u00f3n para llevar el control de los recorridos tur\u00edsticos que realiza un turista. Las principales entidades que encontramos aqu\u00ed son: Turistas y Recorridos, estas entidades son los datos que ser\u00e1n almacenados en la base de datos. La relaci\u00f3n que guardan estas dos entidades una con otra, se podr\u00eda describir de la siguiente forma: Los turistas realizan recorridos. La relaci\u00f3n entre las dos entidades es una acci\u00f3n, es decir, un verbo que describe la acci\u00f3n que se lleva a cabo de una entidad a otra, lo cual se modela como se muestra en la siguiente figura:\n\n<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"73\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/relacion-E-R.jpg\" alt=\"\" class=\"wp-image-424\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/relacion-E-R.jpg 320w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/relacion-E-R-300x68.jpg 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/figure><\/div>\n\n\n\n<p>La figura nos describe dos entidades relacionadas entre s\u00ed de acuerdo con el modelo entidad-relaci\u00f3n. La simbolog\u00eda adicional utilizada en el modelo, nos permite describir con m\u00e1s detalle la forma en que estas dos entidades se encuentran relacionadas y lo podemos leer de la siguiente forma:<\/p>\n\n\n\n<p><strong>1<\/strong>\u00a0Turista realiza N Recorridos, 1 Recorrido es realizado por N Turistas, lo cual nos resulta en una relaci\u00f3n de muchos a muchos (N:M) entre las dos entidades.<\/p>\n\n\n\n<p>De esta manera podemos entender tambi\u00e9n como quedar\u00e1n las tablas que construiremos en la base de datos. Adicionalmente en el modelo entidad-relaci\u00f3n podemos especificar los atributos necesarios para cada una de las entidades, es decir, los datos que se requieren para procesar e identificar cada uno de ellos, por ejemplo para turista podr\u00edamos requerir su nombre, su nacionalidad, su edad, etc. Para la entidad Recorrido, quizas la ruta que lo identifica, el nombre del recorrido o alg\u00fan otro dato que la empresa para esta entidad.<\/p>\n\n\n\n<p>Los atributos de las entidades se convertiran en los campos de las tablas correspondientes.<\/p>\n\n\n\n<p>Ahora bien, si para la relaci\u00f3n &#8220;realiza&#8221; es necesario identificar cuando y a que hora se realiza el recorrido, entonces la relaci\u00f3n se convierte en una relaci\u00f3n identificada, la cual especificar\u00eda dos atributos: fecha y hora, de cuerdo con el ejemplo que estamos tratando.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1o de tablas y sus relaciones<\/h2>\n\n\n\n<p>Esta secci\u00f3n la cubriremos en la segunda parte de este art\u00edculo y basicamente consiste de la transformaci\u00f3n del modelo entidad-relaci\u00f3n al modelo relacional, en el cual, concretamente convertimos las entidades, as\u00ed como las relaciones identificadas en tablas.\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dise\u00f1o de Bases de Datos &#8211; Parte 1 Cuando hablamos de temas acordes al modelo &hellip; <\/p>\n","protected":false},"author":2,"featured_media":423,"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,73,74,75],"class_list":["post-422","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-diseno-de-bases-de-datos","tag-entidad-relacion","tag-modelado"],"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-p1-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p1.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada-diseno-p1.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\">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\">entidad-relaci\u00f3n<\/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>"],"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\">dise\u00f1o de bases de datos<\/span>","<span class=\"advgb-post-tax-term\">entidad-relaci\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">modelado<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Publicado 8 a\u00f1os hace","modified":"Actualizado 8 a\u00f1os hace"},"absolute_dates":{"created":"Publicado el agosto 27, 2018","modified":"Actualizado el septiembre 30, 2018"},"absolute_dates_time":{"created":"Publicado el agosto 27, 2018 4:48 pm","modified":"Actualizado el septiembre 30, 2018 4:56 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/422","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=422"}],"version-history":[{"count":3,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/422\/revisions"}],"predecessor-version":[{"id":430,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/422\/revisions\/430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/423"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}