Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Velásquez
TESIS:
Desarrollo de un Interprete de Algebra Relacional empleando Teorı́a de Autómatas
BORRADOR DE TESIS
Juliaca - Perú
UNIVERSIDAD ANDINA NÉSTOR CÁCERES
VELÁSQUEZ
FACULTAD DE INGENIERÍA DE SISTEMAS
CARRERA ACADÉMICO PROFESIONAL DE
INGENIERÍA DE SISTEMAS
———————————————————————————————
APROBADO POR:
PRESIDENTE:
PRIMER MIEMBRO:
SEGUNDO MIEMBRO:
ASESOR:
ii
Tabla de Contenido
Lista de Tablas VI
1. Generalidades 1
1.1. Titulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Descripción del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Justificación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.2. Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5. Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.1. Hipótesis General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.2. Hipótesis Especı́fico . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.4. Operacionalización de Variables . . . . . . . . . . . . . . . . . . . . 4
1.6. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6.1. Nivel de Investigación . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6.2. Tipo e Investigación . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Marco Teórico 5
2.1. Introducción a las Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Ventajas de las Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . . 7
iii
2.3. Desventajas de las Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . 7
2.4. El Modelo de Datos Relacional . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.2. Objetivos del modelo Relacional . . . . . . . . . . . . . . . . . . . . 9
2.4.3. Dominio y Atributo . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.4. CLAVES: Concepto y tipos. . . . . . . . . . . . . . . . . . . . . . . 11
2.4.5. Restricciones de Integridad en bases de datos Relacionales . . . . . 12
2.4.6. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5. Reglas de Codd para SGBD Relacionales. . . . . . . . . . . . . . . . . . . . 16
2.5.1. Concepto de Valor Nulo . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2. Otros tipos de Nulos . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.3. Operadores relacionales con Valores Nulos. . . . . . . . . . . . . . . 25
2.6. Transformación del modelo E/R al modelo Relacional. . . . . . . . . . . . 27
2.6.1. Reglas de transformación del Modelo Básico. . . . . . . . . . . . . . 28
2.7. Diseño de Bases de Datos Relacionales: Normalización. . . . . . . . . . . . 33
2.7.1. Formas Normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.8. Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.9. Interprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.9.1. Ventajas del intérprete frente al compilador: . . . . . . . . . . . . . 41
2.9.2. Desventajas del intérprete frente al compilador: . . . . . . . . . . . 41
2.10. Autómatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.10.1. Autómata finito determinista determinista . . . . . . . . . . . . . . 43
2.11. Autómatas finitos y Lenguajes Regulares . . . . . . . . . . . . . . . . . . . 43
2.11.1. ANÁLISIS LÉXICO . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.11.2. Diagramas de transiciones . . . . . . . . . . . . . . . . . . . . . . . 44
2.11.3. Tabla de transiciones . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.12. Algebra Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.12.1. EJEMPLO DE AUTÓMATA FINITO . . . . . . . . . . . . . . . . 46
2.13. Algebra Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.13.1. Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.13.2. Proyección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
iv
2.13.3. Producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.13.4. Unión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.13.5. Intersección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.13.6. Diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.13.7. Join o Reunión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.13.8. División . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Conclusiones 64
Recomendaciones 65
Bibliografı́a 66
v
Índice de cuadros
vi
Índice de figuras
vii
Capı́tulo 1
Generalidades
1.1. Titulo
que no se imparte la teorı́a de Bases de Datos como debe de ser puesto que no existen las
herramientas necesarias que den soporte a esta actividad, como base de la teorı́a relacional
propuesta por J. Cood en la década de los setenta, la cual se basa en el Algebra relacional
y esta es base para la correcta comprensión del lenguaje de consulta SQL (Lenguaje de
Consultas Estructurado).
Ya que SQL se basa en el algebra relacional, es por esto que se hace necesario la
creación de un compilador intérprete que nos solucione este problema, con el fin de crear
relacional.
1
2
La motivación de este trabajo se basa en considerar una visión teórica del tema que,
Relacional como base de SQL . Existe cierta circularidad en las definiciones de las macros
relacional, como por ejemplo, los de cardinalidad. Se deberı́a tomar en cuenta el concepto
consultas a base de datos relacionales lo cual será muy importante pues brindará una
1.4. Objetivos
1.4.1. Objetivo General
Autómatas.
compilador.
3
algebra relacional.
1.5. Hipótesis
1.5.1. Hipótesis General
1.5.3. Variables
VARIABLE DEPENDIENTE
Algebra Relacional.
VARIABLE INDEPENDIENTE
4
Compilador Interprete.
1.6. Metodologı́a
1.6.1. Nivel de Investigación
Marco Teórico
dos entre sı́ de acuerdo a ciertas reglas, que aportan a la organización a la que sirven la
Una Base de Datos (BD) es una colección de datos estructurados según un modelo
que refleje las relaciones y restricciones existentes en el mundo real. Los datos que han de
los mismos. Por último, los tratamientos que sufran estos datos tendrán que conservar la
bles en tiempo real y compatibles con usuarios concurrentes con necesidad de información
y no predicable en tiempo.
5
6
proporciona una interfaz entre los datos almacenados y los programas de aplicación que
acceden a éstos y que se caracteriza fundamentalmente por permitir una descripción cen-
tralizada de los datos y por la posibilidad de definir vistas parciales de los mismos para
medios necesarios para describir y manipular los datos almacenados en la base de datos,
Los sistemas relacionales de bases de datos forman (SGBDR), junto con la lógica
de los negocios y las interfaces gráficas los tres pilares de los sistemas de información
actuales, pero de estos tres elementos ninguno quizá como los SGBDR tienen más claras
sus fronteras. Los últimos avances tecnológicos han acercado al usuario (empresarial o
Empresas proveedoras tales como Informix, PostGres, Oracle y Microsoft han aportado
Una de las tareas de los SGBDR, consiste en presentar a los programadores una visión
mismos. Esta independencia ha conseguido que la arquitectura fı́sica de los datos sea más
modo.
4. No hay standard.
Una base de datos bien diseñada es una garantı́a del resultado de las aplicaciones,
puedan darse en los datos con las implicaciones que ello conlleva [LUCA93].
8
miten describir los datos del universo de discurso (UD), constituyendo una herramienta
1970 imponiéndose sobre los modelos previos (jerárquico y red) durante la década de los
ochenta. Actualmente, es el modelo elegido para la construcción de casi todos los sistemas
sencillez, el usuario percibe la base de datos como un conjunto de ”tablas”, y, por otro
relación es una colección de tuplas, cada una de las cuales esta formada por una serie
de atributos, estos atributos son los mismos en cada una de las tuplas. Una relación se
puede representar como una tabla, en la cual cada atributo etiqueta las columnas de
dicha tabla y cada fila es una tupla. Debido a este modo de representación los términos
relación y tabla se han convertido en sinónimos y a lo largo de este trabajo los usaremos
indistintamente. También son sinónimos los términos atributo y campo. Estas tablas para
poder ser consideradas relaciones deben cumplir además unas determinadas condiciones,
Las relaciones tienen un nombre. Para denotar una relación se suele usar la siguiente
9
Si algún atributo se encuentra subrayado significa que forma parte de la clave principal
y si alguno se encuentra en letra itálica es que se trata de una clave ajena. (Veremos estos
fı́sico”. Hay también una serie de objetivos propuestos por Cood(1990) que se pueden
nipulación lógica, y por tanto, no es necesario modificar los programas por cambios en el
base de datos no debe repercutir en los programas y/o usuarios que esten accediendo al
- Flexibilidad. Poder presentar a cada usuario los datos de la forma que prefiera.
- Sencillez. Las caracterı́sticas anteriores, ası́ como unos lenguajes de usuario muy sen-
cillos, producen como resultado que el modelo de datos relacional sea fácil de comprender
Vn, caracterizados por un nombre; decimos valores homogéneos porque son todos del
mismo tipo, y atómicos porque son indivisibles en los que al modelo se refiere, es decir, si
nombre por el que referirnos a él y un tipo de datos. Los dominios pueden definirse por
de datos relacional está compuesto por un conjunto finito y no vacio de atributos, A1, A2,
..., An, estructurados en relaciones; cada atributo toma sus valores de un unico dominio
El número de atributos que forman una relación es llamado Grado de esa relación y
el número de tuplas que tiene una relación es llamado Cardinalidad, es decir el grado y
univoca y minimamente a una tupla, es decir no hay dos tuplas con dos claves candidatas
iguales. Por supuesto siempre existirá una clave candidata y en una relación puede existir
más de una.
- Clave primaria. La que el usuario escoge de las claves candidatas y que será única.
Sirve para referenciar las tuplas de la relación. Ningún atributo que forme parte de la
- Claves alternativas. Son aquellas claves candidatas que no han sido escogidas como
clave primaria.
atributos cuyos valores han de coincidir con los de la clave primaria de una relación R1
(R1 y R2 no son necesariamente distintas). La clave ajena y la clave primaria deben estar
12
adaptarse a las estructuras impuestas por el modelo (por ejemplo, no tener tuplas dupli-
cadas) y han de cumplir las restricciones de usuario para constituir una ocurrencia válida
del esquema.
a) Restricciones INHERENTES.
terı́sticas propias de una relación que se han de cumplir obligatoriamente, por lo que se
trata de restricciones inherentes y que, como ya hemos señalado, diferencian una relación
de una tabla:
- Cada atributo solo puede tomar un valor del dominio, no admitiendose por tanto dos
grupos repetitivos.
Se debe cumplir la regla de Integridad de entidad Ñingún atributo que forme parte
Es decir, ningún valor de la clave primaria puede ser NULO. Esto es porque el valor de
13
la clave primaria se usa para identificar las tuplas individuales de una relación; permitir
valores nulos para la clave primaria implica que no se pueda identificar algunas tuplas.
Si dos o mas valores tuvieran un valor nulo como clave primaria, no podrı́amos distin-
guirlas. En las tablas del ejemplo vemos como debido a las restricciones de integridad de
las entidades, NOMBRE no puede ser nulo en ninguna tupla de ESTUDIANTE, CODIGO
b) Restricciones de USUARIO.
ser verificado por los correspondientes objetos para que éstos constituyan una ocurrencia
primaria de la relación R1 todo valor de dicha clave (Clave ajena R2) debe concordar
14
con los valores de la clave primaria R1 o ser NULO. R1 y R2 son claves necesariamente
de borrado:
- Operación restringida (RESTRICT). Solo se puede borrar una fila de la tabla que
tiene clave primaria referenciada si no existen filas con esa clave en la tabla referenciada.
de una fila de la tabla que contiene la clave primaria lleva consigo la modificación de las
fila de la tabla que contiene la tabla primaria lleva consigo la puesta a nulos de los valores
de la clave ajena de las filas de la tabla que referencia, cuya clave coincida con el valor de
- Operación con puesta a valor por defecto (SET DEFAULT). El borrado o modifi-
cación de filas de tuplas de una relación que contiene la clave primaria referenciada lleva
consigo poner el valor por defecto a la clave ajena de la relación que refefencia; valor por
Ejemplo.
En la base de datos del ejemplo anterior, la relación EXAMEN tiene como clave pri-
se refiere al estudiante que hizo el exámen, por tanto, se puede designar NOMBRE-
men (especificando el lugar del examen), que se refiera a la clave primaria de una relación
denominada EDIFICIO; de nuevo habrı́a una restricción referencial, pero ahora se permi-
exámen se desconoce).
c) Otras restricciones.
Dominios.
- Evaluación de restricciones.
2.4.6. Operadores
Existen varios operadores asociados al modelo relacional y que se aplican a las rela-
ciones, todos ellos conformal el álgebra relacional y los estudiaremos de una forma práctica
SQL: El lenguaje de las Bases de Datos Relacionales, señalando también que ocurre
publicado por la revista Computerworld, Codd daba las siguientes reglas que debe cumplir
dades relacionales.
2. Regla de acceso garantizado: Cada valor escalar individual puede ser direcciona-
correspondiente.
de la cadena de caracteres vacı́a o de una cadana de caracteres blancos, y distinta del cero
relacional.
relacional:
6. Modificación de vistas: todas las vistas teóricamente modificables deben poder serlo
en la práctica.
de los programas, tal que se puedan modificar éstas sin afectar a aquellos.
de Datos.
12. Regla de no subversión: Si el sistema posee una interface de bajo nivel (p.e. llamadas
18
en C), éste no puede subvertir el sistema; por ejemplo, pudiendo evitar restricciones de
seguridad o integridad.
Si bien los valores nulos no son un concepto exclusivo del modelo relacional, ha sido en
el contexto de este modelo donde se han abordado su estudio de manera más sistemáti-
permitiendo ası́ resolver los numerosos problemas teóricos y prácticos que rodean este
tema.
Se puede definir el valor nulo o valor ausente como una marca utilizada para representar
La definición de tupla que se ha dado (todo atributo tiene un valor asociado) no permite
contemplar el caso en el que se desconoce el valor de un atributo en una tupla, situación que
introducir la hipótesis de la existencia de un valor nulo en todo dominio del esquema. Este
representada por el atributo para el objeto representado por la tupla; cuando esto sucede
se dice que dicho atributo tiene valor nulo en esa tupla. Es importante destacar que el
valor nulo aún siendo un valor de cualquier dominio tiene un comportamiento distinto
Un valor nulo es un indicador que dice al usuario, que el dato falta o no es aplicable.
Por conveniencia, un dato que falta normalmente se dice que tiene el valor NULO, pero
19
el valor NULO no es un valor de dato real. En vez de ello es una señal o un recordatorio
La necesidad de los valores nulos es evidente por diversas razones como pueden ser:
momento de introducirse no tendrá ningún valor para las tuplas de las relaciones.
La siguiente tupla:
que se puede denotar como tupla T, es una representación de esta función mediante
pares (atributo, valor). En esta tupla es atributo dirección tiene valor nulo indicando que
El permitir que algunos atributos puedan tomar valores nulos tiene efectos importantes
en las definiciones dadas anteriormente en el capı́tulo 2, Modelo Relacional, que deben ser
a) Dominio. El concepto de dominio para los atributos que puedan tomar valor nulo
b) Relación. Una relación es un conjunto de tuplas. Por tanto, no puede haber tuplas
duplicadas. Dadas dos tuplas, consideraremos que una es duplicada de la otra cuando
todos los atributos que son nulos en una lo son también en la otra, y todos los que no son
Falta de Información.
la información a menudo es incompleta, por lo cual es preciso contar con una forma de
manejar estas situaciones en nuestros sistemas formales de bases de datos. Sin embargo,
pensamos que los VALORES NULOS al estilo SQL no resuelven ese problema. De hecho
pensamos que todavı́a no se comprende del todo el problema de la información que falta
han presentado varias propuestas par manejar la información que falta. Quizá la más
conocida es la de Codd, quien considera ahora su estrategia como parte integral del modelo
relacional [DATE93].
cualquier posición de fila y columna en la base de datos se podrı́a marcar como nula
Supongamos ahora que dos de estas posiciones, digamos x e y, se marcan como nulas,
y consideremos la pregunta ”¿Son estos dos nulos iguales entre si?”. La respuesta a esta
pregunta no puede ser ”Si”, porque eso implicarı́a que los nulos ya no son desconocidos
(del todo); se sabrı́a que uno es igual al otro. Por lo mismo la respuesta tampoco puede
ser ”No”, porque eso implicarı́a que uno es diferente del otro. En vez de ello, la respuesta
desconocido, si x es nulo o y es nulo o los dos lo son. De ahı́ la lógica de tres valores
de Cood; verdadero, falso y desconocido son los tres ”valores de verdad”de esa lógica
trivaluada.
Ahora definiremos versiones para la lógica de tres valores de los operadores lógicos
NO(NOT), Y(AND) y O(OR) mediante las tablas de verdad mostradas en la figura 2.4
22
al evaluar p se obtiene desconocido, y falso en cualquier otro caso. Ası́ pues, QUIZÁ se
Existen una serie de problemas que resultan del esquema anterior y que veremos a
continuación:
1. Problemas psicológicos. La lógica de tres valores está llena de trampas para los
incautos. Un ejemplo sencillo: las consultas .obtener los proveedores de una determinada
ciudad”, por ejemplo ”Londres .obtener los proveedores que no están en esa ciudad”juntas
2
no producirán entre las dos todos los proveedores (es necesario incluir también la consulta
.obtener los proveedores que quizá estén en Londres”). Como ejemplo un poco más prob-
lemático, supongamos una ligera variación en una base de datos que contiene información
sobre proveedores y piezas que estos suministran, en la cual la tabla SP tiene otra colum-
na, NUMEMB, la cual actúa como clave primaria, y sı́ se permiten nulos en las columnas
SX.SNOMBRE WHERE NOT EXISTS SPX (SPX.S = SX.S AND SPX.P = ’P2’)
¿Qué significa esta columna? Entre las posibles interpretaciones se encuentran por lo
la pieza P2.
c) Obtener los nombres de los proveedores de los cuales se sabe que no suministran la
pieza P2.
d) Obtener los nombres de los proveedores de los cuales o bien se sabe que no sumin-
Codd requiere que de todos modos que x se considere como duplicado de sı́ misma, a fin de
una proyección. Ası́, la pregunta ”¿Dos nulos son iguales?”debe interpretarse de acuerdo
3. Anomalı́as lógicas. El desarrollo anterior hace surgir una gran número de anomalı́as
x = x sea verdadero.
x - x sea cero.
- No se garantiza que la reunión natural de una relación consigo misma sea igual a la
relación original.
simbólicas que son correctas en la lógica ordinaria de dos valores pero que pudieran no
serlo en la lógica de tres valores. De hecho, se sabe que algunos sistemas disponibles en el
Hasta ahora nos hemos limitado a examinar un solo tipo de nulo, a saber, ”valor
desconocido”. Sin embargo, pueden existir varios otros tipos; por ejemplo, ”la propiedad no
es aplicable”, .el valor no existe”, .el valor no está definido”, ...; ası́ Cood propone expandir
el enfoque de la lógica de tres valores a una lógica de cuatro valores para manejar un tipo
adicional de nulo, a saber ”la propiedad no es aplicable”. Ası́ pues, pareciera que n tipos
de nulo conducirán a una lógica de (n+2) valores. Considerando todos los problemas que
En vista de la existencia de otros tipos de nulos, otro de los problemas que surgen
es el de la interpretación. Por ejemplo, ¿Qué significan los valores nulos generados por
una recuperación de reunión externa?. Los ejemplos sugieren significados diferentes en los
25
distintos contextos.
En cuanto a las operaciones aritméticas con valores nulos, se toma como nulo el resul-
tado de suma, multiplicar, restar o dividir un valor nulo con cualquier otro valor.
considerar los valores nulos para evitar pérdidas de información a la hora de realizar con-
sultas a la base de datos, para lo cual aparecen nuevos operadores como el de combinación
Otro aspecto que hay que tener en cuenta es la realización de operaciones de agregación
con el fin de aplicar funciones estadı́sticas, como frecuencias, varianza, media, etc. En estos
casos hay que establecer muy claramente si se han de tener o no en cuenta los valores
nulos al efectuar los cálculos, o nos podremos llevar sorpresas como que la media de los
valores de un atributo no sea igual a la suma de los valores dividido por el número de
elementos.
El gran problema de los valores nulos es que ningún producto relacional hasta la fecha
los ha instrumentado de manera coherente y satisfactoria; por ejemplo, hay veces que no
se tienen en cuenta los valores nulos, como para las operaciones de agrupamiento, pero en
forma práctica mediante ejemplos en SQL en el capı́tulo 6, SQL: El lenguaje de las Bases
de Datos Relacionales, señalando también que ocurre con los operadores y los valores
26
nulos).
<, <=) - Tablas de verdad con lógica trivaluada o cuatrivaluada para los operadores
Entre los operadores especiales para el tratamiento de valores nulos, destaca el de com-
binación externa (outer join), que impide que se pierdan tuplas que desaparecen cuando
se aplica la combinación interna. Para evitar que las tuplas de una relación que no casan
de combinación externa que concatena esas tuplas con tuplas nulas. Cuando sea necesario
crear tuplas nulas en la segunda tabla se utiliza el operador de combinación externa ”left
outer join”, mientras que si se crean las tuplas nulas en la primera tabla habrá que uti-
lizar el operador de combinación externa right outer join”. Puede también ser necesario
crear tuplas nulas en ambas relaciones, denominándose en este caso el operador como
los productos comerciales sólo se admite utilizar en una misma consulta el derecho o el
Otro tipo de operaciones que tienen en cuenta los valores nulos, son los denominados
maybe (posible), que, utilizando la lógica trivaluada admiten como tuplas resultantes no
27
sólo las que cumplen el valor cierto, sino también las que cumplen puede ser cierto. En el
siguiente ejemplo se representa el caso de una combinación por igualdad de las relaciones
R1 y r2, resultando la relación R3. Ahora bien aplicando la combinación posible (maybe
tupla de la relación A <1, 5 >no sólo se combina con la tupla <5, 3>de la relación R2,
sino que también se combina con las tuplas <?, 6 >y <?, 7 >de dicha relación.
cionales. Los diagramas E/R vienen definidos fundamentalmente por entidades y rela-
estos conceptos:
a) Entidad. Como se ha visto anteriormente, una entidad se representa por una relación
definida por el conjunto de la entidad y los dominios asociados a estos atibutos. Cada tupla
b) Relación. Una relación R en la que forman parte las entidades E1, E2, ..., En, se
representa por una relación definida por el conjunto de los atributos identificadores de las
fuera necesario).
28
3) Todo tipo de interrrelación del 1:N se transforma en una nueva relación o se traduce
(al propagar la clave). Pero esta pérdida de semántica no afecta a la integridad de la base
1. Transformación de Entidades.
- Atributos no identificadores: serán columnas normales que podrán tomar valor nulo
Ejemplo:
- Interrelación N:M. Se transforma en una nueva relación que tendrá como clave prin-
- Cada atributo de la clave primaria será clave externa respecto de una de las relaciones
deberá estudiar que ocurre con los modos de borrado y modificación de la clave primaria
tabla>)
Ejemplo:
CASCADA EN ACTUALIZACION :
- Interrelación 1:N entre dos entidades E1 y E2. Hay pos posibles soluciones:
tidad con cardinalidad máxima 1 (E1) al tipo de cardinalidad máxima N (E2), desapare-
b) Considerarla como una relación N:M. Esta opción es la mejor en caso de: - Cuando el
muchos valores nulos. - Cuando se prevé que se convierta en N:M e el futuro. - Cuando
deben admitir valores nulos en la clave externa, y si es (1,1) no se deben admitir (cláusula
- Interrelaciones 1:1.
- Caso particular de las relaciones 1:N y M:N. - No existe una regla fija para su
transformación, pudiendose crear una tabla nueva o propagar la clave. En este último
o no Nulos / Accesos más frecuentes). Hay varios casos que veremos a continuación: 1. Si
31
Ejemplo 2.
Interrelaciones n-arias.
misma regla que en las interrelaciones N:M, pudiendodes realizar simplificaciones según los
columnas de la relación.
clave de la relación correspondiente, aunque suele ser mejor crear una nueva tabla para
en SQL.
a) Englobar todos los atributos del tipo y subtipos en una sola relación. Se utiliza
cuando hay muy pocas diferencias entre los atributos de los subtipos.
b) Crear una relación para el tipo genérico y una más por cada subtipo. Cada subtipo
tendrá como clave primaria el AIP del tipo, que a la vez será clave externa referenciando
c) Crear una relación para cada uno de los subtipos, que contendrán todas ellas los
el modelo relacional esto no lo permite, habrá que crear una nueva relación aparte para
contenerlo y asociarlo con una clave externa con la relación resultante del supertipo.
- Dimensión temporal.
- Atributos derivados.
calcule el valor cada vez que se inserten, borren o modifiquen ocurrencias que incluyen
cional obtenido en esta primera etapa del diseño lógico para refinarlo y comprobar que no
siguiente forma: ”Dado un conjunto de información, hay que decidir que relaciones ex-
istirán en la base de datos, y qué atributos contendrá cada una”. Estudiaremos como
34
realizar un buen diseño que evite los posibles problemas que se podrı́an originar: repeti-
información al borrar tuplas. Para ello se estudian a continuación las técnicas formales de
normalización.
Los modelos de datos son instrumentos, objetos y reglas, que nos ayudan a represen-
tar el Universo de Discurso (UD). El proceso de diseño de una base de datos consiste en
(estructuras) aplicando para ello las reglas de dicho modelo (restricciones inherentes).
diendo obtener diferentes esquemas relacionales, no todos ellos serán equivalentes y unos
b) Realizar el diseño del modelo E/R y transformarlo al modelo Relacional. Las rela-
- Aparición en la base de datos de estados no validos en el mundo real, como son las
Ejemplo.
35
-ESCRIBE (autor, nacionalidad, cod-libro, titulo, editorial, año); Presenta varios prob-
lemas:
del mismo. Cuando un libro tiene más de un autor la editorial y el año se repiten también.
ningún libro (cod-libro Æ Clave primaria), tampoco podrı́a haber obras anónimas. La
Necesitamos formalizar una teorı́a en la que estudiemos las mejoras que da el estar
en una forma normal o en otra y donde definamos formalmente las condiciones que debe
cumplir una relación para estar en una forma o en otra. Esta teorı́a nos permitirá afrontar
el diseño de una forma estricta y nos permitirá asegurar que nuestro diseño estará libre
que un esquema de relación está en una determinada forma normal si satisface un conjunto
determinado de restricciones.
Una relación esta en 5FN sı́ tambien lo esta en todos las anteriores.
b) Dependencias.
nación Æ 5FN
- Primera Forma Normal (1FN). Una relación se encuentra en primera forma normal
cuando no hay grupos repetitivos en sus atributos. Todos los dominios de los atributos
- Segunda Forma Normal (2FN). Una relación está en 2FN si además de estar en
1FN todos los atributos que no forman parte de ninguna clave candidata suministran
información a cerca de la clave primaria. Toda relación cuya clave esta formada por un
Ejemplo:
claves candidatas.
- Tercera Forma Normal (3FN). Una relación está en 3FN si además de estar en 2FN,
los atributos que no forman parte de ninguna clave candidata facilitan información sólo
acerca de las claves y no acerca de otros atributos. Cada atributo no clave es dependiente
3FN).
3FNy si además el conocimiento de las claves permite averiguar todas las relaciones exis-
tentes entre los datos de la relación. Las claves candidatas deben ser los únicos descriptores
sobre los que se facilita información por cualquier otro atributo. Cada determinante debe
ser una clave candidata, siendo un determiante, aquel atributo con el cual otro atributo
tiene dependencia funcional total. Se eliminan las dependencias multivaluadas que no sean
38
funcionales.
parte de ella).
Por último incluiremos una pequeña guı́a de cómo utilizar la teorı́a de la normalización
dentro del diseño lógico. Supóngase que E/R es el esquema relacional obtenido de la
transformación del diagrama Entidad/Relación. Estos puntos son una orientación de esta
utilización:
a) Comprobar que todas las relaciones incluidas en E/R están en 1FN. Las únicas
relaciones que podrı́an no estarlo son aquellas que provienen de objetos del diagrama
tivaluado. Transoforma estas relaciones que un conjunto de relaciones que estén en 1FN.
b) Comprobar que todas las relaciones incluidas en E/R (1FN) están en 2FN. Para
este punto no se consideraran las claves alternativas, esto es, se supondrá que todas las
relaciones sólo poseen una clave candidata. De esta forma los problemas asociados a
relaciones que estén en 3FN. Se denota a este nuevo esquema relacional E/R (2FN).
c) Comprobar que todas las relaciones incluidas en E/R (2FN) están en 3FN. General-
las relaciones del E/R (2FN) estarán en 3FN. Es posible que alguna relación no lo esté
39
d) Comprobar que todas las relaciones incluidas en E/R (3FN) están en FNBC. Para
realizar esta tarea se han de considerar las claves candidatas. La presencia de claves
generalmente, cada una de las relaciones del esquema relacional E/R (3FN) estará también
en FNBC. De no ser ası́, aplicar la descomposición vista y obtener para la relación que
Como punto final de este apartado es interesante recordar que el objetivo final del dis-
eño lógico, en cuanto al diseño de los aspectos estáticos, es obtener un esquema relacional
en el cual cada una de las relaciones se encuentra en FNBC. Para ello, cada una de las rela-
del diagrama Entidad/Relación será analizada para comprobar que cumple esta propiedad.
De no ser ası́ se descompondrá en las en las relaciones adecuadas. Por otra parte las posi-
2.8. Compilador
(LC), que puede ser igual o diferente a uno de los otros dos.
- Los programas interpretados suelen ser más lentos que los compilados, pero los in-
que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras
que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras
2.9. Interprete
ejecutable u otro programa equivalente en otro lenguaje, por lo que cada vez que se ejecuta
el programa original debe pasar por la fase de análisis. Esto hace de los intérpretes más
lentos que los compiladores, donde las fases de análisis y ejecución son independientes,
por lo que solo se compila una vez y se ejecuta cuantas veces se quiera.
otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de
viva voz las palabras que oye, sin dejar constancia por escrito.
Ası́, mientras un intérprete toma las instrucciones del programa fuente y las traduce
del programa fuente a código máquina, sin ejecutarlo, siendo posteriormente cuando se
paso a paso del programa y con ello impide la edición seguimiento y depuración del
programa.
- La ejecución es más lenta, pues cada instrucción debe ser traducida a código máquina
interpretación se ha de repetir cada vez que se ejecuta el programa, mientras que con la
compilación, una vez obtenido el programa en lenguaje máquina éste puede ser ejecutado
- Son lenguajes interpretados:[BN92] PHP, ASP (hasta la versión 3), HTML, JavaScript,
42
Haskell, Prolog.
2.10. Autómatas
- Autómatas Finitos
- q0 Q es el estado inicial.
Un AFD puede considerarse como una máquina secuencial de Moore, cuyo alfabeto de
entrada sea å , su alfabeto de salida å S= 0,1 , y donde F será el conjunto de los estados
Tabla de Transición
Será una tabla cuyas filas están encabezadas por los estados (elemen-tos de Q). Los
encabezamientos de las columnas son los sı́mbolos del alfabeto de entrada (los elementos
estado final puede ser indicado también rodeando el estado por un cı́rculo [Kro96].
43
determinista que acepta el mismo lenguaje que el primero. Puesto que el conjunto de
Un autómata es una máquina, ya sea real o virtual, que se utiliza para el reconocimiento
de patrones, es decir, buscar una cadena de sı́mbolos determinada de entre varias válidas.
que las palabras reservadas de las estructuras estén bien puestas (parte del análisis léxico).
Como veremos, los autómatas finitos y los lenguajes regulares se encuentran en el nivel
por una letra inicial seguidos por un conjunto finito de letras y números cualquiera.
fuente) termina con un conjunto de sı́mbolos reconocidos como fin de la estructura; las
llamaremos marcas de fin de cadena y pueden ser espacios, puntos y comas y retorno
de carro. En la declaración de variables, recordemos que usamos comas para separar los
forma exacta.
Cı́rculos.- Es un conjunto finito, que van a representar posiciones o estados. Cada uno
de ellos lo podremos etiquetar con un número (un nombre) para identificarlo posterior-
mente. A Uno de ellos se le apunta con una flecha (apuntador) para denotar que se trata
del estado inicial. A Uno o más de ellos son cı́rculos dobles van a ser el/los estados de
aceptación, designando ası́ estados en los que se reconoce la cadena como válida. Al estado
Arcos.- Es cada una de las flechas que unen dos estados cualesquiera. Cada arco estará
45
corresponde a una secuencia de arcos rotulados que conducen del cı́rculo con apuntador a
un cı́rculo doble. A partir del diagrama de transiciones se puede hacer un programa que
sea la mejor de las posibles soluciones. Se designa una variable para almacenar el estado
actual y se inicializa como el estado inicial. Con una dentro de una sentencia WHILE (no
sea fin de cadena), una sentencia CASE OF dirige las transiciones a otros estados, dando
Es una representación tabular (una tabla) del autómata donde la tabla tiene: - N filas,
una por cada uno de los n estados del diagrama de transiciones. - Una columna por cada
sı́mbolo o categorı́a de los mismos posible en una cadena (estarán todos los sı́mbolos o
categorı́a de sı́mbolos posibles). - Una columna etiquetada como FDC (fin de cadena). -
El elemento de la tabla (m,n), estado m sı́mbolo n, será el estado al que se llega desde
pero la solución es mejor, pues el algoritmo es el mismo para autómatas con el mismo
variable el estado inicial, que se actualizará con el elemento (variable, sı́mbolo actual) que
(si hay muchos estados, el CASE-OF puede ser interminable); Es mejor desde la tabla de
transiciones.
Recordar que estos nombre debı́an empezar por una letra seguida de una letra o un
(se verá mas adelante porque), es decir, hay transiciones desde cada uno de los estados
para cada uno de los elementos posibles (letras o números). Una cadena de la forma
”5aba”producirá una transición del estado 1 al 2, permaneciendo allı́ hasta FDC. La cadena
se rechaza pues el estado 2 no es de aceptación. Otra forma de ver que no se puede aceptar
una cadena es que no haya una transición posible en el diagrama (con diagramas que no
2.- Tabla de transiciones Para hacer la tabla de transiciones, necesitamos tener definido
47
totalmente el autómata (luego se verá como se completa un autómata que no esté total-
mente definido). Para nuestro ejemplo, siguiendo los pasos expuestos, nos quedará la
siguiente tabla:
de operaciones que toman como entrada una o dos relaciones y producen como resultado
una nueva relación, por lo tanto, es posible anidar y combinar operadores. Hay ocho
son [Dat94]:
1. Selección
2. Proyección
3. Producto
4. Unión
5. Intersección
6. Diferencia
7. JOIN
8. División
primitivas, puesto que las otras tres se pueden definir en términos de estas.
2.13.1. Selección
El operador de selección opta por tuplas que satisfagan cierto predicado, se utiliza
la letra griega sigma minúscula para señalar la selección. El predicado aparece como
de la sigma.[BN92]
2.13.2. Proyección
eración es unaria, copiando su relación base dada como argumento y quitando ciertas
pi se coloca una lista de todos los atributos que se desea aparezcan en el resultado. La
50
2.13.3. Producto
A Veces B o A X B
Produce el conjunto de todas las tuplas t tales que t es el encadenamiento de una tupla
el producto. [Els99]
2.13.4. Unión
A UNION B o B UNION A
bas. Al igual que en teorı́a de conjuntos el sı́mbolo ? representa aquı́ la unión de dos
relaciones.[Els99]
2.13.5. Intersección
SECCION B
2.13.6. Diferencia
A MENOS B o A - B
B.[Els99]
relación B produce el conjunto de todas las tuplas t tal que t es el encadenamiento de una
2.13.8. División
A y el atributo i de B deben estar definidos dentro del mismo dominio. Ası́ el resultado
de [Coh00]
A DIVIDIDO POR B o A / B
produce la relación C con un sólo atributo X, tal que cada valor de x de C.X aparece
como un valor de A.X, y el par de valores (x, y) aparece en A para todos los valores y que
aparecen en B.[Els99]
Capı́tulo 3
3.1. Preliminares
Considerando una base de datos como una representación simbólica de una realidad
acotada, es deseable realizar consultas a la misma, con el fin de obtener información. Para
ello, es necesario contar con un lenguaje que permita formular las consultas. Para el caso
del Modelo Relacional, Codd [CO,70] desarrolló el Álgebra Relacional (AR) y el Cálculo
vo, y más aún, equivalentes a la Lógica de Primer Orden (FO). En función de ellos, Codd
menos podı́a expresar la misma clase de consultas, o queries, que el AR o CR. A raı́z de
esto, surgieron inquietudes acerca de las caracterı́sticas de tal clase, o más aún, saber cuál
es la clase de todas las consultas posibles a una base de datos, y cómo se relacionan unas
con otras. Ası́ Aho y Ullman [AU,79] demostraron que los queries de clausura no eran
preguntar si existe un paso de cualquier longitud entre un par de nodos dados, o pretender
52
53
AR ni el CR eran completos. Para definir cuál es la clase de todos los queries computables,
es decir aquéllas para las cuales existe un algoritmo que las computa. En virtud de la Tesis
de Church, dichas funciones serı́an las recursivas parciales y también las computables por
Máquinas de Turing. Pero Chandra y Harel [CH,80], observaron que los queries deben,
notaron que la Máquina de Turing requiere una codificación de la base de datos en una
estructura totalmente ordenada, para poder ser escrita en la cinta de input. En conclusión,
Teorı́a de Modelos Finitos, las bases de datos relacionales son consideradas como clases
estructuras relacionales finitas. Desde este punto de vista, un query puede verse como una
la estructura relacional finita correspondiente para alguna aridad. Por ello propusieron
clases de estructuras relacionales finitas, para cada vocabulario relacional finito, que son
automorfismos en ellas. A dicha clase se la llamó CQ, y como modelo formal para la com-
- Sea Q una consulta a base de datos que requiera gran cantidad de tiempo de proce-
cuencia sucesivos reinicios, entonces se define una computación ”por etapas”. Qué ocurre
si entre etapa y etapa se realiza una reorganización de la base de datos a nivel de soporte
- Sea Q una consulta a una base de datos distribuida en red, cuyo procesamiento
implica que cada computadora de la red resolverá una parte, no necesariamente disjunta,
red con distintos ordenamientos? También en este caso se obtendrı́an resultados parciales
inconsistentes entre si. Los lenguajes de consulta a base de datos actuales que se utilizan
en el mercado, como por ejemplo SQL, computan queries no computables. SQL al definir
cursores, frente a una consulta del tipo ”déme el primero”, responde entregando el elemento
decir, utiliza el orden impuesto por las direcciones fı́sicas de almacenamiento, para decidir
cuál es el primer elemento de un conjunto, cuando nunca se puede considerar tal orden
implı́cito entre los elementos del mismo, porque dicho orden no forma parte del esquema
de la base de datos.
55
3.2. Metodologı́a
por lo cual se propone desarrollar un sistema que Compile Utilizando Autómatas que
Desarrolle el Procesamiento para el Codigo de SQL. Este sistema e aplicara para la esti-
aproximación al 90 por ciento usando datos observados, por otro lado También se utilizara
autómatas predeterminados, los datos serán extraı́das para la ejecución de sistema el cual
nos permitirá observar que cambios sufre la imagen en los diferentes tono y esto es bueno
aplicación especı́fica, tipo de método entre otros. Por ejemplo, Desarrollar un compilador
De cualquier forma, los métodos que son especializados para desarrollar compiladores
utilizando Autómatas para el Código para SQL. Para ejecutar el Compilador se utilizo
ientes operaciones:
Según lo expuesto en el apartado anterior, para que la herramienta sea útil desde un
punto de vista didáctico, los alumnos deben de poder emitir respuestas a las cuestiones
57
que les hayan sido planteadas y el sistema tendrá que detectar los errores concretos que se
lenguaje de programación y crea un nuevo archivo donde se depositan cada uno de los
componentes léxicos. Esto se realizar mediante una serie de rutinas que identifican cada
instrucción y se le denomina un token (valor numérico), se debe realizar este proceso para
que el análisis posterior el sintáctico pueda procesar el archivo nuevo de manera mas fácil.
Se inicio con un análisis y a identificar cada una de las cosas que se pedı́an, después se
mente la técnica que se utilizo para codificar no fue la correcta ya que no se implementaron
fue un código que aparte de tener un gran numero de lı́neas, era difı́cil de revisar y com-
del maestro, se analizo el programa demostración que se nos entrego y se fue utilizando
los autómatas comenzando por los mas simples hasta el mas complicado.
Esta automata nos da la idea general que nosotros utilizaremos durante el desarrollo
del compilador interprete la idea es programar la tabla de transición de estado que resulta
de esta automata, ya que las instrucciones que se basan en Algebra relacional, tiene la
misma sintaxis. Es por ello que en la figura 3.5 se muestra el Automata a utilizar:
60
el sistema siempre mantendrá informado al usuario de los errores que vaya cometiendo.
plataforma Windows, de forma que los alumnos puedan utilizarla en sus propios orde-
nadores
Hecho este análisis se procedió a programar nuestra aplicación teniendo como resultado
constituyen el sistema y los interfaces que se establecen entre ellos. Se ha optado por
dividir la funcionalidad del sistema construido en dos partes; por un lado se encuentra el
de instrucciones SQL equivalentes que serán utilizadas para obtener los resultados de la
62
consulta y, por otro, el proceso que actúa de interfaz con la base de datos y con el usuario.
cada uno de los procesos con las tecnologı́as más adecuadas para cada caso, teniendo en
El módulo Intérprete se encarga del proceso de traducción de las sentencias del Álgebra
del Álgebra Relacional. Una vez obtenidas las instrucciones SQL para Access mediante el
Intérprete, este módulo obtiene el resultado a través del motor de base de datos Jet 3.0 y
63
lo visualiza.
va a trabajar. Obtiene la ruta del origen de datos y la estructura de la base de datos, que
son almacenadas de forma apropiada para su posterior uso por el módulo Editor visual de
sentencias. La base de datos contiene los datos sobre los cuales va a trabajar el usuario a
se ha optado por utilizar Delphi en su versión 7.0. ası́ se construyo nuestra aplicación.
Conclusiones
del lenguaje es muy similar a ANSI C, ası́ que solo utilize un procedimiento de
2. El objetivo de este trabajo fue crear un lenguaje de apariencia similar a las expre-
siones formales del álgebra relacional. Esto explica el uso de sı́mbolos para repre-
4. En este trabajo se ha presentado una herramienta que facilita el aprendizaje del Ál-
base de datos. Ante una sentencia expresada en Álgebra, el sistema traduce esta
sentencia a SQL.
64
Recomendaciones
Se recomienda continuar con el desarrollo de este tipo de aplicaciones por que pro-
65
Bibliografı́a
[BN92] Ceri Batini and Navathe. Conceptual Database Design. An entity relation-
[Dat93] C. J. Date. Introducción a los Sistemas de Bases de Datos. Vol I (5a edic.).
panoamerica, 1996.
co, 1999.
66
67