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.