Sie sind auf Seite 1von 7

Modelo relacional de datos

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

El modelo relacional es el fundamento de la tecnologa moderna de base de datos , este


fundamento hace de este campo sea una ciencia.

Es introducido por codds , es una estructura de datos simple y uniforme y tiene fundamentos
tericos solidos.

El modelo relacional se ocupa de tres aspectos principales de la informacin:

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:

No contienen tupias duplicadas.


No hay un ordenamiento para las tupias, de arriba hacia abajo.
No hay un ordenamiento para los atributos, de izquierda a derecha.
Cada tupia contiene exactamente un valor para cada atributo (es decir, todas las relaciones
estn normalizadas o, lo que es lo mismo, estn en la primera forma normal).
Como vimos en el captulo 3, es posible considerar al encabezado de una relacin como un
predicado y a las tupias de esa relacin como proposiciones verdaderas (obtenidas del predicado
mediante la sustitucin de argumentos del tipo apropiado por los indicadores de posicin
o parmetros del predicado). La Suposicin del Mundo Cerrado dice que podemos dar por
hecho que si una tupia vlida es decir, una que se apega al encabezado de la relacinno
aparece en el cuerpo de la relacin, entonces la proposicin correspondiente es falsa.
Puesto que los valores de un tipo determinado pueden ser de cualquier clase, las relaciones
que tienen atributos con valor de relacin son vlidas (y de hecho son muy tiles, como veremos
en los captulos 6 y 11).

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

La parte de manipulacin del modelo relacional ha evolucionado considerablemente desde la


publicacin de los documentos originales de Codd sobre el tema [5.1,6.1]. Sin embargo, todava
se da el caso de que el componente principal de esa parte de manipulacin es lo que se denomina
lgebra relacional, que bsicamente es slo el conjunto de operadores que toman relaciones
como sus operandos y regresan una relacin como su resultado. En el captulo 3 explicamos muy
brevemente tres de estos operadores: restringir, proyectar y juntar. En el presente captulo examinaremos
dichos operadores a profundidad y otros ms.
En la referencia [6.1], Codd defini lo que generalmente se conoce como lgebra "original"
es decir, el conjunto de ocho operadores mostrados de manera simblica en la figura 6.1. Ahora
bien, Codd tena en mente un propsito muy especfico, el cual examinaremos en el siguiente
captulo para definir precisamente esos ocho operadores. Pero usted debe entender que stos no
son toda la historia; de hecho, podramos definir cualquier cantidad de operadores que satisficieran
el sencillo requerimiento de "relaciones dentro, relaciones fuera" y muchos de estos operadores
han sido definidos por diferentes autores (por ejemplo, vea la referencia [6.10]). En este
captulo explicaremos primero los operadores originales de Codd (o al menos, nuestra versin
de ellos) y los usaremos como base para explicar una variedad de ideas algebraicas; despus
consideraremos algunas formas en las que podra ampliarse ese conjunto original de ocho
ope-radores.

Hemos explicado el lgebra reladonal. Comenzamos por enfatizar de nuevo la importancia de la


propiedad de derre y de las expresiones relacionales anidadas, y explicamos que si ibamos a
tomar en serio el cierre, entonces necesitbamos un conjunto de reglas de inferencia de tipos de
relacin (y por supuesto, nuestra versin del lgebra incluye dichas reglas).
El lgebra original consista de ocho operadores: el conjunto tradicional de operadores
unin, interseccin, diferencia y producto (todos ellos modificados en cierta forma para tomar
en cuenta el hecho de que sus operandos son relaciones muy especficas y no conjuntos arbitraros),
as como los operadores relacionales especiales restringir, proyectar, juntar y dividir. A
este conjunto original agregamos RENAME, SEMIJOIN, SEMIMINUS, EXTEND y SUMMARIZE
(y tambin mencionamos TCLOSE y explicamos brevemente GROUP y UNGR0UP).
Para algunos de estos operadores se requiere que los dos operandos de relacin sean del mis tipo
(concepto antes llamado "compatibles con la unin"). Tambin sealamos que no todos estos
operadores son primitivos; varios de ellos pueden ser definidos en trminos de otros. Mostra-mos
cmo combinar los operadores dentro de expresiones que sirven para una variedad de fines:
recuperacin, actualizacin y otros ms. Tambin explicamos brevemente la idea de t
formar dichas expresiones con fines de optimizacin (aunque explicaremos esta idea con
mucho ms detalle en el captulo 17). Y consideramos la posibilidad de utilizar un enfoque paso
a paso para manejar las consultas complejas, empleando WITH para introducir nombres las
expresiones. Por ltimo, explicamos la idea de las comparaciones relacionales, las cuales de
alguna manera hacen que ciertas clases de consultas sean ms fciles de expresar (por lo regular
aquellas que de otra forma requeriran de DIVIDEBY).

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#.

En esta ltima formulacin, el usuario simplemente declara las caractersticas de definicin


