Saltar al contenido

Bases de datos de supervivencia

Hay dos palabras que apuesto a que nunca pensasteis ver juntas. Después de todo, no puedes comer o beber una base de datos, no te mantendrá caliente o fresco, y no ahuyentará a los depredadores, ya sean de cuatro patas o de dos.

Pero, probablemente tienes algo de comida y agua, algo de combustible y municiones. ¿Tienes suficiente? ¿Y dónde está cada lote? ¿Cuándo expira el siguiente artículo? ¿Cuál es el número de serie y el costo de algún artículo que se perdió o fue destruido (para un reclamo de seguro)? Se puede hacer un seguimiento de todo esto con papel y lápiz, pero una base de datos puede hacerlo mejor. Mientras la energía permanezca encendida, claro. Afortunadamente, cualquier base de datos decente puede imprimir su inventario después de cambios significativos.

Teoría Básica de Bases de Datos

¿Qué es una «base de datos»? En el nivel más simple, es una colección de datos. Para cada entrada en la base de datos (para un artículo), hay un «registro». Cada registro consta de una serie de «campos» (información sobre ese elemento). La colección de registros y campos se llama «tabla». Por ejemplo, consideremos la siguiente base de datos muy simple:

filas son los «registros» y las columnas son

Hasta ahora, nada que no se pueda hacer con hojas de papel y un lápiz, excepto añadir, borrar y modificar papel, puede ensuciarse rápidamente. Digamos que quieres añadir un nuevo campo, «Calorías por porción»? Bastante trivial para un programa de base de datos decente. ¿Qué tal comprar cosas nuevas, con fechas de caducidad diferentes? ¿O dividir las cosas en múltiples lugares? Una vez más, la base de datos debería ser fácil de cambiar.

Pero aún así, sólo estamos «mejorando» el concepto de papel y lápiz. El poder real de la base de datos proviene de la capacidad de buscar y calcular a partir de los datos. Por ejemplo, de la base de datos anterior, usted podría preguntar por el número de porciones que tiene o el costo por porción o la cantidad total que ha invertido. O puede ver lo que expirará en los próximos 6 meses. Y así sucesivamente.

La mayoría de los programas de base de datos «serios» soportan un potente lenguaje de consulta llamado SQL (para lenguaje de consulta estructurado). Por ejemplo, para averiguar qué caduca en el primer trimestre de 2016 de la tabla de la base de datos anterior, el comando sería algo así como

Bases de datos relacionales

Hasta ahora, hemos discutido bases de datos «planas» comunes. El aspecto clave de este tipo es que cada registro contiene todos y cada uno de los campos. Con un número bajo de elementos, esto no es un problema, pero si tiene muchos elementos con muchos campos, se vuelve tedioso tener que introducirlos todos, y ocupa más espacio del necesario. La solución a esto es una base de datos «relacional». Aquí, usted tiene un número de tablas que están «relacionadas» entre sí. Es decir, cada tabla contiene «algunos» de los campos, y otras tablas tienen campos que «apuntan» a campos de las otras tablas en lugar de contener los campos mismos. Por ejemplo, aquí hay una base de datos que estoy generando para hacer un seguimiento del contenido de mi cocina (para ayudar en las compras y eventualmente seleccionar recetas basadas en lo que está disponible):

Aquí tenemos las tablas Ingrediente, Ubicación y Artículo, donde Ingrediente es un tipo genérico de ingrediente, Ubicación describe un lugar donde se almacenan los ingredientes, y Artículo es una instancia única (específica) de un Ingrediente. En Item, los campos azules no se almacenan en la base de datos de Item, sino que sólo existen como «punteros» a las bases de datos de Ingredientes y Ubicación respectivamente.

Hay otra tabla definida pero no mostrada, Nutrición, que da calorías, grasas y demás. Tiene (tendrá) demasiados datos en él para ser incluido en la vista de Item; por lo que se muestra haciendo clic en el botón Nutrición, y desplazándose hasta, en este caso, el registro 6.

Este conjunto de datos nutricionales proceden del propio paquete. ¿Qué paquete? Hay un puntero (el campo azul) que indica el registro de posición 19.

Programas de base de datos

Las bases de datos son muy útiles y, por lo tanto, muy populares; hay muchas de ellas por ahí. Hacer una búsqueda en línea de «bases de datos relacionales» (puede que no pienses que necesitas la opción relacional, pero mejor tenerla y no usarla que no tenerla y tener que moverte a un nuevo sistema de base de datos si alguna vez la necesitas) Usé IBM DB2 en mainframes durante años, y parece que ahora tienen versiones de Linux, UNIX y Windows, pero con la excepción de una versión básica de «Express-C», cobran por ellas. Oracle es una base de datos muy conocida, y apuesto a que también es muy costosa. Microsoft tiene uno; yo trato de evitarlo cuando es práctico. He oído hablar de MySQL, pero he encontrado una página de sus versiones que enumera los precios de $ 2000 a $ 10.000! Tal vez una mejor búsqueda sería «base de datos relacional gratuita». Hacerlo implica que MySQL tiene una versión gratuita además de las versiones de alto precio.

