Base de datos relacional

Una base de datos relacional es una base de datos digital basada en el modelo relacional de datos, propuesto por EF Codd en 1970. Un sistema utilizado para mantener bases de datos relacionales es un sistema de gestión de bases de datos relacionales (RDBMS). Muchos sistemas de bases de datos relacionales tienen la opción de usar SQL (lenguaje de consulta estructurado) para consultar y mantener la base de datos.
Historia
El término "base de datos relacional" fue inventado por EF Codd en IBM en 1970. Codd introdujo el término en su artículo de investigación "Un modelo relacional de datos para grandes bancos de datos compartidos". En este artículo y en artículos posteriores, definió lo que entendía por "relacional". Una definición bien conocida de lo que constituye un sistema de base de datos relacional se compone de las 12 reglas de Codd. Sin embargo, ninguna implementación comercial del modelo relacional se ajusta a todas las reglas de Codd, por lo que el término ha llegado gradualmente a describir una clase más amplia de sistemas de bases de datos, que como mínimo:
- Presentar los datos al usuario como relaciones (una presentación en forma tabular, es decir, como una colección de tablas en las que cada tabla consta de un conjunto de filas y columnas);
- Proporcione operadores relacionales para manipular los datos en forma tabular.
En 1974, IBM comenzó a desarrollar System R, un proyecto de investigación para desarrollar un prototipo de RDBMS. El primer sistema vendido como RDBMS fue Multics Relational Data Store (junio de 1976). Oracle fue lanzado en 1979 por Relational Software, ahora Oracle Corporation. Le siguieron Ingres e IBM BS12. Otros ejemplos de RDBMS incluyen IBM Db2, SAP Sybase ASE e Informix. En 1984, comenzó a desarrollarse el primer RDBMS para Macintosh, con el nombre en código Silver Surfer, y fue lanzado en 1987 como 4th Dimension y conocido hoy como 4D.
Los primeros sistemas que fueron implementaciones relativamente fieles del modelo relacional fueron de:
- Universidad de Michigan – Micro DBMS (1969)
- Instituto de Tecnología de Massachusetts (1971)
- IBM UK Scientific Center en Peterlee - IS1 (1970–72) y su sucesor, PRTV (1973–79)
La definición más común de RDBMS es un producto que presenta una vista de los datos como una colección de filas y columnas, incluso si no se basa estrictamente en la teoría relacional. Según esta definición, los productos RDBMS normalmente implementan algunas pero no todas las 12 reglas de Codd.
Una segunda escuela de pensamiento argumenta que si una base de datos no implementa todas las reglas de Codd (o la comprensión actual del modelo relacional, como lo expresaron Christopher J. Date, Hugh Darwen y otros), no es relacional. Este punto de vista, compartido por muchos teóricos y otros seguidores estrictos de los principios de Codd, descalificaría a la mayoría de los DBMS como no relacionales. Para aclarar, a menudo se refieren a algunos RDBMS como sistemas de administración de bases de datos verdaderamente relacionales (TRDBMS), nombrando a otros sistemas de administración de bases de datos pseudo-relacionales (PRDBMS).
A partir de 2009, la mayoría de los DBMS relacionales comerciales emplean SQL como lenguaje de consulta.
Se han propuesto e implementado lenguajes de consulta alternativos, en particular la implementación anterior a 1996 de Ingres QUEL.

