stringtranslate.com

modelo relacional

El modelo relacional ( RM ) es un enfoque para la gestión de datos utilizando una estructura y un lenguaje consistente con la lógica de predicados de primer orden , descrito por primera vez en 1969 por el informático inglés Edgar F. Codd , [1] [2] donde todos los datos se representan en términos de tuplas , agrupados en relaciones . Una base de datos organizada en términos del modelo relacional es una base de datos relacional .

El propósito del modelo relacional es proporcionar un método declarativo para especificar datos y consultas: los usuarios declaran directamente qué información contiene la base de datos y qué información quieren de ella, y dejan que el software del sistema de gestión de bases de datos se encargue de describir las estructuras de datos para almacenar los datos. Procedimientos de recuperación de datos y respuesta a consultas.

La mayoría de las bases de datos relacionales utilizan el lenguaje de consulta y definición de datos SQL ; Estos sistemas implementan lo que puede considerarse como una aproximación de ingeniería al modelo relacional. Una tabla en un esquema de base de datos SQL corresponde a una variable de predicado; el contenido de una tabla a una relación; Las restricciones clave, otras restricciones y las consultas SQL corresponden a predicados. Sin embargo, las bases de datos SQL se desvían del modelo relacional en muchos detalles, y Codd argumentó ferozmente contra las desviaciones que comprometan los principios originales. [3]

Historia

El modelo relacional fue desarrollado por Edgar F. Codd como modelo general de datos y posteriormente promovido por Chris Date y Hugh Darwen, entre otros. En su Tercer Manifiesto de 1995 , Date y Darwen intentan demostrar cómo el modelo relacional puede acomodar ciertas características orientadas a objetos "deseadas" .

Extensiones

Algunos años después de la publicación de su modelo de 1970, Codd propuso una versión lógica de tres valores (Verdadero, Falso, Faltante/ NULL ) para tratar con la información faltante, y en su Modelo Relacional para la Gestión de Bases de Datos Versión 2 (1990) fue un paso más allá con una versión de lógica de cuatro valores (Verdadero, Falso, Faltante pero aplicable, Faltante pero inaplicable). [4]

Conceptualización

Conceptos básicos

Una relación con 5 atributos (su grado) y 4 tuplas (su cardinalidad) se puede visualizar como una tabla con 5 columnas y 4 filas. Sin embargo, a diferencia de las filas y columnas de una tabla, los atributos y tuplas de una relación están desordenados.

Una relación consta de un encabezado y un cuerpo . El encabezado define un conjunto de atributos , cada uno con un nombre y tipo de datos (a veces llamado dominio ). El número de atributos en este conjunto es el grado o aridad de la relación . El cuerpo es un conjunto de tuplas . Una tupla es una colección de n valores , donde n es el grado de la relación y cada valor de la tupla corresponde a un atributo único. [nb 1] El número de tuplas en este conjunto es la cardinalidad de la relación . [5] : 17-22 

Las relaciones están representadas por variables relacionales o relvars , que se pueden reasignar. [5] : 22–24  Una base de datos es una colección de relvars. [5] : 112-113 

En este modelo, las bases de datos siguen el principio de información : en un momento dado, toda la información de la base de datos está representada únicamente por valores dentro de tuplas, correspondientes a atributos, en relaciones identificadas por relvars. [5] : 111 

Restricciones

Una base de datos puede definir expresiones booleanas arbitrarias como restricciones . Si todas las restricciones se evalúan como verdaderas , la base de datos es consistente ; de lo contrario, es inconsistente . Si un cambio en las variables de una base de datos dejaría la base de datos en un estado inconsistente, ese cambio es ilegal y no debe tener éxito. [5] : 91 

En general, las restricciones se expresan mediante operadores de comparación relacional, de los cuales sólo uno, "es un subconjunto de" (⊆), es teóricamente suficiente. [ cita necesaria ]

Dos casos especiales de restricciones se expresan como claves y claves externas :

Llaves

