stringtranslate.com

Base de datos relacional

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]

Historia

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:

  1. Presentar los datos al usuario como relaciones (una presentación en forma de tabla, es decir, como una colección de tablas donde cada tabla consta de un conjunto de filas y columnas );
  2. Proporcionar operadores relacionales para manipular los datos en forma de tabla.

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 .

Modelo relacional

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].

Llaves

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.

Relaciones

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 .

Actas

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]

Procedimientos almacenados

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.

Terminología

Terminología de bases de datos relacionales

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:

Relaciones o tablas

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 .

Relaciones base y derivadas

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 .

Dominio

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).

Restricciones

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 .

Clave primaria

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]

Clave externa

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".

Procedimientos almacenados

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.

Í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 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).

Operaciones relacionales

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.

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 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 .

Sistema de gestión de bases de datos relacionales (RDBMS)

La estructura general de una base de datos relacional

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]

Bases de datos relacionales distribuidas

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 .

Lista de motores de bases de datos

Según DB-Engines , en enero de 2023 los sistemas más populares en el sitio web db-engines.com fueron: [27]

  1. Base de datos Oracle
  2. MySQL
  3. Servidor Microsoft SQL
  4. PostgreSQL (software libre)
  5. IBM Db2
  6. Microsoft Access
  7. SQLite (software libre)
  8. MariaDB (software libre)
  9. Copo de nieve
  10. Base de datos SQL de Microsoft Azure
  11. Apache Hive (software libre)
  12. Teradata Vantage

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]

Véase también