Encontré una posibilidad interesante que tiene una interfaz gráfica de usuario además de soportar un potente lenguaje de programación. Se llama MUIbase.

MUIbase

Del manual:

«MUIbase es un sistema de base de datos rápido y flexible con interfaz gráfica de usuario (GUI) y programabilidad. Está dirigido a usuarios de escritorio avanzados que desean gestionar los datos de una forma cómoda y potente. MUIbase es capaz de gestionar cualquier tipo de datos, por ejemplo, direcciones, series de CD, películas, colecciones de fotos, su árbol genealógico, sus ingresos y gastos, y mucho más. El poder de MUIbase reside en su interfaz gráfica de usuario clara y potente y en sus capacidades de programación. La programación de MUIbase le permite procesar los datos de varias maneras, por ejemplo, cálculos automáticos sobre la entrada del usuario, generación de informes, importación y exportación de datos, etc. Por ejemplo, se puede utilizar para calcular la cantidad total de ingresos, o la cantidad total de tiempo grabado en un CD, o para crear e imprimir automáticamente cartas seriadas a sus clientes».

Las capturas de pantalla anteriores muestran la interfaz gráfica de usuario, una forma más «amigable» de introducir y visualizar registros que la típica de las bases de datos. Observe los «botones», como «GetOnHand», que pueden invocar programas para realizar funciones avanzadas. Este botón, por ejemplo, busca en todos los registros del artículo aquellos que apuntan al registro del ingrediente desde el que se invocó el botón, suma la cantidad de ese ingrediente en cuestión y calcula el coste medio del ingrediente. Aquí está parte del programa para este botón:

Esto puede parecer un poco extraño para usted; esto se debe a que el lenguaje de programación utiliza una sintaxis similar a la de «LISP». LISP es el segundo lenguaje de programación de alto nivel más antiguo (FORTRAN tiene un año de antigüedad). Era particularmente popular para el desarrollo de la inteligencia artificial; muy poderoso con capacidades superiores de recursión (capacidad de llamarse a sí mismo). Si estoy recordando mi clase correctamente, puedes resolver el rompecabezas donde mueves una pila de discos secuencialmente más pequeños de una pila a otra sin poner nunca un disco más grande encima de un disco más pequeño, en una sola declaración altamente recursiva. Las declaraciones LISP generalmente tienen el formato:

(función expresión de expresión)

Por ejemplo:

(+ total 5) añadir 5 al total

(IF (> total 15) («then»expression) [(optional»else»expression)] ) IF/THEN/ELSE equivalente

Poderoso, sí, pero un poco difícil de programar. Los muchos «(» y «)» son críticos, y pierden uno o reciben un extra o lo ponen en el lugar equivocado, y si tienes suerte, todo lo que sucederá es que recibes un error durante el intento de compilación (es un lenguaje compilado en lugar de ser interpretado, pero el compilador está integrado en el editor por lo que no es tan doloroso como algunos compiladores lo hacen).

Está disponible para Windows, Mac, Linux y Amiga.

Experiencias con el programa

Inicialmente, hubo un pequeño problema – mi programa antivirus siguió»poniendo en cuarentena» el programa (así que pareció descargarse con éxito, pero luego desapareció). No porque la descarga tuviera algo de malo, sino porque el antivirus decidió que no había suficiente gente que hubiera reportado experiencia con ella. Le dije al antivirus que lo liberara de la cuarentena, y no tuve más problemas para instalar e iniciar el programa.

Hay documentación sustancial, que está bastante bien organizada y legible, pero tiene algunos agujeros. Menciona algunos conceptos, pero encontrar los detalles es a veces un reto, ya que el índice es un poco incompleto. A veces es necesario hacer pruebas y errores para descubrir cosas que no se explican con suficiente detalle. Hay una serie de bases de datos de muestra para dar ejemplos.

Hasta ahora, he sido capaz de conseguir que haga todo lo que he querido. Esta es realmente una solución de base de datos totalmente funcional. Tengo una lista de «actualizaciones deseadas», que se reduce a medida que encuentro formas de hacer las cosas más rápido de lo que pienso en cosas nuevas que me gustaría hacer.

Se cambia de un lado a otro entre el modo «edición de estructura» y el modo «edición de datos» (las vistas de la base de datos mostradas anteriormente). Esto se hace desde un menú desplegable, por lo que no es tan conveniente como podría ser, pero es fácil acostumbrarse. Hay un atajo de teclas Cntl para cambiar de un lado a otro, que debería ser más conveniente para aquellos que están acostumbrados a esa metodología. El modo de edición de estructura se puede utilizar para controlar la visualización de cada tabla y de toda la base de datos. La edición del programa se realiza en una ventana separada e independiente.

El apoyo es bastante espectacular. Mis preguntas fueron respondidas rápidamente, y un pequeño error fue corregido inmediatamente.

El programa es gratuito. Es posible apoyarla (hacer una donación) si la encuentras tan valiosa como yo.