Una clave candidata , o simplemente una clave , es el subconjunto más pequeño de atributos que garantiza diferenciar de forma única cada tupla en una relación. Dado que cada tupla en una relación debe ser única, cada relación necesariamente tiene una clave, que puede ser su conjunto completo de atributos. Una relación puede tener múltiples claves, ya que puede haber múltiples formas de diferenciar de forma única cada tupla. [5] : 31–33 

Un atributo puede ser único entre tuplas sin ser una clave. Por ejemplo, una relación que describe a los empleados de una empresa puede tener dos atributos: ID y Nombre. Incluso si actualmente ningún empleado comparte un nombre, si eventualmente es posible contratar a un nuevo empleado con el mismo nombre que un empleado actual, el subconjunto de atributos {Nombre} no es una clave. Por el contrario, si el subconjunto {ID} es una clave, esto significa no sólo que actualmente ningún empleado comparte una identificación, sino que ningún empleado compartirá una identificación jamás . [5] : 31–33 

Llaves extranjeras

Una clave foránea es un subconjunto de atributos {A} en una relación R 1 que se corresponde con una clave de otra relación R 2 , con la propiedad de que la proyección de R 1 sobre {A} es un subconjunto de la proyección de R 2 sobre {A} . En otras palabras, si una tupla en R 1 contiene valores para una clave externa, debe haber una tupla correspondiente en R 2 que contenga los mismos valores para la clave correspondiente. [5] : 34 

Operaciones relacionales

Los usuarios (o programas) solicitan datos de una base de datos relacional enviándole una consulta . En respuesta a una consulta, la base de datos devuelve un conjunto de resultados.

A menudo, los datos de varias tablas se combinan en una sola mediante una unión . Conceptualmente, esto se hace tomando todas las combinaciones posibles de filas (el producto cartesiano ) y luego filtrando todo excepto la respuesta.

Hay una serie de operaciones relacionales además de unirse. Estos incluyen proyecto (el proceso de eliminar algunas de las columnas), restringir (el proceso de eliminar algunas de las filas), unión (una forma de combinar dos tablas con estructuras similares), diferencia (que enumera las filas de una tabla que son no se encuentra en la otra), intersección (que enumera las filas que se encuentran en ambas tablas) y producto (mencionado anteriormente, que combina cada fila de una tabla con cada fila de la otra). Dependiendo de las otras fuentes que consulte, existen otros operadores, muchos de los cuales pueden definirse en términos de los enumerados anteriormente. Estos incluyen semiunión, operadores externos como unión externa y unión externa, y diversas formas de división. Luego están los operadores para cambiar el nombre de las columnas y los operadores de resumen o agregación, y si permite valores de relación como atributos (atributo con valor de relación), entonces operadores como agrupar y desagrupar.

La flexibilidad de las bases de datos relacionales permite a los programadores escribir consultas que los diseñadores de la base de datos no anticiparon. Como resultado, las bases de datos relacionales pueden ser utilizadas por múltiples aplicaciones en formas que los diseñadores originales no previeron, lo cual es especialmente importante para bases de datos que podrían usarse durante mucho tiempo (quizás varias décadas). Esto ha hecho que la idea y la implementación de bases de datos relacionales sean muy populares entre las empresas.

Normalización de bases de datos

Las relaciones se clasifican según los tipos de anomalías a las que son vulnerables. Una base de datos que está en la primera forma normal es vulnerable a todo tipo de anomalías, mientras que una base de datos que está en la forma normal de dominio/clave no tiene anomalías de modificación. Las formas normales son de naturaleza jerárquica. Es decir, el nivel más bajo es la primera forma normal, y la base de datos no puede cumplir los requisitos de las formas normales de nivel superior sin haber cumplido primero todos los requisitos de las formas normales inferiores. [6]

Interpretación lógica

El modelo relacional es un sistema formal . Los atributos de una relación definen un conjunto de proposiciones lógicas . Cada proposición se puede expresar como una tupla. El cuerpo de una relación es un subconjunto de estas tuplas, que representan qué proposiciones son verdaderas. Las restricciones representan proposiciones adicionales que también deben ser ciertas. El álgebra relacional es un conjunto de reglas lógicas que pueden inferir conclusiones válidas a partir de estas proposiciones.[5] : 95-101 

