Elegir la base de datos apropiada constituye una etapa fundamental en la creación de cualquier aplicación web y de software. Las bases de datos (DB) son información estructurada que se almacena en hojas de cálculo vinculadas. Las bases de datos se pueden encontrar en bancos, bibliotecas y, en general, en cualquier lugar donde haya demasiados datos para procesarlos manualmente.

Tipos de Bases de Datos

Según la estructura y método de enlace, los tipos de bases de datos son: relacionales, no relacionales, jerárquicas y orientadas a objetos. Para gestionar los datos de una base de datos se utiliza un DBMS (sistema de gestión de bases de datos). Existe un DBMS para los diferentes tipos de bases de datos.

Bases de Datos Jerárquicas

La estructura más simple, donde los registros se ramifican desde una inscripción “padre”, es la del tipo jerárquico. En las estructuras jerárquicas cada registro tiene una conexión física sólo con uno anterior, y las relaciones de muchos a muchos son imposibles. Dos ejemplos de bases de datos jerárquicas son:

  • Information Management System: Es un sistema de administración especialmente diseñado para gestionar grandes volúmenes de datos dispuestos en estructuras jerárquicas.
  • ADABAS: Se utiliza en aplicaciones donde el rendimiento es crítico, como sistemas de procesamiento de transacciones en tiempo real.

Bases de Datos de Red

A diferencia de una estructura jerárquica, en las bases de datos del tipo red cada entrada puede tener más de un padre. Las DB del tipo red no son un gráfico en forma de árbol, sino un gráfico general. Por ejemplo, en una base de datos que contiene recetas de bebidas con café, es posible crear un gráfico donde “capuccino” esté asociado con “espresso” y “leche”, y “espresso” esté asociado con “granos de café” y “agua”.

Bases de Datos Orientadas a Objetos

Estas son bases de datos donde la información sobre cosas reales se presenta como objetos bajo un único identificador. El estado de un objeto se describe mediante atributos y su comportamiento se describe mediante un conjunto de métodos. De este modo, los objetos con los mismos atributos y métodos forman clases. Un objeto en programación orientada a objetos se crea como una entidad separada con sus propiedades y métodos de operación. Una vez que se crea un objeto, se le puede llamar por su “nombre” o código, en lugar de tener que desarrollarlo todo de nuevo. Por ejemplo, al desarrollar la mano del personaje principal en un juego de computadora, el programador crea el objeto “mano” una vez, y de esta manera cuando haya que programar movimientos, basta con decir en el lenguaje de programación: “mano, cierra el puño” o “mano, levántate”. Los DBMS de bases de datos orientados a objetos más populares son:

  • db4o: Su simplicidad y fácil uso elimina la necesidad de escribir código SQL o crear mapeos objeto-relacionales, entre otras ventajas como su rendimiento en operaciones de lectura y su diseño intuitivo.
  • ObjetoDB: Destaca por su capacidad para gestionar objetos complejos y relaciones de manera natural.

Bases de Datos Relacionales

También se les llama SQL, al ser un lenguaje de programación utilizado para crear, transformar y administrar datos en bases de datos relacionales. Los registros y las relaciones entre ellos se organizan mediante tablas, donde estas tablas cuentan con un campo de clave externa con enlaces a otras tablas. Debido a la alta organización y flexibilidad de la estructura, las bases de datos relacionales se utilizan para muchos tipos de datos. Volviendo al ejemplo de una base de datos con bebidas para una cafetería, las bases de datos relacionales serían útiles para describir recetas, compras y relaciones entre ellas. Los DBMS de mayor popularidad entre analistas y desarrolladores son:

  • MySQL: Destaca por su velocidad en operaciones de lectura, su capacidad para ofrecer portabilidad a través de varias herramientas y la seguridad de su conectividad.
  • PostgreSQL: Un DBMS relacional de objetos que se utiliza para sitios web, servicios y plataformas. Es de acceso libre y soporta muchos lenguajes de programación.
  • SQL Server: El DBMS óptimo para los sistemas operativos de Windows, pero al mismo tiempo compatible con Linux.
  • MariaDB: MariaDB optimiza las consultas, brinda seguridad para aplicaciones web y garantiza un alto rendimiento.
  • Base de datos Oracle: Un DBMS relacional de objetos creado por el líder del mercado del mismo nombre.