resultado deseado y deja al sistema que decida exactamente qu juntas, restricciones,
etctera. debe ejecutar a fin de construir el resultado.
Por lo tanto, podramos decir que por lo menos superficialmente la formulacin
clculo es descriptiva, mientras que la algebraica es prescriptiva: El clculo simplemente
cribe cul es el problema, l lgebra prescribe un procedimiento para resolver ese problema. de
manera muy informal: El lgebra es de procedimientos (aunque de alto nivel, siguen diendo
procedimientos); el clculo no lo es.
Sin embargo, subrayamos la idea de que las distinciones anteriores son slo superficiales.
El hecho es que el lgebra y el clculo son lgicamente equivalentes. Para cada exprsin
al-gebraica existe una equivalente del clculo, y para cada expresin del clculo existe una
alge-braica equivalente. Existe una correspondencia uno a uno entre ambos. Por lo tanto, la
diferencia entre ellos es en realidad una diferencia de estilo. Hay quienes dicen que el
clculo est ms cercano al lenguaje natural y el lgebra es tal vez ms como un lenguaje de programacin.
Pero,
nuevamente tales diferencias son ms aparentes que reales; en particular, ninguno de los enfoques
est genuinamente ms cargado a los no procedimientos que el otro. En la seccin 7.4 examinaremos
en detalle esta cuestin de equivalencia.
El clculo relacional est basado en una rama de la lgica matemtica denominada clculo
de predicados. La idea de usar el clculo de predicados como la base para un lenguaje de consulta
parece tener su origen en un documento de Kuhns [7.6]. El concepto de clculo relacional
es decir, un clculo de predicados aplicado especficamente a las bases de datos relacionales
fue propuesto por primera vez por Codd en la referencia [6.1 ]; un lenguaje basado explcitamente
en ese clculo, y llamado Sublenguaje de datos ALPHA, tambin fue presentado por Codd en
otro artculo [7.1]. El propio ALPHA no lleg a ser implementado, pero un lenguaje llamado
QUEL [7.5, 7.10-7.12] que ciertamente fue implementado y fue por algn tiempo un serio
competidor de SQL era muy parecido a ste; de hecho, el diseo de QUEL tuvo mucha influencia
de ALPHA.
Las variables de alcance son una caracterstica fundamental del clculo. Para resumir, una
variable de alcance es aquella que "abarca" a alguna relacin especificada; es decir, una variable
cuyos valores permitidos son tupas de esa relacin. Por lo tanto, si la variable de alcance V
abarca a la relacin r, entonces, en cualquier momento dado, la expresin "V" denota alguna tupa t
de r-. Por ejemplo, la consulta "Obtener los nmeros de proveedor de los proveedores en Londres"
podra expresarse en QUEL como sigue:
RANGE OF VX IS V ;
RETRIEVE ( VX.V0 ) WHERE VX.CIUDAD "Londres" ;
Aqu, la variable de alcance es VX y abarca cualquier relacin que sea el valor actual de
la varre V (la instruccin RANGE es una definicin de esa variable de alcance). Por lo tanto, Ja
instruccin RETRIEVE puede ser parafraseada como: "Para cada valor posible de Ja variable
VX, recupera el componente V# de ese valor si y slo si el componente CIUDAD tiene el valor
"Londres".
Hemos considerado brevemente el clculo relational, como una alternativa al lgebra
cional. De manera superficial, ambos lucen muy diferentes el clculo es descriptivo
mientras que el lgebra es prescriptiva, pero en el fondo son lo mismo, ya que cualquier
expresin del clculo puede ser convertida en una expresin semnticamente equivalente del
lgebra y vice-versa.
El clculo se presenta en dos versiones, clculo de tupias y clculo de dominios. La
dife-rencia clave entre ellos es que las variables de alcance del clculo de tupias abarcan
relacione mientras que las variables de alcance del clculo de dominios abarcan
dominios.
Una expresin del clculo de tupias consiste en una prototupla y una clusula WHERE
cional que contiene una expresin lgica o WFF (frmula bien formada). Se permite que
esa WFF contenga cuantificadores (EXISTS y FORALL), referencias a variable libres y
ligadas, operadores lgicos (AND, OR, NOT, etctera), y as sucesivamente. Toda variable
libre cionada en la WFF tambin debe ser mencionada en la prototupla. Nota: No expusimos de
mane- ra explcita esta idea en el cuerpo del captulo, pero las expresiones del clculo estn
diseadas para servir bsicamente a los mismos fines que las expresiones del lgebra (vea
el captol seccin 6.6).
Mostramos mediante un ejemplo cmo puede ser usado el algoritmo de reduccin de Codd
para convertir una expresin cualquiera de clculo a una expresin equivalente de lgebra, all
nando as el camino para una posible estrategia de implementacin del clculo. Mencionan
una vez ms el aspecto de la complecin relacional y explicamos brevemente lo que
involucra la demostracin de que un lenguaje dado L sea completo en este sentido.
Tambin consideramos la cuestin de incluir posibilidades computacionales (anlogas
las capacidades que proporcionan EXTEND y SUMMARIZE en el lgebra) en el clculo de
tu-plas. Despus presentamos una breve introduccin al clculo de dominios y afirmamos
(sin in-tentar demostrarlo) que ste era tambin relacionalmente completo. Por lo tanto, el
clculo de tupias, el clculo de dominios y el lgebra son todos equivalentes entre s.

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;

La integridad de los datos

Das könnte Ihnen auch gefallen