La definición de tupla permite una tupla vacía única sin valores, correspondiente al conjunto vacío de atributos. Si una relación tiene un grado de 0 (es decir, su encabezado no contiene atributos), puede tener una cardinalidad de 0 (un cuerpo que no contiene tuplas) o una cardinalidad de 1 (un cuerpo que contiene una única tupla vacía). Estas relaciones representan valores de verdad booleanos . La relación con grado 0 y cardinalidad 0 es Falsa , mientras que la relación con grado 0 y cardinalidad 1 es Verdadera . [5] : 221–223 

Ejemplo

Si una relación de Empleados contiene los atributos {Nombre, ID} , entonces la tupla {Alice, 1} representa la proposición: "Existe una empleada llamada Alice con ID 1 ". Esta proposición puede ser verdadera o falsa. Si esta tupla existe en el cuerpo de la relación, la proposición es verdadera (existe tal empleado). Si esta tupla no está en el cuerpo de la relación, la proposición es falsa (no existe tal empleado). [5] : 96–97 

Además, si {ID} es una clave, entonces una relación que contenga las tuplas {Alice, 1} y {Bob, 1} representaría la siguiente contradicción :

  1. Existe una empleada con el nombre Alice y el ID 1 .
  2. Existe un empleado con el nombre Bob y el ID 1 .
  3. No existen varios empleados con el mismo ID.

Bajo el principio de explosión , esta contradicción permitiría al sistema demostrar que cualquier proposición arbitraria es verdadera. La base de datos debe imponer la restricción de clave para evitar esto. [5] : 104 

Ejemplos

Base de datos

Un ejemplo idealizado y muy simple de una descripción de algunas relvars ( variables de relación ) y sus atributos:

En este diseño tenemos tres relvars: Cliente, Pedido y Factura. Los atributos subrayados y en negrita son claves candidatas . Los atributos subrayados y que no están en negrita son claves externas .

Por lo general, se elige una clave candidata para llamarla clave principal y se usa con preferencia sobre las otras claves candidatas, que luego se denominan claves alternativas .

Una clave candidata es un identificador único que garantiza que no se duplicará ninguna tupla ; esto convertiría la relación en otra cosa, es decir, una bolsa , al violar la definición básica de conjunto . Tanto las claves foráneas como las superclaves (que incluyen claves candidatas) pueden ser compuestas, es decir, pueden estar compuestas por varios atributos. A continuación se muestra una descripción tabular de una relación de nuestro ejemplo Customer relvar; una relación puede considerarse como un valor que puede atribuirse a una relvar.

Relación con el cliente

Si intentáramos insertar un nuevo cliente con el ID 123 , esto violaría el diseño de la relvar ya que el ID del cliente es una clave principal y ya tenemos un cliente 123 . El DBMS debe rechazar una transacción como ésta que haría que la base de datos fuera inconsistente por una violación de una restricción de integridad . Sin embargo, es posible insertar otro cliente llamado Alice , siempre que este nuevo cliente tenga una identificación única, ya que el campo Nombre no forma parte de la clave principal.

Las claves foráneas son restricciones de integridad que imponen que el valor del conjunto de atributos se extraiga de una clave candidata en otra relación . Por ejemplo, en la relación Pedido, el atributo ID de cliente es una clave externa. Una unión es la operación que extrae información de varias relaciones a la vez. Al unir relvars del ejemplo anterior, podríamos consultar la base de datos de todos los Clientes, Pedidos y Facturas. Si solo quisiéramos las tuplas para un cliente específico, lo especificaríamos mediante una condición de restricción. Si quisiéramos recuperar todos los pedidos del cliente 123 , podríamos consultar la base de datos para devolver cada fila de la tabla de pedidos con el ID de cliente 123 .

