Una ventaja significativa de usar un RDBMS es la «integridad referencial». La integridad referencial se refiere a la exactitud y consistencia de los datos. Esta integridad de los datos se logra mediante el uso de estas claves primarias y foráneas.
La integridad referencial preserva la integridad de los datos mediante «restricciones». Las restricciones son las reglas que refuerzan la exactitud de los datos impidiendo que se elimine un registro relacionado sin eliminar primero el registro primario de la tabla principal. Si se ha añadido correctamente una relación de clave primaria a clave externa, el intento de eliminar un registro primario sin eliminar primero los registros relacionados de otras tablas bloqueará la transacción hasta que se eliminen los registros relacionados. Esto evita lo que se conoce como «registros huérfanos», que son registros referenciados en una tabla que ya no tienen un registro primario en la tabla principal.
Las tres reglas que impone la integridad referencial son:
1. Una clave foránea debe tener una clave primaria correspondiente. (Regla de «no huérfanos».)
2. Cuando se elimina un registro en una tabla primaria, todos los registros relacionados que hacen referencia a la clave primaria también deben ser eliminados, lo que normalmente se logra mediante el uso de la eliminación en cascada.
3. Si la clave primaria de un registro cambia, todos los registros correspondientes en otras tablas que utilizan la clave primaria como clave extranjera también deben ser modificados. Esto puede lograrse utilizando una actualización en cascada.
La consulta de los datos en un sistema de gestión de bases de datos relacionales se realiza utilizando el Lenguaje de Consulta Estructurado (SQL), que es un lenguaje robusto diseñado para la gestión de los datos alojados en una base de datos relacional.
SQL tiene la capacidad de crear, recuperar, actualizar y eliminar registros y se basa en gran medida en esta relación clave primaria/extranjera para identificar los datos relacionados a través de múltiples tablas. Las capacidades de SQL hacen que el sistema de base de datos relacional sea la primera opción para cualquier aplicación que requiera una fuerte funcionalidad transaccional, minería de datos e informes complejos.
Esta sentencia SQL demuestra la recuperación de un conjunto de resultados de cómo se recuperarían todos los registros de ventas de un único empleado cuyo EmployeeId = 1.
SELECT * FROM Empleados
JOIN Ventas ON Empleados.EmployeeId = SALES.EmployeeId
WHERE EmployeeId = 1
Esta siguiente sentencia SQL es un ejemplo de una consulta que implementa uniones en múltiples tablas. En este caso, la consulta SQL recupera toda la información de los empleados, la información de las ventas y la información de los clientes de la tabla Customers.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
JOIN Customers ON Customers.CustomerId = SALES.CustomerId
WHERE EmployeeId = 1
Las bases de datos relacionales también proporcionan una funcionalidad llamada «indexación». Un índice de base de datos es una estructura de datos que mejora la velocidad de recuperación de datos. Los índices se suelen añadir a los campos de datos que se utilizan habitualmente para consultar y unir tablas. En las sentencias SQL anteriores EmployeeId y CompanyId serían candidatas a este tipo de optimización.
- Bases de datos no relacionales
- Almacenes de datos de documentos
- Los almacenes de datos columnares (u orientados a columnas)
- Almacenes de clave-valor
- Los almacenes de documentos
- Bases de datos gráficas
- En resumen
- Lo que hay que saber sobre las bases de datos relacionales:
- Bases de datos no relacionales/NoSQL:
Bases de datos no relacionales
La base de datos no relacional, o base de datos NoSQL, almacena datos. Sin embargo, a diferencia de la base de datos relacional, no hay tablas, filas, claves primarias o claves foráneas. En su lugar, la base de datos no relacional utiliza un modelo de almacenamiento optimizado para los requisitos específicos del tipo de datos que se almacenan.
Algunas de las bases de datos NoSQL más populares son MongoDB, Apache Cassandra, Redis, Couchbase y Apache HBase.
Hay cuatro tipos no relacionales populares: almacén de datos de documentos, base de datos orientada a columnas, almacén de valores clave y base de datos de gráficos. A menudo se utilizan combinaciones de estos tipos para una misma aplicación.
Almacenes de datos de documentos
Un almacén de datos de documentos gestiona un conjunto de campos de cadena con nombre y valores de datos de objetos en una entidad denominada «documento» que se almacena normalmente en forma de documentos JSON, que pueden codificarse de diversas formas, como XML, YAML, JSON, BSON o como texto sin formato. Los campos dentro de los documentos están expuestos, lo que permite a una aplicación consultar y filtrar los datos utilizando los valores de los campos.
Los almacenes de documentos no requieren que todos los documentos mantengan estructuras de datos idénticas, lo que proporciona una gran flexibilidad. Es fácil ver entonces cómo se puede aprovechar esta flexibilidad a medida que cambian los requisitos de una organización.
Los almacenes de datos columnares (u orientados a columnas)
Un almacén de datos columnares organiza los datos en columnas, lo que es conceptualmente similar a la base de datos relacional. La verdadera ventaja de una base de datos columnar está en su enfoque desnormalizado para estructurar datos dispersos, que proviene de su enfoque orientado a columnas para almacenar datos.
Almacenes de clave-valor
Esta es la menos complicada de las bases de datos NoSQL y, como su nombre indica, el almacén de clave-valor es simplemente una colección de pares de clave-valor contenidos dentro de un objeto.
Los almacenes de documentos
Los almacenes de documentos son un poco más complejos que los almacenes de valor-clave. No asumen una estructura de documento particular especificada con un esquema. El almacén de documentos está diseñado para almacenar documentos cotidianos tal cual, y permiten realizar consultas complicadas.
MongoDB y CouchDB son ejemplos de almacenes de documentos.
Bases de datos gráficas
El último es el tipo de base de datos no relacional más complejo. Está diseñada para almacenar eficientemente las relaciones entre entidades. Cuando los datos están muy interconectados, como los sistemas de compra y fabricación o los catálogos de referencia, las bases de datos gráficas son una buena solución.
Las posibilidades de las bases de datos NoSQL gráficas son infinitas, y con los datos que recopilamos cada vez más interconectados, las bases de datos gráficas van a seguir ganando en popularidad, incluyendo la todavía dominante base de datos relacional.
En lugar del Lenguaje de Consulta Estructural (SQL) utilizado por las bases de datos relacionales, la base de datos NoSQL utiliza Object-relational-mapping (ORM). El concepto de ORM es la capacidad de escribir consultas utilizando su lenguaje de programación preferido. Algunos de los ORM más populares son Java, Javascript, .NET y PHP.
En resumen
Lo que hay que saber sobre las bases de datos relacionales:
-
Trabajan con datos estructurados.
-
Las relaciones en el sistema tienen restricciones, lo que promueve un alto nivel de integridad de los datos.
-
Existen capacidades de indexación ilimitadas, lo que resulta en tiempos de respuesta de consulta más rápidos.
-
Son excelentes para mantener las transacciones de datos seguras.
-
Proporcionan la capacidad de escribir consultas SQL complejas para el análisis de datos y la elaboración de informes.
-
Sus modelos pueden asegurar y hacer cumplir las reglas de negocio en la capa de datos añadiendo un nivel de integridad de datos que no se encuentra en una base de datos no relacional.
-
Están orientadas a tablas y filas.
-
Utilizan SQL (lenguaje de consulta estructurado) para dar forma y manipular los datos, lo cual es muy potente.
-
Ejemplos de bases de datos SQL: MySql, Oracle, Sqlite, Postgres y MS-SQL. Ejemplos de bases de datos NoSQL: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j y CouchDb.
-
Las bases de datos SQL son las más adecuadas para las aplicaciones de tipo transaccional de uso intensivo.
Bases de datos no relacionales/NoSQL:
-
Tienen la capacidad de almacenar grandes cantidades de datos con poca estructura.
-
Proporcionan escalabilidad y flexibilidad para satisfacer los cambiantes requisitos del negocio.
-
Proporcionan opciones sin esquema o con esquema de lectura.
-
Tienen la capacidad de capturar todo tipo de datos «Big Data», incluyendo datos no estructurados.
-
Están orientados a documentos.
-
Ejemplos de bases de datos NoSQL o no relacionales: MongoDB, Apache Cassandra, Redis, Couchbase y Apache HBase.
-
Son las mejores para el desarrollo rápido de aplicaciones. NoSQL es la mejor selección para el almacenamiento flexible de datos con poca o ninguna limitación de estructura.
-
Proporcionan un modelo de datos flexible con la capacidad de almacenar y combinar fácilmente datos de cualquier estructura sin la necesidad de modificar un esquema.
Entonces, ¿cuál deberías elegir para tu proyecto? Para responder a esta pregunta podemos volver al principio de este artículo. Estos dos tipos de bases de datos tan diferentes son igualmente útiles por derecho propio, pero por razones y casos de uso opuestos. Una no es necesariamente mejor que la otra y tanto las bases de datos relacionales como las no relacionales tienen su lugar.
En resumen, no hay una única respuesta correcta. La mejor manera de determinar qué tipo de base de datos es mejor para su proyecto es analizar las necesidades de la organización y la funcionalidad de la aplicación que necesita lograr.