Formalidades del Modelo Relacional de Datos

El concepto matemático que subyace bajo el modelo relacional es la relación de la teoría de conjuntos, la cual es un subconjunto del producto cartesiano de una lista de dominios. Esta relación de la teoría de conjuntos proporciona al modelo su nombre (no confundir con la relación del Modelo Entidad-Relación). Formalmente, un dominio es simplemente un conjunto de valores. Por ejemplo, el conjunto de los enteros es un dominio. También son ejemplos de dominios las cadenas de caracteres de longitud 20 y los números reales.

El producto cartesiano de los dominios D1, D2, ... Dk, escritos D1 × D2 × ... × Dk es el conjunto de las k-tuplas v1, v2, ... vk, tales que v1D1, v1D1, ... vkDk.

Por ejemplo, cuando tenemos k=2, D1={0,1} y D2={a,b,c} entonces D1 × D2 es {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}.

Una Relación es cualquier subconjunto del producto cartesiano de uno o más dominios: RD1 × D2 × ... × Dk.

Por ejemplo, {(0,a),(0,b),(1,a)} es una relación; De hecho es un subconjunto de D1 × D2 mencionado antes.

Los miembros de una relación se llaman tuplas. Cada relación de algún producto cartesiano D1 × D2 × ... × Dk se dice que tiene nivel k y de este modo es un subconjunto de k-tuplas.

Una relación se puede ver como una tabla (como ya dijimos, recuerde La Base de Datos de Proveedores y Artículos donde cada tupla se representa como una fila y cada columna corresponde a un componente de la tupla. Dando nombres (llamados atributos) a las columnas, nos acercamos a la definición de un esquema relacional.

Un esquema relacional R es un conjunto finito de atributos A1, A2, ... Ak. Hay un dominio Di, para cada atributo Ai, 1 <= i <= k, de donde se toman los valores de los atributos. Entonces escribimos es esquema relacional como R(A1, A2, ... Ak).

Nota

Un esquema relacional es sólo un juego de plantillas mientras que una relación es un ejemplo de un esquema relacional. La relación consiste en las tuplas (y pueden ser vistas como una tabla); no así el esquema relacional.

Dominios contra Tipos de Datos

Ya hemos hablado de dominios en la sección anterior. Recalcar que el dominio es, formalmente, un conjunto de valores (por ejemplo el conjunto de los enteros o el de los números reales). En términos de sistemas de base de datos, hemos hablado de tipos de datos más que de dominios. Cuando hemos definido una tabla, hemos tomado una decisión sobre qué atributos incluir. Adicionalmente, hemos decidido qué juego de datos deberá ser almacenado en valores de los atributos. Por ejemplo, los valores de SNAME de la tabla SUPPLIER serán cadenas de caracteres, mientras que SNO almacenará enteros. Definimos esto asignando un tipo de datos a cada atributo. El tipo de SNAME será VARCHAR(20) (este es el tipo SQL para cadenas de caracteres de longitud <= 20), el tipo de SNO será INTEGER. Con la asignación de tipos de datos, también habremos seleccionado un dominio para un atributo. El dominio de SNAME es el conjunto de todas las cadenas de caracteres de longitud <= 20, mientras el dominio de SNO es el conjunto de todos los números enteros.