Hay una falla en el diseño de nuestra base de datos anterior. La variable Factura contiene un atributo de ID de pedido. Por lo tanto, cada tupla en el relvar Factura tendrá un ID de pedido, lo que implica que hay precisamente un Pedido para cada Factura. Pero en realidad se puede crear una factura para muchos pedidos o, incluso, para ningún pedido en particular. Además, la variable Orden contiene un atributo de ID de factura, lo que implica que cada Orden tiene una Factura correspondiente. Pero esto no siempre es cierto en el mundo real. A veces, un pedido se paga mediante varias facturas y, a veces, se paga sin factura. Es decir, puede haber muchas Facturas por Pedido y muchos Pedidos por Factura. Esta es una relación de muchos a muchos entre Pedido y Factura (también llamada relación no específica ). Para representar esta relación en la base de datos se debe introducir una nueva relvar cuya función es especificar la correspondencia entre Pedidos y Facturas:

Factura de pedido ( ID de pedido , ID de factura )

Ahora, el relvar Pedido tiene una relación de uno a muchos con la tabla FacturaPedido, al igual que el relvar Factura. Si queremos recuperar cada factura para un pedido en particular, podemos consultar todos los pedidos donde el ID de pedido en la relación de pedido es igual al ID de pedido en Factura de pedido, y donde el ID de factura en Factura de pedido es igual al ID de factura en Factura.

Aplicación a bases de datos relacionales

Un tipo de datos en una base de datos relacional puede ser el conjunto de números enteros, el conjunto de cadenas de caracteres, el conjunto de fechas, etc. El modelo relacional no dicta qué tipos deben admitirse.

Los atributos suelen representarse como columnas , las tuplas como filas y las relaciones como tablas . Una tabla se especifica como una lista de definiciones de columnas, cada una de las cuales especifica un nombre de columna exclusivo y el tipo de valores permitidos para esa columna. Un valor de atributo es la entrada en una columna y fila específicas.

Una relvar de base de datos (variable de relación) se conoce comúnmente como tabla base . El encabezado de su valor asignado en cualquier momento es el especificado en la declaración de la tabla y su cuerpo es el que le asignó más recientemente un operador de actualización (normalmente, INSERTAR, ACTUALIZAR o ELIMINAR). El encabezado y el cuerpo de la tabla resultante de evaluar una consulta están determinados por las definiciones de los operadores utilizados en esa consulta.

SQL y el modelo relacional

SQL, inicialmente propuesto como lenguaje estándar para bases de datos relacionales , se desvía del modelo relacional en varios lugares. El estándar ISO SQL actual no menciona el modelo relacional ni utiliza términos o conceptos relacionales. [ cita necesaria ]

Según el modelo relacional, los atributos y tuplas de una relación son conjuntos matemáticos , lo que significa que están desordenados y son únicos. En una tabla SQL, ni las filas ni las columnas son conjuntos adecuados. Una tabla puede contener filas y columnas duplicadas, y las columnas de una tabla están ordenadas explícitamente. SQL utiliza un valor nulo para indicar datos faltantes, que no tiene análogo en el modelo relacional. Debido a que una fila puede representar información desconocida, SQL no cumple con el Principio de información del modelo relacional . [5] : 153–155, 162 

Formulación teórica de conjuntos

Las nociones básicas en el modelo relacional son nombres de relaciones y nombres de atributos . Los representaremos como cadenas como "Persona" y "nombre" y normalmente usaremos las variables y para abarcarlas. Otra noción básica es el conjunto de valores atómicos que contiene valores como números y cadenas.

Nuestra primera definición se refiere a la noción de tupla , que formaliza la noción de fila o registro en una tabla:

tupla
Una tupla es una función parcial desde nombres de atributos hasta valores atómicos.
Encabezamiento
Un encabezado es un conjunto finito de nombres de atributos.
Proyección
La proyección de una tupla sobre un conjunto finito de atributos es .

La siguiente definición define la relación que formaliza el contenido de una tabla tal como se define en el modelo relacional.

Relación
Una relación es una tupla con , el encabezado y , el cuerpo, un conjunto de tuplas que tienen el dominio .

Tal relación corresponde estrechamente a lo que normalmente se llama extensión de un predicado en lógica de primer orden, excepto que aquí identificamos los lugares en el predicado con nombres de atributos. Por lo general, en el modelo relacional se dice que un esquema de base de datos consta de un conjunto de nombres de relaciones, los encabezados asociados con estos nombres y las restricciones que deben cumplirse para cada instancia del esquema de base de datos.

Universo de relación
Un universo de relaciones sobre un encabezado es un conjunto no vacío de relaciones con encabezado .
Esquema de relación
Un esquema de relación consta de un encabezado y un predicado que se define para todas las relaciones con encabezado . Una relación satisface un esquema de relación si tiene encabezado y satisface .

Restricciones clave y dependencias funcionales.

Uno de los tipos de restricciones de relación más simples e importantes es la restricción clave . Nos dice que en cada instancia de un determinado esquema relacional las tuplas pueden identificarse por sus valores para ciertos atributos.

Superclave

Una superclave es un conjunto de encabezados de columna para los cuales los valores de esas columnas concatenadas son únicos en todas las filas. Formalmente:

Una superclave se escribe como un conjunto finito de nombres de atributos.
Una superclave se cumple en una relación si:
  • y
  • no existen dos tuplas distintas tales que .
Una superclave se cumple en un universo de relaciones si se cumple en todas las relaciones en .
Teorema: Una superclave se cumple en un universo de relación si y solo si y se cumple .
Llave candidata

Una clave candidata es una superclave que no se puede subdividir más para formar otra superclave.

Una superclave es válida como clave candidata para un universo de relación si es válida como superclave para y no existe un subconjunto adecuado que también sea válida como superclave para .
Dependencia funcional

La dependencia funcional es la propiedad de que un valor en una tupla puede derivarse de otro valor en esa tupla.

Una dependencia funcional (FD para abreviar) se escribe para conjuntos finitos de nombres de atributos.
Una dependencia funcional se cumple en una relación si:
  • y
  • tuplas ,
Una dependencia funcional se cumple en un universo de relaciones si se cumple en todas las relaciones en .
Dependencia funcional trivial
Una dependencia funcional es trivial bajo un encabezado si se cumple en todos los universos de relación .
Teorema: Un FD es trivial bajo un encabezado si y sólo si .
Cierre
Axiomas de Armstrong : el cierre de un conjunto de FD bajo un encabezado , escrito como , es el superconjunto más pequeño de tales que:
  • (reflexividad)
  • (transitividad) y
  • (aumento)
Teorema: Los axiomas de Armstrong son sólidos y completos; dado un encabezado y un conjunto de FD que solo contienen subconjuntos de , si y solo si se cumple en todos los universos de relación en los que se mantienen todos los FD.
Terminación
La finalización de un conjunto finito de atributos bajo un conjunto finito de FD , escrito como , es el superconjunto más pequeño de tal que:
La finalización de un conjunto de atributos se puede utilizar para calcular si una determinada dependencia está en el cierre de un conjunto de FD.
Teorema: Dado un conjunto de FD, si y sólo si .
Cobertura irreductible
Una cobertura irreducible de un conjunto de FD es un conjunto de FD tal que:
  • no existe tal que
  • es un conjunto singleton y
  • .

Algoritmo para derivar claves candidatas a partir de dependencias funcionales.

algoritmo deriva claves candidatas a partir de dependencias funcionales se  ingresa: un conjunto S de FD que contienen solo subconjuntos de un encabezado H  salida: el conjunto C de superclaves que se mantienen como claves candidatas en todos los universos de relación sobre H en los que todos los FD en S se mantienen C  := ∅ // claves candidatas encontradas Q  := { H } // superclaves que contienen claves candidatas mientras que  Q <> ∅ deje que K sea algún elemento de Q  Q  := Q  – { K } mínimo  := verdadero  para cada  X ->Y  en  S  hacer  K' := ( K  – Y ) ∪ X // derivar nueva superclave si  K'K  entonces  mínimo  := false  Q  := Q ∪ { K' } fin si  fin para  si  mínimo  y hay no es un subconjunto de K en C  , luego elimine todos los superconjuntos de K de C  C  := C ∪ { K } end if  end while

Alternativas

Otros modelos incluyen el modelo jerárquico y el modelo de red . Algunos sistemas que utilizan estas arquitecturas más antiguas todavía se utilizan hoy en día en centros de datos con necesidades de gran volumen de datos, o donde los sistemas existentes son tan complejos y abstractos que sería prohibitivo migrar a sistemas que emplean el modelo relacional. También son de destacar las nuevas bases de datos orientadas a objetos . [7] y Registro de datos . [8]

Datalog es un lenguaje de definición de bases de datos que combina una vista relacional de los datos, como en el modelo relacional, con una vista lógica, como en la programación lógica . Mientras que las bases de datos relacionales utilizan un cálculo relacional o álgebra relacional, con operaciones relacionales , como unión , intersección , diferencia de conjuntos y producto cartesiano para especificar consultas, Datalog utiliza conectivos lógicos, como if , or , and y no para definir relaciones como parte de la propia base de datos.

En contraste con el modelo relacional, que no puede expresar consultas recursivas sin introducir un operador de punto mínimo fijo, [9] las relaciones recursivas se pueden definir en Datalog, sin introducir nuevos conectivos u operadores lógicos.

Ver también

Notas

  1. ^ A pesar de su nombre, una tupla en el modelo relacional no es una tupla matemática . En matemáticas, los elementos de una tupla están ordenados. En el modelo relacional, los atributos están desordenados, por lo que los elementos correspondientes en una tupla también lo están.

Referencias

  1. ^ Codd, EF (1969), Derivabilidad, redundancia y coherencia de las relaciones almacenadas en grandes bancos de datos , Informe de investigación, IBM.
  2. ^ Bacalao, EF (1970). "Un modelo relacional de datos para grandes bancos de datos compartidos". Comunicaciones de la ACM . Clásicos. 13 (6): 377–87. doi : 10.1145/362384.362685 . S2CID  207549016. Archivado desde el original el 12 de junio de 2007.
  3. ^ Codd, E. F (1990), El modelo relacional para la gestión de bases de datos , Addison-Wesley, págs. 371–388, ISBN 978-0-201-14192-4.
  4. ^ Fecha, Christopher J. (2006). "18. Por qué la lógica de tres y cuatro valores no funciona". Fecha en la base de datos: escritos 2000–2006 . Presione. págs. 329–41. ISBN 978-1-59059-746-0.
  5. ^ abcdefghijklm Fecha, Chris J. (2013). Teoría relacional para profesionales de la informática: de qué se tratan realmente las bases de datos relacionales (1. ed.). Sebastopol, California: O'Reilly Media. ISBN 978-1-449-36943-9.
  6. ^ David M. Kroenke, Procesamiento de bases de datos: fundamentos, diseño e implementación (1997), Prentice-Hall, Inc., páginas 130-144
  7. ^ Atkinson, M., Dewitt, D., Maier, D., Bancilhon, F., Dittrich, K. y Zdonik, S., 1990. El manifiesto del sistema de bases de datos orientado a objetos. En Bases de datos deductivas y orientadas a objetos (págs. 223-240). Holanda del Norte.
  8. ^ Maier, D., Tekle, KT, Kifer, M. y Warren, DS, 2018. Registro de datos: conceptos, historia y perspectivas. En Programación lógica declarativa: teoría, sistemas y aplicaciones (págs. 3-100).
  9. ^ Aho, AV y Ullman, JD, enero de 1979. Universalidad de los lenguajes de recuperación de datos. En Actas del sexto simposio ACM SIGACT-SIGPLAN sobre Principios de los lenguajes de programación (págs. 110-119).

Otras lecturas

enlaces externos