Una base de datos relacional ( RDB [1] ) es una base de datos basada en el modelo relacional de datos, tal como lo propuso EF Codd en 1970. [2] Un sistema de gestión de bases de datos 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 están equipados con la opción de usar SQL (lenguaje de consulta estructurado) para consultar y actualizar la base de datos. [3]
El concepto de base de datos relacional fue definido por EF Codd en IBM en 1970. Codd introdujo el término relacional en su artículo de investigación "Un modelo relacional de datos para grandes bancos de datos compartidos". [2] En este artículo y en artículos posteriores, definió lo que quería decir con relación . Una definición bien conocida de lo que constituye un sistema de base de datos relacional está compuesta por las 12 reglas de Codd . Sin embargo, ninguna implementación comercial del modelo relacional se ajusta a todas las reglas de Codd, [4] por lo que el término ha llegado gradualmente a describir una clase más amplia de sistemas de base de datos, que como mínimo:
En 1974, IBM comenzó a desarrollar System R , un proyecto de investigación para desarrollar un prototipo de RDBMS. [5] [6] El primer sistema vendido como RDBMS fue Multics Relational Data Store (junio de 1976). [ cita requerida ] Oracle fue lanzado en 1979 por Relational Software, ahora Oracle Corporation . [7] Ingres e IBM BS12 siguieron. Otros ejemplos de RDBMS incluyen IBM Db2 , SAP Sybase ASE e Informix . En 1984, comenzó a desarrollarse el primer RDBMS para Macintosh , cuyo nombre en código era Silver Surfer, y se lanzó en 1987 como 4th Dimension y hoy se conoce como 4D. [8]
Los primeros sistemas que fueron implementaciones relativamente fieles del modelo relacional fueron:
La definición más común de un RDBMS es la de 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 suelen implementar algunas de las 12 reglas de Codd, pero no todas.
Una segunda escuela de pensamiento sostiene que si una base de datos no implementa todas las reglas de Codd (o la comprensión actual del modelo relacional, tal como lo expresaron Christopher J. Date , Hugh Darwen y otros), no es relacional. Esta visión, compartida 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 mayor claridad, a menudo se refieren a algunos RDBMS como sistemas de gestión de bases de datos verdaderamente relacionales (TRDBMS), nombrando a otros como sistemas de gestión de bases de datos pseudo-relacionales (PRDBMS). [ cita requerida ]
A partir de 2009, la mayoría de los DBMS relacionales comerciales emplean SQL como lenguaje de consulta . [13]
Se han propuesto e implementado lenguajes de consulta alternativos, en particular la implementación de Ingres QUEL anterior a 1996 .
Un modelo relacional 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 . [14] 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 "silla") y las columnas representan valores atribuidos a esa instancia (como dirección o precio).
Por ejemplo, cada fila de una tabla de clases corresponde a una clase, y una clase corresponde a varios estudiantes, por lo que la relación entre la tabla de clases y la tabla de estudiantes es "uno a muchos" [15].
Cada fila de una tabla tiene su propia clave única. Las filas de una tabla se pueden vincular con filas de otras tablas añadiendo 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 se pueden representar mediante un conjunto simple de conceptos. [2]
Parte de este procesamiento implica poder seleccionar o modificar de manera consistente una y solo una fila en una tabla. Por lo tanto, la mayoría de las implementaciones físicas tienen una clave primaria (PK) única para cada fila en una tabla. Cuando se escribe una nueva fila en la tabla, se genera un nuevo valor único para la clave primaria; esta es la clave que el sistema usa principalmente para acceder a la tabla. El rendimiento del sistema está optimizado para las PK. También se pueden identificar y definir otras claves más naturales como claves alternativas (AK). A menudo se necesitan varias columnas para formar una AK (esta es una de las razones por las que una sola columna de números enteros suele convertirse en la 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 de una base de datos se utilizan para definir las relaciones entre las tablas. Cuando una clave primaria migra a otra tabla, se convierte en una clave externa (FK) en la otra tabla. Cuando cada celda puede contener solo un valor y la clave primaria migra a una tabla de entidades 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 relaciones de muchos a muchos creando una tabla adicional que contiene las claves primarias de las otras dos tablas de entidades: la relación se convierte en una entidad; la tabla de resolución se nombra entonces apropiadamente y las dos FK se combinan para formar una clave primaria. La migración de claves primarias a otras tablas es la segunda razón principal por la que los números enteros asignados por el sistema se utilizan normalmente como claves primarias; por lo general, no hay eficiencia ni claridad en la migración de un montón de otros tipos de columnas.
Las relaciones son una conexión lógica entre distintas tablas (entidades), que se establece a partir de la interacción entre dichas tablas. Estas relaciones se pueden modelar como un modelo entidad-relación .
Para que un sistema de gestión de bases de datos (DBMS) funcione de manera eficiente y precisa, debe utilizar transacciones ACID . [16] [17] [18]
Parte de la programación dentro de un RDBMS se logra mediante procedimientos almacenados (SP). A menudo, se pueden utilizar procedimientos 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 los datos.
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 . [2] La visión de Codd sobre 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 de base de datos predominante. 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 de bases de datos relacionales más importantes y el término SQL correspondiente:
En una base de datos relacional, una relación es un conjunto de tuplas que tienen los mismos atributos . Una tupla suele representar un objeto e información sobre ese objeto. Los objetos suelen ser objetos físicos o conceptos. Una relación suele describirse como una tabla , que está organizada en filas y columnas . Todos los datos a los que hace referencia un atributo pertenecen al mismo dominio y cumplen 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 select para identificar tuplas, project para identificar atributos y join para combinar relaciones. Las relaciones se pueden modificar utilizando los operadores insert , delete y update . Las nuevas tuplas pueden proporcionar valores explícitos o derivarse de una consulta. De manera similar, las consultas identifican tuplas para actualizarlas o eliminarlas.
Las tuplas son únicas por definición. Si la tupla contiene una clave candidata o principal, obviamente es única; sin embargo, no es necesario definir una clave principal para que una fila o un registro sean 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 .
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, sino que 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 utilizar como una capa de abstracción .
Un dominio describe el conjunto de valores posibles para un atributo determinado y puede considerarse una restricción sobre el valor del atributo. Matemáticamente, adjuntar un dominio a un atributo significa que cualquier valor para el atributo debe ser un elemento del conjunto especificado. La cadena de caracteres "ABC" , por ejemplo, no está en el dominio de los números enteros, pero sí lo está el valor entero 123. 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).
Las restricciones se utilizan a menudo para hacer 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 de negocio en la base de datos y respaldan 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 relaciones . Estas suelen definirse utilizando 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) o a 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 .
Cada relación /tabla tiene una clave primaria, siendo esta una consecuencia de que una relación sea un conjunto . [19] Una clave primaria 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 utilizan claves sustitutas en su lugar. Una clave sustituta es un atributo artificial asignado a un objeto que lo identifica de forma única (por ejemplo, en una tabla de información sobre estudiantes en una escuela, a todos se les puede asignar un ID de estudiante para diferenciarlos). La clave sustituta no tiene un significado intrínseco (inherente), sino que es útil por su capacidad para identificar de forma única una tupla. Otra ocurrencia común, especialmente en relación con 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. [20]
Una clave externa hace referencia a un campo de una tabla relacional que coincide con la columna de clave principal de otra tabla. Relaciona las dos claves. Las claves externas no necesitan tener valores únicos en la relación de referencia. Una clave externa se puede utilizar para realizar referencias cruzadas entre tablas y utiliza de manera efectiva los valores de los atributos en la relación referenciada para restringir el dominio de uno o más atributos en la relación referenciada. El concepto se describe formalmente como: "Para todas las tuplas en la relación referenciada proyectadas sobre los atributos de referencia, debe existir una tupla en la relación referenciada proyectada sobre esos mismos atributos de manera que los valores en cada uno de los atributos de referencia coincidan con los valores correspondientes en los atributos referenciados".
Un procedimiento almacenado es un código ejecutable que está asociado con la base de datos y generalmente se almacena en ella. Los procedimientos almacenados suelen recopilar y personalizar operaciones comunes, como insertar una tupla en una relación , recopilar información estadística sobre patrones de uso o encapsular lógica y cálculos comerciales complejos . 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 RDBMS de SQL suelen permitir a los desarrolladores aprovechar las extensiones de procedimiento (a menudo específicas del proveedor) de 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.
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 utilizando esos atributos pueden encontrar tuplas coincidentes directamente utilizando el índice (similar a la búsqueda en la tabla Hash ), sin tener que comprobar cada tupla por turno. Esto es análogo a utilizar 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 el libro entero 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 suelen implementarse mediante árboles B+ , árboles R y mapas de bits . Los índices normalmente no se consideran parte de la base de datos, ya que se consideran un detalle de implementación, aunque los índices suelen estar mantenidos por 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 de tiempo constante (sin dependencia del tamaño siempre que la parte relevante del índice quepa en la memoria).
Las consultas realizadas a la base de datos relacional y las variables rel derivadas 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 basaban en las operaciones matemáticas tradicionales con conjuntos :
Los operadores restantes propuestos por Codd implican operaciones especiales específicas de las bases de datos relacionales:
Se han introducido o propuesto otros operadores desde la introducción de los ocho originales por parte de Codd, incluidos operadores de comparación relacional y extensiones que ofrecen soporte para anidamiento y datos jerárquicos, entre otros.
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 los dominios no simples (valores no atómicos) y la redundancia (duplicación) de los datos, lo que a su vez evita anomalías en la manipulación de datos y la pérdida de integridad de los mismos. Las formas más comunes de normalización aplicadas a las bases de datos se denominan formas normales .
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". [21] RDBMS es una extensión de esa sigla que a veces se utiliza cuando la base de datos subyacente es relacional.
Una definición alternativa de un sistema de gestión de bases de datos relacionales es un sistema de gestión de bases 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. [22]
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 de fabricación y logística, 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 e infructuosos 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 objeto-relacional entre bases de datos relacionales y programas de aplicación orientados a objetos), así como por los sistemas de administración de bases de datos XML en la década de 1990. [23] Sin embargo, debido a la expansión de las tecnologías, como el escalamiento horizontal de clústeres de computadoras , las bases de datos NoSQL se han vuelto populares recientemente como una alternativa a las bases de datos RDBMS. [24]
La arquitectura de base de datos relacional distribuida (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 en red cooperen para cumplir con las solicitudes SQL. [25] [26] Los mensajes, protocolos y componentes estructurales de DRDA están definidos por la arquitectura de gestión de datos distribuidos .
Según DB-Engines , en enero de 2023 los sistemas más populares en el sitio web db-engines.com fueron: [27]
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 incluyendo Sybase (4,6%) y Teradata (3,7%). [28]
El producto se llamaba SQL/DS (lenguaje de consulta estructurado/almacén de datos) y funcionaba en el entorno del sistema operativo DOS/VSE.
{{cite book}}
: Mantenimiento CS1: fecha y año ( enlace )