Revista Electrónica Granma Ciencia. Vol.10, No.3, Septiembre - Diciembre 2006 ISSN 1027-975X TÍTULO: Adiós a los códigos AUTORES: Osmani Miranda Escalona Javier Miranda Escalona INSTIUCIÓN: Universidad de Granma. Carretera de Granma, Cuba. Manzanillo, km 17½. Bayamo, E-MAI: miranda@udg.co.cu RESUMEN Las Bases de Datos pueden llegar a ser un voluminoso almacén de datos inútiles y no confiables si los datos no están debidamente conciliados y estandarizados. Los principales problemas que inciden en las anomalías de los datos son la utilización de los diferentes formatos y los errores humanos en la entrada de los mismos. Estos problemas son resueltos mediante la codificación: operación mediante la cual los datos expresados en un determinado sistema convencional de representación, son convertidos en otro sistema diferente de representación. La codificación surgió como necesidad, además de resolver los problemas mencionados, para optimizar el empleo de la memoria disponible, pero esto se logra a costa del rendimiento temporal en las recuperaciones. Hoy, para los sistemas informáticos es más crítico el problema del rendimiento temporal que el espacial (relativo a la memoria). Por este motivo proponemos resolver el problema de la estandarización de los datos mediante listas de valores en lenguaje natural que se guardan directamente en la Base de Datos sin sustituirse por otro sistema de representación. INTRODUCCIÓN En [6] Mestre plantea el siguiente concepto de “Bases de Datos”: Conjunto de datos almacenados en soporte informático de forma sistemática y ordenada utilizando para ello un Sistema de Gestión de Bases de Datos. La recuperación de datos almacenados en una Base de Datos debe ser fácil, rápida y económica. Lograr los objetivos enunciados no es sencillo si se tiene en cuenta que hoy se genera una voluminosa cantidad de información diariamente que se recopila en distintos formatos. Algunas se obtienen de forma automatizada y en tiempo real, a través de transductores, desde procesos tecnológicos; otras de forma manual u oral. Este conjunto de datos e informaciones que se obtienen y procesan a través aplicaciones puede llegar a ser una fuente valiosa de conocimiento en la cual los jefes y especialistas puedan optimizar la eficiencia y la eficacia de su desempeño. No obstante, puede también convertirse en un almacén de información no confiable o en la práctica no accesible lo que puede traducirse también como un gran “basurero”. Todo depende del rigor, la efectividad y la estructura con que tomen los datos de las fuentes primarias, es decir de donde se origina la información. Garhardas en [3] planteó como las principales causas de las de las anomalías en los datos las siguientes: 1. Ausencia de llaves universales sobre diferentes BD: conocido como el problema de identidad del objeto. 2. Uso de diferentes formatos de datos. 3. Errores en la entrada de datos. 4. Inconsistencias en los datos. Se le suele llamar “limpieza de datos” al tratamiento de estos problemas: a la corrección de los “datos sucios” que atentan contra la confiabilidad de la información que se recupera de las Bases de Datos. Sin embargo, no siempre es posible limpiar los datos, sobre todo si la información es muy voluminosa. Este proceso suele ser imperfecto, demorado o tedioso. El éxito se garantiza si logramos evitar los “datos sucios” restringiendo el conjunto de valores posibles de un determinado datos en congruencia con el objeto que se describe. Una de las formas comúnmente utilizadas de llevar esto a la práctica es codificar. Los codificadores Según López en [5] los códigos intuitivamente indican el enmascaramiento de la información a través de otras palabras que generalmente son más cortas y que se corresponden unívocamente con la información que representan. El proceso a través del cual se establece una relación de uno a uno entre conjuntos de palabras de dos alfabetos se conoce como codificación. La definición de Mestre [6] es la siguiente: Operación mediante la que datos expresados en un determinado sistema convencional de representación son convertidos en otro sistema diferente de representación, de tal forma que es posible volverlos a expresar en su primitivo sistema de representación. Gravilov en [2] da una definición algebraica de codificación: Sean A y B dos alfabetos finitos y R algún conjunto de palabras finitas en el alfabeto A. La aplicación unívoca j del conjunto R en algún conjunto de palabras en el alfabeto B se llama codificación del conjunto R. A la imagen C del conjunto R para la aplicación j, se le llama código del conjunto R. A las palabras de C, se les llama “palabra de código”. El motivo fundamental que dio origen a los dos codificadores lo constituye el ahorro de memoria en los ficheros de la Base de Datos y la homogeneidad de la información. El primer punto es hoy una anacronía, residuo de los tiempos en que la memoria operativa diseñada de ferrita y los dispositivos de almacenamiento permanente eran muy caros y las CPU muy lentas. Los diseñadores tenían que utilizar códigos para todo con el objetivo de reducir al máximo los volúmenes de almacenamiento y la información a procesar. La justificación económica de utilizar códigos desapareció hace años, pero los diseñadores continúan utilizando códigos. Sin embargo hoy para los sistemas informáticos es más crítico el problema del rendimiento temporal. El empleo de los codificadores implica que cuando se recuperan los datos es necesario convertir el sistema de representación o alfabeto almacenado en el alfabeto en lenguaje natural. Esto implica necesariamente un incremento significativo en la complejidad temporal si se tiene en cuenta que generalmente se requieren varios y costosos acoples entre la tabla que contiene los datos y los codificadores. Esto afecta sensiblemente el desempeño general del sistema, y requiere un mayor esfuerzo de los programadores para elaborar las consultas Alternativa a los codificadores: la lista de valores. Una alternativa al uso de los codificadores es el empleo de listas de valores en lenguaje natural. Se almacena en la Base de Datos un conjunto de valores predeterminados, pero que no tienen asociado un segundo alfabeto o sistema de representación. Con esta variante se requieren acoples entre las tablas de codificadores que guardan las descripciones en lenguaje natural y las tablas de datos donde se guardan los códigos. Con esta alternativa las aplicaciones toman los datos de las listas de valores almacenadas en la Base de Datos y las guardan directamente en la tabla de datos. Al recuperar la información no se requiere del empleo de estas listas ni de acoples por lo que se simplifica el algoritmo desde el punto de vista temporal, beneficiando el rendimiento del sistema. Este cambio no produce ninguna alguna afectación para los objetivos de los codificadores relacionados con la limpieza de los datos. Facilita el procesamiento de la información con respecto a la primera alternativa. No impide la clasificación de la información e incluso permite su clasificación inequívoca. Permite que un dato o conjunto de datos sea recuperado o localizado dentro de una agrupación lógica o física de información. Esta variante solo tiene como inconveniente que no enmascara los datos, pero hoy en día la codificación no es ampliamente utilizada con estas funciones. Los Sistemas de Gestión de Bases de Datos tienen otras herramientas orientadas a lograr mayor seguridad en el acceso a los datos. Existe un beneficio añadido inmediato: los errores de entrada de datos se reducen significativamente. El usuario ve rápidamente, en lenguaje natural, la información que está introduciendo. Los dígitos no se trasladan a códigos y así no se recordarán incorrectamente. Las aplicaciones son mucho más comprensibles. La pantalla y los informes se transforman de los arcaicos arreglos de códigos y números, en formatos legibles y claros. El cambio en una aplicación del diseño orientado a código, al diseño orientado a lenguaje natural tiene efectos de relajamiento psicológico sobre los usuarios quienes no están sobrecargados con manuales de códigos que son un verdadero sacrificio para los iniciantes. Por supuesto, esta variante no es una “barita mágica”. Desarrollar una aplicación basada en lenguaje natural, requiere emplear tiempo con los diseñadores y usuarios tomando información del problema, comprendiendo las relaciones naturales, las categorías y construir, mediante un cuidadoso estudio preliminar una base de datos y un esquema de nombres que refleje, lo más detallada pero racionalmente posible, la realidad. Existen tres pasos a los que hay que dedicar especial atención para conseguir una buena aplicación del lenguaje natural: normalizar los datos, seleccionar los nombres de los metadatos (nombres de tablas y columnas) y seleccionar los valores de las listas. CONCLUSIONES Permita que su pensamiento evolucione con el desarrollo de la tecnología. Oriéntese hacia el usuario haciendo más cómoda y feliz su vida. Diga adiós a los codificadores. BIBLIOGRAFÍA Bellón Corvo, H. Codificación en Bases de Datos. GIGA (La Habana) Nro. 5/2002, 30 33, Septiembre - Octubre. 2002. Gravilov. G. P., Zposzheko A. Problemas de Matemática Discreta. Editorial MIR. 1988. Helena Galhardas, D. “Declarative Data Cleaning: Languaje Model and Algoritms”. Noviembre /2001. p. 1 Loney, Kevin. George Koch: “Oracle 9i: The Complete Reference”. KcGraw-Hill/Osborne. 2003 . – 1214 p. López Porrero, B. “La Codificación en los Sistemas de BD”. 1998. Mestre Yenes, Pedro. “Diccionario de Gestión del Conocimiento”. Fundación DINEL, Madrid, 2000.