Una base de datos relacional es un tipo de base de datos que almacena y proporciona acceso a puntos de datos relacionados entre sí. Las bases de datos relacionales se basan en el modelo relacional, una forma intuitiva y directa de representar datos en tablas. En una base de datos relacional, cada fila en una tabla es un registro con una ID única, llamada clave. Las columnas de la tabla contienen los atributos de los datos y cada registro suele tener un valor para cada atributo, lo que simplifica la creación de relaciones entre los puntos de datos.
Este es un ejemplo simple de dos tablas que una pequeña empresa puede usar para procesar pedidos de sus productos. La primera tabla es una tabla de información del cliente, por lo que cada registro incluye el nombre, la dirección, información de envío y facturación, el número de teléfono y otra información de contacto del cliente. Cada fragmento de información (cada atributo) está en su propia columna y la base de datos asigna una ID única (una clave) a cada fila. En la segunda tabla, una tabla de pedidos del cliente, cada registro incluye el ID del cliente que realizó el pedido, el producto solicitado, la cantidad, el tamaño y el color seleccionados, etc., pero no el nombre del cliente ni su información de contacto.
Estas dos tablas tienen una sola cosa en común: la columna de ID (la clave). Gracias a esa columna en común, la base de datos relacional puede establecer una relación entre las dos tablas. Entonces, cuando la aplicación de procesamiento de pedidos de la empresa envíe un pedido a la base de datos, la base de datos podrá examinar la tabla de pedidos del cliente, extraer la información correcta sobre el pedido de productos y usar el ID del cliente de esa tabla para buscar la información de facturación y envío del cliente en la tabla de información del cliente. A continuación, el almacén puede extraer el producto correcto, el cliente puede recibir la entrega del pedido a tiempo y la empresa puede obtener el pago.
El modelo relacional significa que las estructuras de datos lógicas (las tablas de datos, las vistas y los índices) están separadas de las estructuras de almacenamiento físicas. Gracias a esta separación, los administradores de bases de datos pueden gestionar el almacenamiento físico de datos sin que eso influya en el acceso a esos datos como estructura lógica. Por ejemplo, si se cambia el nombre del archivo de una base de datos, eso no significa que vayan a cambiar también los nombres de sus tablas.
La distinción entre lógico y físico se aplica también a las operaciones de base de datos, que son acciones claramente definidas que permiten a las aplicaciones manipular los datos y las estructuras de la base de datos. Con las operaciones lógicas, las aplicaciones pueden especificar el contenido que necesitan, mientras que las operaciones físicas determinan cómo se debe acceder a esos datos y llevan a cabo la tarea.
Para garantizar la precisión y accesibilidad continua de los datos, las bases de datos relacionales siguen ciertas reglas de integridad. Por ejemplo, una regla de integridad podría especificar que no se permite duplicar filas en una tabla, a fin de evitar que se introduzca información errónea en la base de datos.
En los primeros años de las bases de datos, cada aplicación almacenaba datos en su propia estructura única. Cuando los desarrolladores querían crear aplicaciones para usar esos datos, tenían que conocer muy bien esa estructura de datos concreta a fin de encontrar los datos que necesitaban. Esas estructuras de datos eran poco eficaces, el mantenimiento era complicado y era difícil optimizarlas para ofrecer un buen rendimiento en las aplicaciones. El modelo de base de datos relacional se diseñó para resolver el problema causado por estructuras de datos múltiples y arbitrarias.
El modelo de datos relacional proporcionó una forma estándar de representar y consultar datos que podría utilizar cualquier aplicación. Desde el principio, los desarrolladores se dieron cuenta de que la virtud principal del modelo de base de datos relacional era el uso de tablas, ya que era una forma intuitiva, eficiente y flexible de almacenar y acceder a información estructurada.
Con el tiempo, los desarrolladores comenzaron a usar el lenguaje de consulta estructurado (SQL) para escribir y hacer consultas en una base de datos: esto sería otra de las grandes virtudes de este modelo. Durante muchos años, el SQL se ha utilizado como el lenguaje para realizar consultas en bases de datos. Se basa en el álgebra relacional y proporciona un lenguaje matemático de uniformidad interna que facilita la mejora del rendimiento de todas las consultas en bases de datos. Otros métodos empleados necesitan definir consultas individuales.
El modelo relacional es sencillo pero muy potente, y lo utilizan organizaciones de todos los tipos y tamaños para una gran variedad de aplicaciones con datos. Las bases de datos relacionales se usan para rastrear inventarios, procesar transacciones de comercio electrónico, administrar cantidades enormes y esenciales de información de clientes y mucho más. Las bases de datos relacionales se pueden emplear para cualquier aplicación de datos en la que los puntos de datos se relacionen entre sí y deban gestionarse de forma segura, conforme a normas y de un modo uniforme.
Las bases de datos relacionales han existido desde la década de los setenta. En la actualidad, el modelo relacional sigue siendo el más aceptado para las bases de datos, gracias a todas sus virtudes.
El modelo relacional es el ideal para mantener la uniformidad de los datos en todas las aplicaciones y copias de la base de datos (llamadas instancias). Por ejemplo, cuando un cliente deposita dinero en un cajero automático y, a continuación, mira el saldo en un teléfono móvil, el cliente espera ver ese depósito reflejado inmediatamente. Las bases de datos relacionales son perfectas para este tipo de uniformidad, y garantizan que todas las instancias de una base de datos tengan los mismos datos en todo momento.
Mantener este nivel de uniformidad en todo momento con grandes cantidades de datos es difícil para otros tipos de bases de datos. Algunas bases de datos recientes, como NoSQL, solo pueden proporcionar uniformidad eventual. De acuerdo con este principio, cuando la base de datos se escala o cuando varios usuarios acceden a los mismos datos al mismo tiempo, toma algo de tiempo que los datos se actualicen. La uniformidad final es aceptable en algunos casos (por ejemplo, para mantener listas en un catálogo de productos), pero para operaciones comerciales críticas, como transacciones de carritos de compra, la base de datos relacional sigue siendo la referencia.
Las bases de datos relacionales gestionan las reglas y políticas comerciales a un nivel muy detallado, y tienen políticas estrictas sobre el compromiso (es decir, el establecimiento de un cambio en la base de datos como algo permanente). Por ejemplo, imaginemos una base de datos de inventario para rastrear tres piezas que siempre se usan juntas. Cuando se saca una pieza del inventario, las otras dos también deben salir. Si una de las tres piezas no está disponible, ninguna debe extraerse: las tres piezas deben estar disponibles para que la base de datos realice una confirmación. Una base de datos relacional no confirmará ninguna pieza hasta que sepa que puede confirmar las tres. Esta capacidad de compromiso multifacético se llama atomicidad. La atomicidad es la clave para mantener los datos precisos y garantizar el cumplimiento de las reglas, normas y políticas de la empresa.
Son cuatro las propiedades cruciales que definen las transacciones de las bases de datos relacionales: atomicidad, uniformidad, aislamiento y durabilidad. Estas suelen conocerse como ACID, su acrónimo en inglés.
El acceso a los datos implica muchas acciones repetitivas. Por ejemplo, una consulta simple para obtener información de una tabla de datos puede necesitar repetirse cientos o miles de veces para producir el resultado deseado. Estas funciones de acceso a datos requieren algún tipo de código para acceder a la base de datos. Los desarrolladores de aplicaciones no desean escribir código nuevo para estas funciones en cada nueva aplicación. Sin embargo, las bases de datos relacionales permiten procedimientos almacenados: bloques de código a los que se puede acceder con una simple llamada a la aplicación. Por ejemplo, un solo procedimiento almacenado puede proporcionar un etiquetado de registro uniforme para usuarios de múltiples aplicaciones. Los procedimientos almacenados también pueden ayudar a los desarrolladores a garantizar que ciertas funciones de datos en aplicación se implementen de una manera específica.
En una base de datos pueden surgir conflictos cuando varios usuarios o aplicaciones intentan cambiar los mismos datos al mismo tiempo. Las técnicas de bloqueo y concurrencia reducen la posibilidad de conflictos y mantienen la integridad de los datos.
El bloqueo evita que otros usuarios y aplicaciones accedan a los datos mientras se están actualizando. En algunas bases de datos el bloqueo se aplica a toda la tabla, lo que influye de forma negativa en el rendimiento de la aplicación. Otras bases de datos, como las bases de datos relacionales de Oracle, aplican bloqueos en el nivel de registro y mantienen la disponibilidad de los otros registros dentro de la tabla; esto ayuda a garantizar un mejor rendimiento de la aplicación.
La concurrencia gestiona la actividad cuando varios usuarios o aplicaciones hacen llamadas a consultas al mismo tiempo y en la misma base de datos. Esta función proporciona el acceso correcto a los usuarios y aplicaciones de acuerdo con las políticas definidas para el control de datos.
El software utilizado para almacenar, administrar, consultar y recuperar datos almacenados en una base de datos relacional se denomina sistema de gestión de bases de datos relacionales (relational database management system, RDBMS). El RDBMS proporciona una interfaz entre los usuarios/aplicaciones y la base de datos, además de funciones administrativas para gestionar el acceso a los datos, así como su almacenamiento y rendimiento.
Hay varios factores a tener en cuenta al elegir entre diferentes tipos de bases de datos y productos de bases de datos relacionales. El RDBMS que escoja dependerá de las necesidades de su empresa. Piense en las siguientes preguntas:
A lo largo de los años, las bases de datos relacionales han ido cambiando y se han hecho mejores, más rápidas, más fuertes y más fáciles de utilizar. Sin embargo, en algunos sentidos también se han vuelto más complejas, y su administración se ha convertido en una profesión en sí misma. En lugar de utilizar su experiencia para desarrollar aplicaciones innovadoras que aporten valor a la empresa, los desarrolladores han tenido que dedicar la mayor parte de su tiempo a gestionar la base de datos para optimizar su rendimiento.
Hoy en día, la tecnología autónoma se basa en las ventajas del modelo relacional, la tecnología de bases de datos en la nube y el aprendizaje automático para ofrecer un nuevo tipo de base de datos relacional. Las bases de datos de autogestión (también conocidas como bases de datos autónomas) mantienen la potencia y las ventajas del modelo relacional, pero utilizan la inteligencia artificial (IA), el aprendizaje automático y la automatización para supervisar y mejorar el rendimiento de las consultas y las tareas de administración. Por ejemplo, para mejorar el rendimiento de las consultas, la base de datos autónoma puede formular hipótesis y probar índices para agilizar las consultas, y luego incorporar los mejores en producción, todo ello de forma automática. La base de datos de autogestión realiza estas mejoras continuamente, sin la ayuda de ninguna persona.
La tecnología autónoma libera a los desarrolladores de las tareas mundanas de administrar la base de datos. Por ejemplo, ya no tienen que determinar de antemano las necesidades de infraestructura. En lugar de eso, con una base de datos de autogestión pueden añadir recursos de almacenamiento y computación según sea necesario para fomentar el crecimiento de la base de datos. Con solo unos pocos pasos, los desarrolladores pueden crear fácilmente una base de datos relacional autónoma, lo que permite diseñar aplicaciones con mayor rapidez.