Download Instructivo RA - BasedeDatos-LSI-LCC

Document related concepts
no text concepts found
Transcript
RA: INTÉRPRETE
DEL ÁLGEBRA
RELACIONAL
RA es un intérprete sencillo del álgebra relacional, escrito
en Java.
Está construido en la parte superior de un sistema de base
de datos SQL-Relacional.
Implementa consultas del álgebra relacional
traduciéndose en consultas SQL y las ejecuta en el sistema
de base de datos subyacente a través del JDBC.
Requisito Necesario
RA funciona sobre la Máquina Virtual de Java (JVM), que es
el entorno de ejecución de programas escritos en este
lenguaje.
Entonces, será necesario contar con alguna versión de
JAVA en la máquina donde queramos ejecutarlo.
Ejecución
1º Ejecutamos la ventana de comandos
(cmd) de windows (win+R -> cmd).
2º Utilizamos el comando “java -version”
para verificar si tenemos instalado java.
Ejecución:
3ºUtilizamos el comando “cd ..” repetidamente
hasta volver al directorio raiz del disco.
4ºescribimos cd y pegamos la ruta de la
carpeta donde se encuentra el ejecutable “ra.jar”
Ejecucion
5º Escribimos el siguiente comando “java –jar ra.jar ”
RA se ejecuta de forma predeterminada en el archivo de base de datos SQLite
sample.db (donde se encuentran ejemplos de consultas).
Importante
Para poder trabajar con los casos vistos en la práctica
acceder a la carpeta ../ra-2.1b/Bases de Datos. Copiar
el archivo .db del caso con el que necesitemos trabajar,
y pegarlo en ../ra-2.1b, luego modificar el nombre de
este archivo por “sample.db”.
Comandos generales
Algunos comandos importantes son:
\help; (ayuda del intérprete)
\quit; (salir de RA)
\list; (lista de todas las relaciones disponibles para consultas en la base de
datos)
Tenga en cuenta que todos los comandos u operadores deben comenzar
con una barra invertida (\), y cada consulta o comando debe ser
finalizado por un punto y coma (;)
Operadores del Álgebra: Selección
\select_{cond} es el operador de selección relacional.
Por ejemplo, para seleccionar las tuplas de Empleados con nombre Juan o
Francisco:
\select_{nombre = ’Juan’ o nombre = ‘Francisco’} Empleados;
Tenga en cuenta que los literales van entre comillas simples y que se pueden
utilizar operadores booleanos como AND, OR y NOT. Como así también los
operadores de comparación <=, <, =, >, >= y <>.
Operadores del Álgebra: Proyección
\project_{lista_atributos} es el operador de proyección relacional.
En lista_atributos, se colocan los nombres de los atributos a proyectar
separados por coma.
Por ejemplo, para mostrar el DNI y el nombre de los Empleados del
departamento de compras:
\project_{DNI, nombre} (\select_{Depto = ‘Compras’} Empleados);
Operadores del Álgebra: Join
\join_{cond} es el operador join relacional.
Por ejemplo, para hacer join entre las relaciones Alumnos (DNI, nombre) y
Exámen (DNI_alu, fecha) a través del atributo DNI:
Alumnos \join_{DNI = DNI_alu} Exámen;
Operadores del Álgebra: Natural Join
\join es el operador natural join relacional.
Por ejemplo, para hacer join entre las relaciones Alumnos (DNI, nombre) y
Exámen (DNI_alu, fecha) a través del atributo DNI:
Alumnos \join \rename_{DNI, fecha} Exámen;
En el natural join la condición de reunión es implícita y es la igualdad sobre los
atributos con idénticos nombres en ambas relaciones. Por lo que las
relaciones deben tener uno o más atributos en común. En este caso
utilizamos el operador \rename_{nueva_lista_atributos}, para modificar el
nombre de uno de los atributos de manera que se pueda realizar el natural
join.
Operadores del Álgebra: Producto cartesiano
\cross es el operador relacional producto cartesiano.
Por ejemplo, para realizar el producto cartesiano entre Alumnos e Inscriptos:
Alumnos \cross Inscriptos;
Operadores del Álgebra: unión, diferencia e intersección
\unión, \diff y \intersect son los operadores relacionales unión, diferencia e
intersección.
Un ejemplo trivial, para calcular la unión, diferencia e intersección entre la
relación Alumnos y sí mismo sería:
Alumnos \union Alumnos;
→ La misma relación Alumnos
Alumnos \diff Alumnos;
→ Vacío
Alumnos \intersect Alumnos; → La misma relación Alumnos
Ejemplo: sample.db Bares y cervezas
Problemas y limitaciones
El operador \rename sólo se puede utilizar para renombrar atributos de
relaciones y no nombres de relaciones.
Los operadores \union, \diff y \intersect, comprueban la compatibilidad de las
relaciones de entrada mediante la verificación de los tipos de cada par de
atributos en el orden en que aparecen en las relaciones de entrada. Por lo
tanto, el orden de los atributos es importante.
RA tiene la limitación de no poder calificar atributos con el mismo nombre
entre dos relaciones diferentes. Por esa razón es necesario renombrar los
atributos de manera que se puedan calcular operaciones como el natural join
por ejemplo.