Una base de datos relacional ( RDB [1] ) es una base de datos basada en el modelo relacional de datos, propuesto por 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 utilizar 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 trabajo 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 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, [4] 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:
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 necesaria ] Oracle fue lanzado en 1979 por Relational Software, ahora Oracle Corporation . [7] 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. [8]
Los primeros sistemas que fueron implementaciones relativamente fieles del modelo relacional fueron:
La definición más común de RDBMS es un producto que presenta una visión 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 sostiene que si una base de datos no implementa todas las reglas de Codd (o la comprensión actual del modelo relacional, como lo expresan 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 por no ser relacionales. Para aclarar, a menudo se refieren a algunos RDBMS como sistemas de gestión de bases de datos verdaderamente relacionales (TRDBMS), nombrando a otros sistemas de gestión de bases de datos pseudorelacionales (PRDBMS). [ cita necesaria ]
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 anterior a 1996 de Ingres QUEL .
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 llaman 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 a filas de otras tablas agregando una columna para la clave única de la fila vinculada (dichas columnas se conocen como claves externas ). Codd demostró que las relaciones de datos de complejidad arbitraria pueden representarse mediante un conjunto simple de conceptos. [2]
Parte de este procesamiento implica poder seleccionar o modificar consistentemente 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 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 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 enteros suele convertirse en PK). Tanto las PK como las AK tienen la capacidad de identificar de forma ú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 existan 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 una PK migra a otra tabla, se convierte en una clave externa en la otra tabla. Cuando cada celda puede contener solo un valor y la PK migra a una tabla de entidad normal, 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 PK de las otras dos tablas de entidades: la relación se convierte en una entidad; Luego, la tabla de resolución recibe el nombre apropiado y las dos FK se combinan para formar una PK. La migración de PK a otras tablas es la segunda razón principal por la que los enteros asignados por el sistema se utilizan normalmente como PK; Por lo general, no hay eficiencia ni claridad al migrar muchos otros tipos de columnas.
Las relaciones son una conexión lógica entre diferentes tablas (entidades), establecida sobre la base de la interacción entre estas 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 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 se considera 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árquico y el modelo de red .
La siguiente tabla resume algunos de los términos más importantes de bases de datos relacionales 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 o conceptos físicos. 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 están en el mismo dominio y cumplen con 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 insertar , eliminar y actualizar . 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, por definición, son únicas. Si la tupla contiene una clave candidata o primaria, entonces 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 primaria. Debido a que una tupla es única, sus atributos constituyen por definición 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, pero se calculan aplicando operaciones relacionales a otras relaciones. Estas relaciones a veces se denominan "relaciones derivadas". En las implementaciones, estas se denominan " vistas " o "consultas". Las relaciones derivadas son convenientes porque actúan como una relación única, aunque puedan obtener información de varias relaciones. Además, las relaciones derivadas se pueden utilizar como 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, asociar 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 números enteros, pero el valor entero 123 sí lo está. Otro ejemplo de dominio describe los valores posibles para el campo "CoinFace" como ("Cara", "Cruza"). Por lo tanto, el campo "CoinFace" no aceptará valores de entrada como (0,1) o (H,T).
Las restricciones se utilizan a menudo para permitir restringir aún más el dominio de un atributo. Por ejemplo, una restricción puede restringir un atributo entero determinado a valores entre 1 y 10. Las restricciones proporcionan un método para implementar reglas comerciales en la base de datos y respaldar el uso posterior de datos dentro de la capa de aplicación. SQL implementa una 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 pueden aplicarse 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 del modelo relacional se conocen como integridad de entidad e integridad referencial .
Cada relación /tabla tiene una clave primaria, siendo esto 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 . 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 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 gracias a su capacidad para identificar de forma única una tupla. Otro hecho 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. [20]
La clave externa se refiere a un campo en una tabla relacional que coincide con la columna de clave principal de otra tabla. Relaciona las dos claves. No es necesario que las claves externas tengan valores únicos en la relación de referencia. Se puede utilizar una clave externa para hacer referencias cruzadas a tablas y utiliza 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 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 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 empresarial complejos . Con frecuencia se utilizan como interfaz de programación de aplicaciones (API) por seguridad o simplicidad. Las implementaciones de procedimientos almacenados en SQL RDBMS a menudo permiten a los desarrolladores aprovechar las extensiones de procedimientos (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.
Un índice es una forma de proporcionar un acceso más rápido a los datos. Se pueden crear índices sobre cualquier combinación de atributos de 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 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 busca, de modo que no tenga que leer el libro completo para encontrar lo que busca. 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 mediante á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 de 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).
Las consultas realizadas en la base de datos relacional y las variables 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 basaron en las tradicionales operaciones matemáticas de conjuntos :
Los operadores restantes propuestos por Codd implican operaciones especiales específicas de 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.
Codd propuso por primera vez la normalización 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 la pérdida de integridad de los datos. Las formas más comunes de normalización aplicadas a 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 ese inicialismo que a veces se usa cuando la base de datos subyacente es relacional.
Una definición alternativa de 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 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 a 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 gestión de bases de datos de objetos en las décadas de 1980 y 1990 (que se introdujeron en un intento de abordar la llamada falta de coincidencia de impedancia relacional-objeto entre las bases de datos relacionales y los programas de aplicaciones orientados a objetos). así como por los sistemas de gestión de bases de datos XML en la década de 1990. [23] Sin embargo, debido a la expansión de tecnologías, como el escalado horizontal de grupos 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 1988 a 1994. DRDA permite que las bases de datos relacionales conectadas a la 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, incluido Sybase (4,6%) y Teradata (3,7 %). %). [28]
El producto se llamó SQL/DS (Lenguaje de consulta estructurado/Almacén de datos) y se ejecutó en el entorno del sistema operativo DOS/VSE.
{{cite book}}
: Mantenimiento CS1: fecha y año ( enlace )