Modelo relacional
Este modelo organiza los datos en una o más tablas (o "relaciones") de columnas y filas, con una clave única que identifica cada fila. Las filas también se denominan registros o tuplas. Las columnas también se denominan atributos. Generalmente, cada tabla/relación representa un "tipo de entidad" (como cliente o producto). Las filas representan instancias de ese tipo de entidad (como "Lee" o "presidente") y las columnas representan valores atribuidos a esa instancia (como dirección o precio).
Por ejemplo, cada fila de una tabla de clase corresponde a una clase y una clase corresponde a varios estudiantes, por lo que la relación entre la tabla de clase y la tabla de estudiantes es "uno a muchos".
Llaves
Cada fila de una tabla tiene su propia clave única. Las filas de una tabla se pueden vincular a filas de otras tablas agregando una columna para la clave única de la fila vinculada (estas columnas se conocen como claves externas). Codd demostró que las relaciones de datos de complejidad arbitraria pueden representarse mediante un conjunto simple de conceptos.
Parte de este procesamiento implica poder seleccionar o modificar de manera constante una y solo una fila en una tabla. Por lo tanto, la mayoría de las implementaciones físicas tienen una clave principal única (PK) para cada fila de una tabla. Cuando se escribe una nueva fila en la tabla, se genera un nuevo valor único para la clave principal; esta es la clave que el sistema utiliza principalmente para acceder a la tabla. El rendimiento del sistema está optimizado para PK. Otras claves más naturales también pueden identificarse y definirse como claves alternativas (AK). A menudo, se necesitan varias columnas para formar un AK (esta es una de las razones por las que una sola columna entera suele convertirse en PK). Tanto las PK como las AK tienen la capacidad de identificar de manera única una fila dentro de una tabla. Se puede aplicar tecnología adicional para garantizar una identificación única en todo el mundo, un identificador único global, cuando existen requisitos de sistema más amplios.
Las claves primarias dentro de una base de datos se utilizan para definir las relaciones entre las tablas. Cuando un PK migra a otra tabla, se convierte en una clave externa en la otra tabla. Cuando cada celda puede contener solo un valor y PK migra a una tabla de entidad regular, este patrón de diseño puede representar una relación de uno a uno o de uno a muchos. La mayoría de los diseños de bases de datos relacionales resuelven las relaciones de muchos a muchos mediante la creación de una tabla adicional que contiene las PK de las otras dos tablas de entidades: la relación se convierte en una entidad; la tabla de resolución se nombra apropiadamente y los dos FK se combinan para formar un PK. La migración de PK a otras tablas es la segunda razón principal por la que los números enteros asignados por el sistema se usan normalmente como PK; por lo general, no hay eficiencia ni claridad al migrar un montón de otros tipos de columnas.
Relaciones
Las relaciones son una conexión lógica entre diferentes tablas, establecida sobre la base de la interacción entre estas tablas.
Actas