Bases de Datos No Relacionales (NoSQL)

Este grupo también se denomina NoSQL porque son bases de datos que requieren consultas distintas de SQL.

Tipos de Bases de Datos NoSQL

  • Bases de datos de valores clave: En estas bases de datos, los datos se almacenan bajo claves, de modo que sólo sea posible acceder a un “objeto” de la base de datos, como una imagen o un texto, ingresando una clave.
  • Bases de datos de gráficos: Las relaciones en las bases de datos de gráficos se indican mediante nodos, aristas y propiedades. Los registros en estas bases de datos pueden tener cualquier número de propiedades asociadas.
  • Bases de datos de columnas: Al igual que las relacionales, estas bases de datos almacenan datos en forma de tablas. Sin embargo, la estructura de las columnas no está estrictamente regulada; es decir, pueden agruparse en familias con un formato específico. Además, las filas de una familia de columnas tienen identificadores únicos.

Aquí una lista de los DBMS de bases de datos no relacionales más populares:

  • MongoDB: Puede manejar datos sin estructura y cambiantes, posee una alta velocidad de lectura y tiene fácil escalabilidad horizontal.
  • Cassandra: Es adecuado para trabajar con grandes volúmenes de datos.

El Modelo Entidad-Relación (ER)

El modelo Entidad-Relación (ER) es uno de los modelos de datos más populares. Se basa en una representación del mundo real en que los datos se describen como entidades, relaciones y atributos. El principal concepto del modelo ER es la entidad, que es una "cosa" en el mundo real con existencia independiente. Una entidad puede ser un objeto físico (una persona, un auto, una casa o un empleado) o un objeto conceptual (una compañía, un puesto de trabajo o un curso universitario). Cada entidad tiene propiedades específicas, llamadas atributos, que la describen. Por ejemplo, una sala de clases tiene un nombre (19S, F20), una ubicación, un cupo máximo, etc. En nuestro ejemplo, la entidad "alumno" posee los atributos nombre y matrícula. Cada uno de los atributos de una entidad posee un dominio, el que corresponde al tipo del atributo. Para todo conjunto de valores de una entidad, debe existir un atributo o combinación de atributos, que identifique a cada entidad en forma única. Este atributo o combinación de atributos se denomina llave (primaria).

Una relación se puede definir como una asociación entre entidades. Por ejemplo, la entidad "libro" puede estar relacionada con la entidad "persona" por medio de la relación "está pedido". La entidad "alumno" puede estar relacionada con la entidad "curso" por la relación "está inscrito". Una relación también puede tener atributos.

Ejemplo de Base de Datos para una Compañía

Suponga que estamos modelando los datos de una COMPAÑIA. La base de datos COMPAÑIA debe mantener información sobre los empleados de la compañía, los departamentos y los proyectos.

  1. La compañía está organizada en departamentos. Cada departamento tiene un nombre único, un número único, y un empleado particular quien lo administra. Se quiere saber la fecha en que el empleado administrador empezó a hacerse cargo del departamento.
  2. Cada departamento controla un cierto número de proyectos.
  3. Para cada empleado se desea tener su nombre, rut, dirección, salario, sexo y año de nacimiento. Un empleado es asignado a un departamento, pero puede trabajar en varios proyectos, los que no son necesariamente controlados por el mismo departamento. Se quiere saber el número de horas semanales que un empleado trabaja en cada proyecto.
  4. Se desea conocer las personas dependientes de cada empleado para propósitos de seguros.

