Beruflich Dokumente
Kultur Dokumente
El modelo relacional fue presentado por primera vez por Ted Codd, de IBM Research , en
1970.En un documento ya clsico y atrajo la atencin inmediata debido a su simplicidad y
fundamentacin matemtica.El modelo utiliza el concepto de una relacin matemtica (algo
parecido a una tabla de valores) como su bloque de construccin bsica , y tiene su base en la
teora de conjuntos y la lgica del predicado de primer orden
Es introducido por codds , es una estructura de datos simple y uniforme y tiene fundamentos
tericos solidos.
La estructura de datos
Los trminos
en cuestin son: el propio trmino relacin (por supuesto), tupia, cardinalidad, atributo, grado,
dominio y clave primaria.
En este captulo vimos a fondo la parte estructural del modelo relacional. Un dominio es slo
un tipo de datos (posiblemente integrado o definido por el sistema; para ser ms especficos,
definido por el usuario); el dominio proporciona (a) un conjunto de valores (todos los valores
posibles del tipo en cuestin) a partir de los cuales diversos atributos en distintas relaciones
toman sus valores reales y (b) un conjunto de operadores (tanto de slo de lectura como de actualizacin) para
operar sobre valores y variables del tipo en cuestin. Los valores de un
tipo dado pueden ser de cualquier clase (nmeros, cadenas, fechas, horas, grabaciones de
sonido. mapas, grabaciones de vdeo, puntos geomtricos, etctera). Los tipos restringen a las
opera ciones, ya que se requiere que los operandos para una operacin determinada sean del tipo
apropiado para esa operacin (tipos fuertes). Los tipos fuertes son una buena idea, ya que
permiten capturar ciertos errores de lgica y hacerlo adems en tiempo de compilacin, en
lugar de hacer-lo en tiempo de ejecucin. Observe que, como veremos en el siguiente captulo,
los tipos fuerte tienen implicaciones importantes para las operaciones relacionales en particular
(junta, unin. etctera).
Los tipos pueden ser escalares o no escalares. Un tipo escalar es aquel que no tiene componentes
visibles para el usuario. Los tipos no escalares ms importantes en el modelo relacional
son los tipos de relacin (vea el siguiente prrafo), los cuales se definen mediante el generador
de tipos RELATION. Distinguimos cuidadosamente entre un tipo y su representacin fsica
(los tipos son un aspecto del modelo, las representaciones fsicas son un aspecto de la implementacin).
Sin embargo, requerimos que cada tipo escalar tenga declarada por lo menos una
representacin posible. Cada una de estas representaciones posibles ocasiona la definicin automtica
(a) de un operador selector y (b) para cada componente de esa representacin posible,un
operador THE_ (incluyendo una seudovariable THE_). Manejamos conversiones explcitasde
tipo, pero no coacciones implcitas de tipo. Manejamos tambin la definicin de cualquier cantidad
de operadores adicionales para los tipos escalares y requerimos que se defina un operador
de igualdad para cada tipo (con semntica prescrita!).
Pasemos ahora a las relaciones. Distinguimos entre valores de relacin ("relaciones");
variables de relacin ("varrels"). Una relacin tiene dos partes: un encabezado y un cuerpo;
el encabezado es un conjunto de atributos, mientras que el cuerpo es un conjunto de tupias que
se apegan al encabezado. Al nmero de atributos del encabezado se le denomina grado y al
nmero de tupias del cuerpo se le conoce como cardinalidad. Una relacin tiene un tipo de
relacin; para ser especficos, el tipo RELATION{//}, donde H es el encabezado aplicable.Es
posible ver una relacin como una tabla, con las columnas representando a los atributo filas
a las tupias, aunque esta representacin es slo aproximada. Adems, todas las relaciones
satisfacen cuatro propiedades muy importantes:
Las varrels se presentan en dos variedades, varrels base y vistas. Vimos cmo definir varrels
base (y cmo definir tipos para los atributos de dichas varrels) en Tutorial D, un lenguaje
que usaremos para fines ilustrativos a lo largo de este libro.
Nota: Quizs haya notado que expusimos la cuestin de los operadores definidos por el
usuario para los tipos escalares, pero no para los tipos de relacin. La razn es que la mayora
de los operadores relacionales que necesitamos restriccin, proyeccin, junta, asignacin relacional,
etctera estn de hecho integrados en el propio modelo y no requieren de una "definicin
por el usuario". (Lo que es ms, dichas operaciones son genricas en el sentido de que se
aplican, en trminos generales, a relaciones de todos los tipos.) Sin embargo, no hay razn por
la que dichas operaciones integradas no se aumenten con un conjunto de operaciones definidas
por el usuario cuando el sistema ofrezca un medio para definirlas.
Por ltimo, esbozamos las caractersticas de SQL para definir "dominios" y tablas base (al
estilo de SQL). En particular, sealamos que:
Los "dominios" al estilo de SQL no son tipos.
Las tablas al estilo de SQL (base u otras) no son relaciones, ya que entre otras cosas
(a) permiten filas duplicadas y (b) tienen un ordenamiento de sus columnas de izquierda a
derecha. De hecho, puede incluso haber dos o ms columnas con el mismo nombre (aunque
esta observacin no se aplica a tablas SQL con nombre, es decir a tablas base o vistas). A
manera de ejemplo, considere la tabla devuelta por la siguiente consulta de SQL:
SELECT * FROM
V, P ;
La manipualcion de datos
Un modelo de datos debe incluir un conjunto de operaciones para manipular la base
de datos junto con los conceptos necesarios para la deficinicion de su estructura y
restricciones. El conjunto de operaciones bsicas es el algebra relacional. El algebra
relacional es el conjunto de operadores que toman relaciones
Una secuencia de operaciones de
como sus operandos y regresan una relacin como su resultado.
algebra relacional conforma una expresin del algebra relacional , cuyo resultado ser
tambin una nueva relacin que representa el resultado de una cosulta a la base de
datos. El algebra relacional proporciona un fundamento formal para las operaciones
del modelo relacional , se utiliza como base para la implementacin y optimizacin de
consultar en los sistemas de administracin de base de datos relacionales y algunos de
sus conceptos se han incorporado al lenguaje estndar de consulta SQL.
El algebra relacional
El calculo relacional
Es una notacin declarativa de alto nivel para espesificar las consultas
relacionales.el calculo relacional es un lenguaje formal basado en una rama
de la lgica matemtica llamada calculo de predicados.una expresin de
calculo relacional crea una nueva relacin , la cual esta especificada en
trminos de variables que emgloban filas de las relaciones almacenadas en
la base de datos (en clculos de tuplas) o columnas de las relaciones
almacenadas(para los clculos de dominio.En una expresin de calculo no
exiten un orden de operaciones para recuperar los resultados de la consulta
, la expresin solo especifica la informacin que el resultado debe obtener.
En el captulo 6 dijimos que la parte de manipulacin del modelo relacional estaba basada en
el lgebra relacional; sin embargo, de igual forma pudimos haber dicho que estaba basada en el
clcu-lo relacional. En otras palabras, el lgebra y el clculo son alternativos entre s. La
diferenc principal entre ellos es la siguiente: Mientras que el lgebra proporciona un conjunto de
operado res explcitos juntar, unin, proyectar, etctera que pueden usarse para indicar al
sistema cmo construir cierta relacin deseada a partir de relaciones dadas, el clculo
simplemente propor-ciona una notacin para establecer la definicin de esa relacin deseada
en trminos de dicto relaciones dadas. Por ejemplo, considere la consulta "obtener los nmeros
de proveedor y ciudades para los proveedores que suministran la parte P2". Una formulacin
algebraica de esa con-sulta podra especificar operaciones como las siguientes
(deliberadamente no empleamos la sintaxis formal del captulo 6):
Primero, juntar las tupias de proveedores y envos sobre V#;
A continuacin, restringir el resultado de esa junta a las tupias de la parte P2;
Por ltimo, proyectar el resultado de esa restriccin sobre V# y CIUDAD.
En contraste, una formulacin del clculo podra declarar simplemente:
Obtener V# y CIUDAD de los proveedores tales que exista un envo VP con el mismo
valor
V# y con el valor P2 de P#.
Por ltimo, presentamos un repaso de las caractersticas relevantes de SQL. SQL es una
es-pecie de hbrido entre el lgebra y el clculo (de tupias); por ejemplo, incluye soporte din
para los operadores JOIN y UNION del lgebra, pero adems utiliza las variables de alcana
el cuantificador existencial del clculo. Una consulta de SQL consiste en una expresin de
tabla. Por lo regular, esta operacin consiste en una sola expresin de seleccin, pero tambin
son so-portadas varias clases de expresiones JOIN explcitas y es posible combinar
expresiones de junta y seleccin de distintas formas utilizando los operadores UNION,
INTERSECT y EXCE Tambin mencionamos el uso de ORDER BY para imponer un
orden en la tabla resultan una expresin de tabla (de cualquier clase).
Con respecto a las expresiones de seleccin en particular, describimos:
La clusula SELECT bsica, que incluye el uso de DISTINCT, expresiones escalares,
la
introduccin de nombres de columnas de resultado y "SELECT *";
La clusula FROM, que incluye el uso de variables de alcance;
La clusula WHERE, que incluye el uso del operador EXISTS;