Para que un sistema de administración de bases de datos (DBMS) funcione de manera eficiente y precisa, debe usar transacciones ACID.
Procedimientos almacenados
La mayor parte de la programación dentro de un RDBMS se realiza mediante procedimientos almacenados (SP). A menudo, los procedimientos se pueden utilizar para reducir en gran medida la cantidad de información transferida dentro y fuera de un sistema. Para mayor seguridad, el diseño del sistema puede otorgar acceso solo a los procedimientos almacenados y no directamente a las tablas. Los procedimientos almacenados fundamentales contienen la lógica necesaria para insertar datos nuevos y actualizar los existentes. Se pueden escribir procedimientos más complejos para implementar reglas y lógica adicionales relacionadas con el procesamiento o la selección de datos.
Terminología
La base de datos relacional fue definida por primera vez en junio de 1970 por Edgar Codd, del Laboratorio de Investigación de San José de IBM. La visión de Codd de lo que califica como un RDBMS se resume en las 12 reglas de Codd. Una base de datos relacional se ha convertido en el tipo predominante de base de datos. Otros modelos además del modelo relacional incluyen el modelo de base de datos jerárquica y el modelo de red.
La siguiente tabla resume algunos de los términos más importantes de las bases de datos relacionales y el término SQL correspondiente:
término SQL | Término de base de datos relacional | Descripción |
---|---|---|
Hilera | tupla o registro | Un conjunto de datos que representa un solo elemento. |
Columna | Atributo o campo | Un elemento etiquetado de una tupla, por ejemplo, "Dirección" o "Fecha de nacimiento" |
Mesa | Relación o Base relvar | Un conjunto de tuplas que comparten los mismos atributos; un conjunto de columnas y filas |
Vista o conjunto de resultados | var.rel derivado | Cualquier conjunto de tuplas; un informe de datos del RDBMS en respuesta a una consulta |
Relaciones o tablas
Una relación se define como un conjunto de tuplas que tienen los mismos atributos. Una tupla generalmente representa un objeto e información sobre ese objeto. Los objetos son típicamente objetos físicos o conceptos. Una relación generalmente se describe como una tabla, que se organiza en filas y columnas. Todos los datos a los que hace referencia un atributo están en el mismo dominio y se ajustan a las mismas restricciones.
El modelo relacional especifica que las tuplas de una relación no tienen un orden específico y que las tuplas, a su vez, no imponen ningún orden a los atributos. Las aplicaciones acceden a los datos especificando consultas, que utilizan operaciones como seleccionar para identificar tuplas, proyectar para identificar atributos y unir para combinar relaciones. Las relaciones se pueden modificar utilizando los operadores de inserción, eliminación y actualización. Las nuevas tuplas pueden proporcionar valores explícitos o derivarse de una consulta. De manera similar, las consultas identifican tuplas para actualizar o eliminar.
Las tuplas por definición son únicas. Si la tupla contiene una clave primaria o candidata, obviamente es única; sin embargo, no es necesario definir una clave principal para que una fila o registro sea una tupla. La definición de una tupla requiere que sea única, pero no requiere que se defina una clave principal. Debido a que una tupla es única, sus atributos por definición constituyen una superclave.
Relaciones de base y derivadas
En una base de datos relacional, todos los datos se almacenan y se accede a ellos a través de relaciones. Las relaciones que almacenan datos se denominan "relaciones base" y, en las implementaciones, se denominan "tablas". Otras relaciones no almacenan datos, pero se calculan aplicando operaciones relacionales a otras relaciones. Estas relaciones a veces se denominan "relaciones derivadas". En las implementaciones, se denominan "vistas" o "consultas". Las relaciones derivadas son convenientes porque actúan como una sola relación, aunque pueden obtener información de varias relaciones. Además, las relaciones derivadas se pueden usar como una capa de abstracción.
Dominio
Un dominio describe el conjunto de valores posibles para un atributo dado y puede considerarse una restricción sobre el valor del atributo. Matemáticamente, adjuntar un dominio a un atributo significa que cualquier valor del atributo debe ser un elemento del conjunto especificado. La cadena de caracteres "ABC", por ejemplo, no está en el dominio de enteros, pero el valor entero 123 sí lo está. Otro ejemplo de dominio describe los valores posibles para el campo "CoinFace" como ("Heads","Tails"). Por lo tanto, el campo "CoinFace" no aceptará valores de entrada como (0,1) o (H,T).
Restricciones
Las restricciones hacen posible restringir aún más el dominio de un atributo. Por ejemplo, una restricción puede restringir un atributo entero dado a valores entre 1 y 10. Las restricciones proporcionan un método para implementar reglas comerciales en la base de datos y admiten el uso posterior de datos dentro de la capa de aplicación. SQL implementa la funcionalidad de restricción en forma de restricciones de verificación. Las restricciones restringen los datos que se pueden almacenar en las relaciones. Por lo general, se definen mediante expresiones que dan como resultado un valor booleano, que indica si los datos satisfacen o no la restricción. Las restricciones se pueden aplicar a atributos individuales, a una tupla (restringiendo combinaciones de atributos) oa una relación completa. Dado que cada atributo tiene un dominio asociado, existen restricciones (restricciones de dominio). Las dos reglas principales para el modelo relacional se conocen como integridad de entidad e integridad referencial.
Clave primaria
Cada relación/tabla tiene una clave primaria, siendo esta una consecuencia de que una relación es un conjunto.Una clave principal especifica de forma única una tupla dentro de una tabla. Si bien los atributos naturales (atributos utilizados para describir los datos que se ingresan) a veces son buenas claves primarias, a menudo se usan claves sustitutas en su lugar. Una clave sustituta es un atributo artificial asignado a un objeto que lo identifica de manera única (por ejemplo, en una tabla de información sobre los estudiantes de una escuela, a todos se les puede asignar una identificación de estudiante para diferenciarlos). La clave sustituta no tiene un significado intrínseco (inherente), sino que es útil a través de su capacidad para identificar de forma única una tupla. Otra ocurrencia común, especialmente con respecto a la cardinalidad N:M es la clave compuesta. Una clave compuesta es una clave formada por dos o más atributos dentro de una tabla que (juntos) identifican de forma única un registro.
Clave externa
Una clave externa es un campo en una tabla relacional que coincide con la columna de clave principal de otra tabla. Relaciona las dos claves. Las claves foráneas no necesitan tener valores únicos en la relación de referencia. Una clave foránea se puede usar para hacer referencias cruzadas a las tablas y usa efectivamente los valores de los atributos en la relación referenciada para restringir el dominio de uno o más atributos en la relación de referencia. El concepto se describe formalmente como: "Para todas las tuplas en la relación de referencia proyectada sobre los atributos de referencia, debe existir una tupla en la relación de referencia proyectada sobre esos mismos atributos de modo que los valores en cada uno de los atributos de referencia coincidan con los valores correspondientes en los atributos referenciados".
Procedimientos almacenados
Un procedimiento almacenado es un código ejecutable que está asociado y generalmente almacenado en la base de datos. Los procedimientos almacenados generalmente recopilan y personalizan operaciones comunes, como insertar una tupla en una relación, recopilar información estadística sobre patrones de uso o encapsular cálculos y lógica comercial compleja. Con frecuencia se utilizan como una interfaz de programación de aplicaciones (API) por motivos de seguridad o simplicidad. Las implementaciones de procedimientos almacenados en SQL RDBMS a menudo permiten a los desarrolladores aprovechar las extensiones de procedimiento (a menudo específicas del proveedor) a la sintaxis SQL declarativa estándar. Los procedimientos almacenados no forman parte del modelo de base de datos relacional, pero todas las implementaciones comerciales los incluyen.
Índice
Un índice es una forma de proporcionar un acceso más rápido a los datos. Los índices se pueden crear en cualquier combinación de atributos en una relación. Las consultas que filtran usando esos atributos pueden encontrar tuplas coincidentes directamente usando el índice (similar a la búsqueda en la tabla Hash), sin tener que verificar cada tupla por turno. Esto es similar a usar el índice de un libro para ir directamente a la página en la que se encuentra la información que está buscando, de modo que no tenga que leer todo el libro para encontrar lo que está buscando. Las bases de datos relacionales suelen proporcionar múltiples técnicas de indexación, cada una de las cuales es óptima para alguna combinación de distribución de datos, tamaño de relación y patrón de acceso típico. Los índices generalmente se implementan a través de árboles B+, árboles R y mapas de bits. Los índices generalmente no se consideran parte de la base de datos, ya que se consideran un detalle de implementación, aunque los índices generalmente los mantiene el mismo grupo que mantiene las otras partes de la base de datos. El uso de índices eficientes tanto en claves primarias como externas puede mejorar drásticamente el rendimiento de las consultas. Esto se debe a que los índices de árbol B dan como resultado tiempos de consulta proporcionales a log(n) donde n es el número de filas en una tabla y los índices hash dan como resultado consultas en tiempo constante (sin dependencia del tamaño, siempre que la parte relevante del índice encaje en memoria).
Operaciones relacionales
Las consultas realizadas en la base de datos relacional y los varrel derivados en la base de datos se expresan en un cálculo relacional o un álgebra relacional. En su álgebra relacional original, Codd introdujo ocho operadores relacionales en dos grupos de cuatro operadores cada uno. Los primeros cuatro operadores se basaron en las operaciones matemáticas tradicionales de conjuntos:
- El operador de unión (υ) combina las tuplas de dos relaciones y elimina todas las tuplas duplicadas del resultado. El operador de unión relacional es equivalente al operador SQL UNION.
- El operador de intersección (∩) produce el conjunto de tuplas que comparten dos relaciones. La intersección se implementa en SQL en forma del operador INTERSECT.
- El operador de diferencia de conjuntos (-) actúa sobre dos relaciones y produce el conjunto de tuplas de la primera relación que no existen en la segunda relación. La diferencia se implementa en SQL en forma de operador EXCEPTO o MENOS.
- El producto cartesiano (X) de dos relaciones es una unión que no está restringida por ningún criterio, lo que hace que cada tupla de la primera relación coincida con cada tupla de la segunda relación. El producto cartesiano se implementa en SQL como el operador Cross join.
Los operadores restantes propuestos por Codd implican operaciones especiales específicas de las bases de datos relacionales:
- La operación de selección o restricción (σ) recupera tuplas de una relación, limitando los resultados a sólo aquellos que cumplen un criterio específico, es decir, un subconjunto en términos de la teoría de conjuntos. El equivalente SQL de la selección es la instrucción de consulta SELECT con una cláusula WHERE.
- La operación de proyección (π) extrae solo los atributos especificados de una tupla o conjunto de tuplas.
- La operación de unión definida para las bases de datos relacionales a menudo se denomina unión natural (⋈). En este tipo de combinación, dos relaciones están conectadas por sus atributos comunes. La aproximación de MySQL a una unión natural es el operador de unión interna. En SQL, INNER JOIN evita que se produzca un producto cartesiano cuando hay dos tablas en una consulta. Para cada tabla agregada a una consulta SQL, se agrega un INNER JOIN adicional para evitar un producto cartesiano. Por lo tanto, para N tablas en una consulta SQL, debe haber N−1 INNER JOINS para evitar un producto cartesiano.
- La operación de división relacional (÷) es una operación un poco más compleja y esencialmente involucra el uso de las tuplas de una relación (el dividendo) para dividir una segunda relación (el divisor). El operador de división relacional es efectivamente lo opuesto al operador de producto cartesiano (de ahí el nombre).
Se han introducido o propuesto otros operadores desde la introducción de Codd de los ocho originales, incluidos operadores de comparación relacional y extensiones que ofrecen soporte para anidamiento y datos jerárquicos, entre otros.
Normalización
La normalización fue propuesta por primera vez por Codd como parte integral del modelo relacional. Abarca un conjunto de procedimientos diseñados para eliminar dominios no simples (valores no atómicos) y la redundancia (duplicación) de datos, lo que a su vez evita anomalías en la manipulación de datos y pérdida de integridad de datos. Las formas más comunes de normalización aplicadas a las bases de datos se denominan formas normales.
RDBMS
Connolly y Begg definen el Sistema de gestión de bases de datos (DBMS) como un "sistema de software que permite a los usuarios definir, crear, mantener y controlar el acceso a la base de datos". RDBMS es una extensión de ese acrónimo que a veces se usa cuando la base de datos subyacente es relacional.
Una definición alternativa para un sistema de gestión de base de datos relacional es un sistema de gestión de base de datos (DBMS) basado en el modelo relacional. La mayoría de las bases de datos de uso generalizado en la actualidad se basan en este modelo.
Los RDBMS han sido una opción común para el almacenamiento de información en bases de datos utilizadas para registros financieros, información logística y de fabricación, datos de personal y otras aplicaciones desde la década de 1980. Las bases de datos relacionales a menudo han reemplazado a las bases de datos jerárquicas heredadas y las bases de datos de red, porque los RDBMS eran más fáciles de implementar y administrar. No obstante, los datos almacenados relacionales recibieron desafíos continuos y sin éxito por parte de los sistemas de administración de bases de datos de objetos en las décadas de 1980 y 1990 (que se introdujeron en un intento de abordar el llamado desajuste de impedancia relacional de objetos entre las bases de datos relacionales y los programas de aplicación orientados a objetos). así como por los sistemas de gestión de bases de datos XML en la década de 1990.Sin embargo, debido a la expansión de las tecnologías, como el escalado horizontal de los clústeres de computadoras, las bases de datos NoSQL se han vuelto populares recientemente como una alternativa a las bases de datos RDBMS.
Bases de datos relacionales distribuidas
La arquitectura de bases de datos relacionales distribuidas (DRDA) fue diseñada por un grupo de trabajo dentro de IBM en el período de 1988 a 1994. DRDA permite que las bases de datos relacionales conectadas a la red cooperen para cumplir con las solicitudes de SQL. Los mensajes, protocolos y componentes estructurales de DRDA están definidos por la arquitectura de gestión de datos distribuidos.
Cuota de mercado
Según DB-Engines, en abril de 2022, los sistemas más utilizados fueron:
- base de datos oracle
- mysql
- Servidor SQL de Microsoft
- PostgreSQL (software libre)
- ibm db2
- acceso Microsoft
- SQLite (software libre)
- MariaDB (software libre)
- Copo de nieve
- Base de datos SQL de Microsoft Azure
- Apache Hive (software gratuito)
- Ventaja de Teradata
Según la empresa de investigación Gartner, en 2011, los cinco principales proveedores de bases de datos relacionales de software propietario por ingresos fueron Oracle (48,8 %), IBM (20,2 %), Microsoft (17,0 %), SAP, incluido Sybase (4,6 %) y Teradata (3,7 %). %).
Contenido relacionado
Corrección del compilador
Inicialización perezosa
Descifrado de software