Referencias

  1. ^ Hastings, Jordan (2003). Herramientas de software portátiles para gestionar y hacer referencia a taxonomías. Actas del taller sobre técnicas de cartografía digital de 2003. Vol. 03–471. 2. Tecnología de bases de datos relacionales y representación taxonómica. Archivado desde el original el 21 de octubre de 2014. Consultado el 6 de abril de 2024 a través del Servicio Geológico de los Estados Unidos .
  2. ^ abcd Codd, EF (1970). "Un modelo relacional de datos para grandes bancos de datos compartidos". Comunicaciones de la ACM . 13 (6): 377–387. doi : 10.1145/362384.362685 . S2CID  207549016.
  3. ^ Ambler, Scott (21 de marzo de 2023). "Bases de datos relacionales 101: una mirada al panorama general".[ Se necesita una mejor fuente ]
  4. ^ Date, Chris (5 de mayo de 2005). Base de datos en profundidad: teoría relacional para profesionales . O'Reilly. ISBN 0-596-10012-4.
  5. ^ Financiar una revolución: apoyo gubernamental a la investigación informática. National Academies Press. 8 de enero de 1999. ISBN 0309062780.
  6. ^ Sumathi, S.; Esakkirajan, S. (13 de febrero de 2008). Fundamentos de los sistemas de gestión de bases de datos relacionales . Springer. ISBN 978-3540483977El producto se llamaba SQL/DS (lenguaje de consulta estructurado/almacén de datos) y funcionaba en el entorno del sistema operativo DOS/VSE .
  7. ^ "Cronología de Oracle" (PDF) . Revista Profit . 12 (2). Oracle: 26 de mayo de 2007. Consultado el 16 de mayo de 2013 .
  8. ^ "Nuevo programa de software de base de datos lleva a Macintosh a las grandes ligas". tribunedigital-chicagotribune . 28 de junio de 1987 . Consultado el 17 de marzo de 2016 .
  9. ^ Hershey, WR; Easthope, CH (1 de diciembre de 1972). "Una estructura de datos teórica de conjuntos y un lenguaje de recuperación". Foro ACM SIGIR . 7 (4). Association for Computing Machinery : 45–55. doi :10.1145/1095495.1095500 . Consultado el 4 de enero de 2024 .
  10. ^ SIGFIDET '74: Actas del taller de 1974 de ACM SIGFIDET (ahora SIGMOD) sobre descripción, acceso y control de datos: modelos de datos: estructura de datos en conjunto frente a relacional. Association for Computing Machinery . 1 de enero de 1975. doi :10.1145/800297. ISBN 978-1-4503-7418-7. Recuperado el 4 de enero de 2024 .
  11. ^ Notley, MG (1972). El sistema Peterlee IS/1. IBM United Kingdom Scientific Centre . Consultado el 4 de enero de 2024 .
  12. ^ Todd, Stephen (1976). "El vehículo de prueba relacional Peterlee: una descripción general del sistema". Revista de sistemas IBM . 15 (4): 285–308. doi :10.1147/sj.154.0285.
  13. ^ Ramakrishnan, Raghu; Donjerkovic, Donko; Ranganathan, Arvind; Beyer, Kevin S.; Krishnaprasad, Muralidhar (1998). "SRQL: lenguaje de consulta relacional ordenado" (PDF) . E Actas de SSDBM .
  14. ^ "Una descripción general de las bases de datos relacionales". oracle.com .
  15. ^ "Un modelo de relación universal para una base de datos anidada", The Nested Universal Relation Database Model , Lecture Notes in Computer Science, vol. 595, Berlín, Heidelberg: Springer Berlin Heidelberg, págs. 109-135, 1992, doi :10.1007/3-540-55493-9_5, ISBN 978-3-540-55493-6, consultado el 1 de noviembre de 2020
  16. ^ "Gray será honrado con el premio AM Turing esta primavera". Microsoft PressPass. 23 de noviembre de 1998. Archivado desde el original el 6 de febrero de 2009. Consultado el 16 de enero de 2009 .
  17. ^ Gray, Jim (septiembre de 1981). "El concepto de transacción: virtudes y limitaciones" (PDF) . Actas de la 7.ª Conferencia internacional sobre bases de datos de gran tamaño . Cupertino (California): Tandem Computers . pp. 144–154 . Consultado el 9 de noviembre de 2006 .
  18. ^ Gray, Jim, y Reuter, Andreas, Procesamiento de transacciones distribuidas: conceptos y técnicas . Morgan Kaufmann , 1993. ISBN 1-55860-190-2
  19. ^ Fecha (1984), pág. 268.
  20. ^ Connolly, Thomas M; Begg, Carolyn E (2015). Sistemas de bases de datos: un enfoque práctico para el diseño, la implementación y la gestión (edición global). Boston Columbus Indianápolis: Pearson. pág. 416. ISBN 978-1-292-06118-4.
  21. ^ Connolly, Thomas M.; Begg, Carolyn E. (2014). Sistemas de bases de datos: un enfoque práctico para el diseño, la implementación y la gestión (6.ª ed.). Pearson. pág. 64. ISBN 978-1292061184.
  22. ^ Pratt, Philip J.; Last, Mary Z. (8 de septiembre de 2014). Conceptos de gestión de bases de datos (8.ª ed.). Course Technology. pág. 29. ISBN 9781285427102.
  23. ^ Feuerlich, George (21 de abril de 2010). Dateso 10; Tendencias y direcciones de las bases de datos: desafíos y oportunidades actuales (1.ª ed.). Praga, Sokolovsk: MATFYZPRESS. pp. 163–174. ISBN 978-80-7378-116-3.{{cite book}}: Mantenimiento CS1: fecha y año ( enlace )
  24. ^ "Las bases de datos NoSQL se comen el mercado de las bases de datos relacionales". 4 de marzo de 2015. Consultado el 14 de marzo de 2018 .
  25. ^ Reinsch, R. (1988). "Base de datos distribuida para SAA". IBM Systems Journal . 27 (3): 362–389. doi :10.1147/sj.273.0362.
  26. ^ Referencia de arquitectura de base de datos relacional distribuida . IBM Corp. SC26-4651-0. 1990.
  27. ^ "Clasificación de DB-Engines de DBMS relacionales". DB-Engines . Consultado el 29 de abril de 2022 .
  28. ^ "Oracle, líder indiscutible en un mercado de RDBMS de 24 mil millones de dólares". 2012-04-12 . Consultado el 2013-03-01 .

Fuentes