Recuperación de Información con SQL

SQL tiene una instrucción principal para recuperar información de una base de datos: el comando SELECT. Esta instrucción tiene muchas opciones. <condición> es una expresión de búsqueda condicional (lógica) que identifica las tuplas que van a ser recuperadas por la consulta. Esta consulta involucra solamente la relación EMPLEADO, señalada en la cláusula FROM. En la cláusula WHERE, la condición DNOMBRE = "Investigación" es una condición de selección. La condición DNUMERO = NDEPTO es una condición de asociación, y asocia la llave foránea NDEPTO de la relación EMPLEADO, con el correspondiente número de departamento (DNUMERO) de la relación DEPARTAMENTO.

En SQL, un mismo nombre puede ser usado por dos (o más) atributos en diferentes relaciones. Cuando esto sucede, y una consulta se refiere a dos o más atributos con el mismo nombre, el nombre de la relación debe ser puesto como prefijo del nombre de cada atributo, para avitar ambigüedad. Por ejemplo, supongamos que los atributos NDEPTO y NPILA de EMPLEADO se llamaran DNUMERO y NOMBRE respectivamente, y el atributo DNOMBRE de DEPARTAMENTO también se llamara NOMBRE. En este caso, se pueden declarar nombres alternativos para la misma relación, llamados alias. El nombre del alias se escribe inmediatamente después del nombre de la relación. También se puede declarar usando la palabra "AS", por ejemplo: EMPLEADO AS E. También es posible renombrar (como alias) todos los atributos de una relación en la cláusula FROM, de esta manera: EMPLEADO AS E(NP, AP1, AP2, RUT, FN, DIR, SE, SU, RUTS, ND).

Los alias pueden ser usados en cualquier consulta, no sólo cuando hay nombres repetidos. Los alias tienen sentido sólo en la consulta en que son definidos. En una consulta puede omitirse la cláusula WHERE, lo que indica que no hay condiciones sobre las tuplas a seleccionar (TODAS las tuplas son seleccionadas). Si más de una relación es especificada en la cláusula FROM, y no existe cláusula WHERE, entonces el producto cruz (todas las posibles combinaciones de tuplas) de estas relaciones es seleccionado. Es importante especificar cada condición de selección y cada condición de asociación en la cláusula WHERE.

Para recuperar todos los valores de los atributos de las tuplas seleccionadas, se puede usar un asterisco (no es necesario poner todos los nombres), el cual significa todos los atributos. En una consulta SQL pueden aparecer tuplas duplicadas. Si no queremos que esto suceda, se puede usar la palabra DISTINCT en la cláusula SELECT, en cuyo caso sólo tuplas distintas aparecen en la relación.

En la consulta anterior obtenemos una tabla con la lista de salarios de todos los empleados. Sin embargo, si dos o más empleados ganan lo mismo, el mismo valor aparece varias veces en la tabla. En SQL existe una operación UNION que regresa la unión (como en conjuntos) de relaciones, es decir, regresa todas las tuplas que aparecen en alguna de las relaciones. Las tuplas duplicadas son eliminadas del resultado, a menos que se especifique la cláusula ALL después de la operación.

El primer SELECT recupera los proyectos que involucran a "Pérez" como gerente del departamento que controla el proyecto, y el segundo SELECT regresa los proyectos que involucran a "Pérez" como trabajador en el proyecto. Note que si varios empleados tienen como primer apellido "Pérez", se recuperan los números de proyecto en que están involucrados todos ellos. Al aplicar la operación UNION a los dos SELECT, se obtiene el resultado deseado.

Es importante notar que la elección correcta de la base de datos deberá basarse en las necesidades específicas de tu aplicación para garantizar un rendimiento óptimo, una gestión eficiente de los datos y la mejor adaptabilidad a los requisitos cambiantes.

TAG: #Empleado

Lea también: