En la teoría de bases de datos , una relación , como la definió originalmente EF Codd , [1] es un conjunto de tuplas (d 1 ,d 2 ,...,d n ), donde cada elemento d j es un miembro de D j , un dominio de datos . A pesar de la definición original de Codd, y al contrario de la definición habitual en matemáticas, no hay ordenamiento de los elementos de las tuplas de una relación. [2] [3] En cambio, cada elemento se denomina valor de atributo . Un atributo es un nombre emparejado con un dominio (hoy en día más comúnmente denominado tipo o tipo de datos ). Un valor de atributo es un nombre de atributo emparejado con un elemento del dominio de ese atributo, y una tupla es un conjunto de valores de atributo en el que no hay dos elementos distintos que tengan el mismo nombre. Por lo tanto, en algunas explicaciones, una tupla se describe como una función , que asigna nombres a valores.
Un conjunto de atributos en el que no hay dos elementos distintos que tengan el mismo nombre se denomina encabezamiento . De las definiciones anteriores se desprende que a cada tupla le corresponde un encabezamiento único, que es el conjunto de nombres de la tupla, emparejados con los dominios de los que se toman los dominios de los elementos de la tupla. Un conjunto de tuplas que corresponden todas al mismo encabezamiento se denomina cuerpo . Por tanto, una relación es un encabezamiento emparejado con un cuerpo, siendo el encabezamiento de la relación también el encabezamiento de cada tupla de su cuerpo. El número de atributos que constituyen un encabezamiento se denomina grado , término que también se aplica a tuplas y relaciones. El término n -tupla se refiere a una tupla de grado n ( n ≥ 0).
EF Codd utilizó el término "relación" en su sentido matemático de una relación finitaria , un conjunto de tuplas en algún conjunto de n conjuntos S 1 , S 2 ,...., S n . [4] Por lo tanto, una relación n -aria se interpreta, bajo el Supuesto de Mundo Cerrado , como la extensión de algún predicado n -ádico : todas y solo aquellas n -tuplas cuyos valores, sustituidos por variables libres correspondientes en el predicado, producen proposiciones que son verdaderas, aparecen en la relación.
Un encabezado asociado a un conjunto de restricciones definidas en términos de ese encabezado se denomina esquema de relación . Por lo tanto, una relación puede considerarse como una instancia de un esquema de relación si tiene el encabezado de ese esquema y satisface las restricciones aplicables.
A veces se considera que un esquema de relación incluye un nombre. [5] [6] Por lo tanto , una definición de base de datos relacional ( esquema de base de datos , a veces denominado esquema relacional) puede considerarse como una colección de esquemas de relación con nombre . [7] [8]
En las implementaciones, el dominio de cada atributo es efectivamente un tipo de datos [9] y un esquema de relación nombrado es efectivamente una variable de relación ( relvar para abreviar).
En SQL , un lenguaje de base de datos para bases de datos relacionales, las relaciones se representan mediante tablas , donde cada fila de una tabla representa una única tupla y donde los valores de cada atributo forman una columna.
A continuación se muestra un ejemplo de una relación que tiene tres atributos con nombre: 'ID' del dominio de números enteros , y 'Nombre' y 'Dirección' del dominio de cadenas :
Un predicado para esta relación, que utiliza los nombres de los atributos para denotar variables libres, podría ser "El empleado con número de identificación se conoce como Nombre y vive en Dirección ". El examen de la relación nos indica que hay solo cuatro tuplas para las que el predicado es verdadero. Por ejemplo, el empleado 102 es conocido solo por ese nombre, Yonezawa Akinori, y no vive en ningún otro lugar que no sea Naha, Okinawa. Además, aparte de los cuatro empleados que se muestran, no hay ningún otro empleado que tenga tanto un nombre como una dirección.
Según la definición de cuerpo , las tuplas de un cuerpo no aparecen en ningún orden particular: no se puede decir "La tupla de 'Murata Makoto' está encima de la tupla de 'Matsumoto Yukihiro'", ni tampoco se puede decir "La tupla de 'Yonezawa Akinori' es la primera tupla". Un comentario similar se aplica a las filas de una tabla SQL.
Según la definición de encabezado , los atributos de un elemento tampoco aparecen en ningún orden en particular, ni tampoco, por lo tanto, los elementos de una tupla. Un comentario similar no se aplica aquí a SQL, que sí define un orden para las columnas de una tabla.
Una base de datos relacional consta de variables de relación con nombre (relvars) con el fin de actualizar la base de datos en respuesta a cambios en el mundo real. Una actualización de una única relvar hace que el cuerpo de la relación asignada a esa variable sea reemplazado por un conjunto diferente de tuplas. Las relvars se clasifican en dos clases: variables de relación base y variables de relación derivadas , estas últimas también conocidas como relvars virtuales , pero que generalmente se mencionan en la vista de corto plazo .
Una variable de relación base es una variable de relación que no se deriva de ninguna otra variable de relación. En SQL, el término tabla base equivale aproximadamente a variable de relación base.
Una vista se puede definir mediante una expresión que utilice los operadores del álgebra relacional o del cálculo relacional . Dicha expresión opera sobre una o más relaciones y, cuando se evalúa, produce otra relación. El resultado a veces se denomina relación "derivada" cuando los operandos son relaciones asignadas a variables de base de datos. Una vista se define asignando un nombre a dicha expresión, de modo que el nombre pueda utilizarse posteriormente como nombre de variable. (Tenga en cuenta que la expresión debe mencionar al menos una variable de relación base).
Mediante el uso de un lenguaje de definición de datos (DDL), es posible definir variables de relación base. En SQL, CREATE TABLE
se utiliza la sintaxis para definir tablas base. A continuación, se muestra un ejemplo.
CREAR TABLA Lista_de_personas ( ID ENTERO , Nombre CHAR ( 40 ), Dirección CHAR ( 200 ), CLAVE PRIMARIA ( ID ) )
El lenguaje de definición de datos (DDL) también se utiliza para definir variables de relación derivadas. En SQL, CREATE VIEW
se utiliza sintaxis para definir una variable de relación derivada. A continuación, se muestra un ejemplo.
CREAR VISTA Lista_de_personas_de_Okinawa COMO ( SELECCIONAR ID , Nombre , Dirección DE Lista_de_personas DONDE Dirección COMO '%, Okinawa' )
R es una relación en estos n dominios si es un conjunto de elementos de la forma (d 1 , d 2 , ..., d n ) donde d j ∈ D j para cada j=1,2,...,n.
las tuplas no tienen orden de izquierda a derecha para sus atributos...
relaciones de bases de datos, cada una de las cuales tiene hasta 50, 100 o incluso 150 columnas.
El término
relación
se utiliza aquí en su sentido matemático aceptado .