{"id":573,"date":"2009-05-01T20:43:45","date_gmt":"2009-05-01T18:43:45","guid":{"rendered":"http:\/\/robertopla.net\/blog\/bases-de-datos.htm"},"modified":"2009-05-01T20:43:45","modified_gmt":"2009-05-01T18:43:45","slug":"bases-de-datos","status":"publish","type":"post","link":"https:\/\/robertopla.net\/blog\/bases-de-datos.htm","title":{"rendered":"Bases de Datos"},"content":{"rendered":"<p>Pues si. Me fascinan las Bases de Datos. Representan el orden y la disponibilidad de informaci\u00f3n que no siempre est\u00e1 presente en mi mente. Son como las muletas de la memoria. Si tuvi\u00e9ramos memoria perfecta e limitada las Bases de Datos ser\u00edan un elemento completamente in\u00fatil.<br \/>\nNo aspiro a disponer de la base de datos perfecta como si pudieras preguntarle por <a href=\"http:\/\/es.wikipedia.org\/wiki\/El_sentido_de_la_vida,_el_universo_y_todo_lo_dem%C3%A1s\">el sentido de la vida, el universo y todo lo dem\u00e1s<\/a> y fuera a contestarte <a href=\"http:\/\/www.microsiervos.com\/archivo\/ciencia\/42.html\">42<\/a> sin titubear.<br \/>\nNo, en absoluto. Mis aspiraciones se mueven en un plano mucho m\u00e1s modesto. Por ejemplo la agenda de direcciones. Una agenda en la que solo hay que anotar los datos una vez, nunca hay contactos repetidos y todas las asociaciones son patentes: si pepito es el marido de fulanita siempre lo sabemos al consultarla, podemos seleccionar a los que conocemos del colegio y a los que solo soportamos en el trabajo. Los datos disponibles de forma instant\u00e1nea y en la medida y formato necesario.<br \/>\nPara aproximarse a eso hace falta algo m\u00e1s que saber meter datos en una ficha. En primer lugar hay que tomar decisiones. \u00bfQue campos usar? Si escribimos en fichas de carton pondremos nombre y dos apellidos en la primera linea, pero en una base de datos, \u00bfusamos uno, dos o tres campos diferentes para el nombre completo? Son decisiones de este tipo las que hacen fracasar la mayor\u00eda de las relaciones entre el p\u00fablico y las bases de datos.<\/p>\n<p style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/robertopla.net\/blog\/img\/database450.jpg\" alt=\"Bases de Datos\" title=\"Bases de Datos\" \/><\/p>\n<p>La l\u00f3gica cient\u00edfica dice que los datos est\u00e1n mejor en tres campos. Se puede responder a m\u00e1s preguntas como por ejemplo \u00bfCuandos contactos se llaman de segundo apellido fulanez? incontestable usando solo un campo. Sin embargo la logica cient\u00edfica no es perezosa y la mayor parte de nosotros si. Bueno, a parte de la pereza, se trata de acabar la tarea y si nos dejamos llevar por la ortodoxia de las reglas de sistemas de bases de datos relacionales podemos llegar a detalles absurdos.<br \/>\nEstas normas exigen que nunca se repita un dato en una base de datos. Por ejemplo, si tienes una base de datos para tus libros, deberias tener una tabla auxliar de autores y una tabla auxiliar de editoriales. De esa forma se garantiza que el nombre de la editorial solo aparece en la tabla auxiliar, aunque tengas muchos libros de la misma editorial. Adem\u00e1s siempre que busques por el nombre del autor sabes que aparecer\u00e1n todos sus libros presentes en tu biblioteca ya que no habr\u00e1s cometido el error de poner que uno es de \u00abCervantes, Miguel\u00bb otro de \u00abM.Cervantes\u00bb o de \u00abM. Cervantes\u00bb ni de \u00abMiguel de Cervantes Saavedra\u00bb o de \u00abCervantes Saavedra, Miguel de\u00bb&#8230; las diferencias inapreciables para nuestra vista al repasar unas fichas de cart\u00f3n son diferencias sustanciales para un programa inform\u00e1tico. Crear tablas auxiliares nos ayuda a eliminar estas indeterminaciones. En grandes bases de datos, adem\u00e1s ahorra enormes cantidades de tiempo y trabajo al procesador. Y espacio en el disco.<br \/>\nAl nivel de nuestra base de datos casera, sea la agenda, el indice de nuestros discos, sellos o libros, la verdad es que no va a suponer un problema de eficacia, pero hay que hacerse la siguiente pregunta: \u00bfNecesitar\u00e9 hacer b\u00fasquedas por autor o editorial? si la respuesta es afirmativa en un numero suficiente de casos, hay que realizar el esfuerzo en tiempo de dise\u00f1o de separar los campos. Porque hay que tener en cuenta que es mucho m\u00e1s f\u00e1cil unir campo que separarlos. De hecho es pr\u00e1cticamente imposible separar nombre, primer apellido y segundo apellido en tres campos a partir de un solo campo que contenga el nombre completo salvo que se haga de forma manual. A partir de un cierto numero de registros, esa separaci\u00f3n, m\u00e1s que un trabajo, es un castigo. Sin embargo la operaci\u00f3n contraria se realiza en segundos a partir de dos instrucciones SQL aun con miles de registros.<br \/>\nOtro problema son las fechas indeterminadas. Un ordenador espera que le demos un d\u00eda mes y a\u00f1o congruentes para poderlos combinar como una fecha. No solo no aceptar\u00e1 30\/02\/2008 como una fecha sino que es imposible explicarle el concepto \u00abmarzo del 2007\u00bb o \u00abprimeros de junio de 2008\u00bb o simplemente \u00ab1987\u00bb. Y eso puede suponer un problema. En muchos libros no figura la fecha excata de la edicion. No suele mencionarse en las referencias bibliogr\u00e1ficas, donde solo se considera el a\u00f1o. Pero \u00bfque pasa con las revistas?. En muchas figura solo el mes del a\u00f1o. \u00bfLa ponemos como fecha de publicaci\u00f3n el d\u00eda primero del mes? \u00bfY las que salen semanales? \u00bfY las que aparecen a mediados de mes?. En otras ocasiones ocurre que no conocemos la fecha completa. Mientras esperamos averiguarla deber\u00edamos poder poner los datos que tenemos. Me he encontrado ese problema en cuestiones de Historia o en tablas de registro de aeronaves donde la entrada en servicio, matriculaci\u00f3n o destrucci\u00f3n de una aeronave no se conoce con precisi\u00f3n. En este caso una soluci\u00f3n es separar d\u00eda, mes y a\u00f1o en tres campos, asi podemos usar 00-03-09 para \u00abprimeros de marzo de 2009\u00bb, \u00ab99-02&#8243; para \u00faltimos de febrero o \u00bb  &#8211;  -1987&#8243; para todo el a\u00f1o 1987. Esto tiene el inconveniente de tener que usar una funci\u00f3n que combine los tres campos para producir una fecha, que la indexaci\u00f3n por fechas debe hacerse a trav\u00e9s de los tres campos y que hay que a\u00f1adir un campo para establecer si la fecha es o no congruente, lo que complica el proceso de la informaci\u00f3n. Otra soluci\u00f3n es usar las convenciones citadas pero en un campo de texto donde no tendremos ning\u00fan problema en anotar \u00ab00-00-2009\u00bb para \u00abprincipio de 2009\u00bb aunque si queremos ordenar por este campo lo mejor es anotar una fecha como \u00ab20090430\u00bb para el treinta de abril de 2009 porque de esa forma aunque el tipo de campo sea una cadena de caracteres, la ordenaci\u00f3n ser\u00e1 correcta.<br \/>\nPor regla general estas son las dudas m\u00e1s comunes a la hora de dise\u00f1ar Bases de Datos de uso personal y no existe una respuesta exacta sobre cual es el mejor criterio a seguir. Lo mejor es hacer una estimaci\u00f3n sobre la necesidad de disponer de la informaci\u00f3n detallada y la posibilidad que existe de que en un futuro nuestras necesidades cambien y el esfuerzo que supondr\u00eda cambiar la estructura de los datos.<br \/>\nEl siguiente nivel de perfecci\u00f3n seria poder relacionar de forma \u00fatil y congruente las diferentes bases de datos. Por ejemplo s mi contabilidad dice que tal d\u00eda hice un gasto en libros de ahi tendr\u00eda que poder pasar a la ficha del libro que compr\u00e9 y de esa al tel\u00e9fono del librero o al documento en que us\u00e9 una cita del libro. O a la foto que hice a la hora de la compra y a trav\u00e9s de su geoetiqueta a la direcci\u00f3n de la librer\u00eda donde lo compr\u00e9.<br \/>\nY naturalmente nivel m\u00e1ximo de perfecci\u00f3n incluir\u00eda una interfaz no ya coloquial sino de conexi\u00f3n directa al cerebro que nos permitir\u00eda interrogar, obtener resultados o modificar los datos con la misma facilidad que si cont\u00e1semos con una memoria perfecta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pues si. Me fascinan las Bases de Datos. Representan el orden y la disponibilidad de informaci\u00f3n que no siempre est\u00e1 presente en mi mente. Son como las muletas de la memoria. Si tuvi\u00e9ramos memoria perfecta e limitada las Bases de &hellip; <a href=\"https:\/\/robertopla.net\/blog\/bases-de-datos.htm\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-573","post","type-post","status-publish","format-standard","hentry","category-frikilandia"],"_links":{"self":[{"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/posts\/573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/comments?post=573"}],"version-history":[{"count":0,"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/posts\/573\/revisions"}],"wp:attachment":[{"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/media?parent=573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/categories?post=573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robertopla.net\/blog\/wp-json\/wp\/v2\/tags?post=573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}