En teoría de bases de datos , una relación , tal como la definió originalmente EF Codd , [1] es un conjunto de tuplas (d 1 ,d 2 ,...,d n ), donde cada elemento d j es miembro de D j , a dominio de datos . A pesar de la definición original de Codd, y contrariamente a la definición habitual en matemáticas, no existe ningún orden para 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 conocido como 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 cuentas, 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 llama encabezado . De las definiciones anteriores se deduce que a cada tupla le corresponde un encabezado ú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 al mismo encabezado se llama cuerpo . Por tanto, una relación es un encabezado emparejado con un cuerpo, siendo el encabezado de la relación también el encabezado de cada tupla en su cuerpo. El número de atributos que constituyen un encabezamiento se llama 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 usó el término "relación" en su sentido matemático de relación finita , un conjunto de tuplas en algún conjunto de n conjuntos S 1 , S 2 ,...., S n . [4] Así, una relación n -aria se interpreta, bajo el Supuesto del Mundo Cerrado , como la extensión de algún predicado n -ádico : todas y sólo aquellas n -tuplas cuyos valores, sustituidos por las correspondientes variables libres en el predicado, producen Las proposiciones que son verdaderas aparecen en la relación.
Un encabezado emparejado con un conjunto de restricciones definidas en términos de ese encabezado se denomina esquema de relación . Por tanto, una relación puede verse como una instanciación de un esquema de relación si tiene el encabezamiento 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 con nombre 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 indicar variables libres, podría ser " El ID del número de empleado se conoce como Nombre y vive en la Dirección ". El examen de la relación nos dice que hay sólo cuatro tuplas para las cuales el predicado es verdadero. Así, por ejemplo, el empleado 102 es conocido sólo por ese nombre, Yonezawa Akinori, y no vive en ningún otro lugar excepto en Naha, Okinawa. Además, aparte de los cuatro empleados que se muestran, no hay ningún otro empleado que tenga nombre y 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á por encima de la tupla de 'Matsumoto Yukihiro'", ni 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 particular y, por lo tanto, tampoco lo hacen 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 (relvares) 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. Los 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 generalmente denominadas desde la visión 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, la tabla base de términos equivale aproximadamente a la variable de relación base.
Una vista puede definirse mediante una expresión utilizando los operadores del álgebra relacional o del cálculo relacional . Tal expresión opera en una o más relaciones y cuando se evalúa produce otra relación. A veces se hace referencia al resultado como relación "derivada" cuando los operandos son relaciones asignadas a variables de la base de datos. Una vista se define dando un nombre a dicha expresión, de modo que el nombre pueda usarse posteriormente como nombre de variable. (Tenga en cuenta que la expresión debe mencionar al menos una variable de relación base).
Al utilizar un lenguaje de definición de datos (DDL), es capaz de definir variables de relación base. En SQL, CREATE TABLE
la sintaxis se utiliza para definir tablas base. Lo siguiente es un ejemplo.
CREAR TABLA Lista_de_personas ( ID INTEGER , 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
la sintaxis se utiliza para definir una variable de relación derivada. Lo siguiente es un ejemplo.
CREAR VISTA List_of_Okinawa_people AS ( SELECCIONAR ID , Nombre , Dirección DESDE List_of_people 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,..., norte.
... las tuplas no tienen un orden de izquierda a derecha en sus atributos ...
Una razón para abandonar por completo los conceptos posicionales en las relaciones del modelo relacional es que no es nada inusual encontrar 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.