EDGPER
  3.2 Lenguajes de consulta formales.3.2 Lenguajes de consulta formales.
 
Los lenguajes de consultas:
      Son los lenguajes en el que los usuarios solicitan información de la base de datos. Estos lenguajes son generalmente de más alto nivel que los lenguajes de programación. Los lenguajes de consulta pueden clasificarse como procedimentales y no procedimentales;
     En el lenguaje del tipo procedimental el usuario da las instrucciones al sistema para que realice una secuencia de operaciones en la base de datos para calcular el resultado deseado.
     En el lenguaje no procedimental, el usuario describe la información deseada sin dar un procedimiento específico para obtener dicha información. 
    El álgebra relacional es un lenguaje de consulta formal procedimental, el álgebra relacional define operadores que funcionan sobre las tablas (de una manera similar a los operadores +,-,etc. del álgebra común ) para llegar al resultado deseado. El álgebra relacional es difícil de utilizar, debido en parte a que es procedimental, esto es, al utilizar el álgebra relacional no sólo debemossaberlo que queremos, también cómo obtenerlo.
    En el proceso de bases de datos comerciales el álgebra relacional se utiliza de manera poco frecuente. Aunque unos cuantos productos exitosos DBMS sí tienen opciones del álgebra relacional, éstas son poco utilizadas en vista de su complejidad.
     El álgebra relacional toma dos o más tablas como entrada produce una nueva tabla como resultado de la serie de operaciones. Las operaciones fundamentales en el álgebra relacional son seleccionar, proyectar, producto cartesiano, renombrar, unión y diferencia de conjuntos. Además de las operaciones fundamentales existen otras operaciones como son: intersección de conjuntos, producto natural, división y asignación.
** Operaciones fundamentales **
    Las operaciones seleccionar, proyectar y renombrar, son denominadas operaciones unitarias ya que operan sobre una tabla. Las otras operaciones operan sobre pares de relaciones y, por tanto se llaman operaciones binarias.
* La operación seleccionar.
     Esta operación selecciona tuplas (filas) que satisfacen una instrucción(condición) dada de una tabla. Se representa por medio de paréntesis.
                     (nombre_tabla     WHERE condición);
    La oración de la instrucción después de la cláusula WHERE puede incluir condiciones de igualdad como =,=,<,>,>=,<=,además    que se puede hacer una oración más compleja usando los conectores y (^) y o (v).
* La operación Proyectar.
    Consiste en identificar las columnas (atributos en el modelo E-R) que nos interesa conocer. Se representa por medio de corchetes. Si este se omite indicara que se desea obtener todas las columnas de la tabla en cuestión.
                    (nombre_tabla WHERE condición) [Nombre_atributo];
* La operación Producto cartesiano.
    Consiste en  multiplicar todas las tuplas entre tablas, obteniendo como resultado una tabla que contiene todas las columnas de ambas tablas. Se especifica con la orden TIMES.
                           Nombre_tabla   TIMES Nombre_tabla;
* La operación Join.
   Consiste en obtener el producto (multiplicación) de todas las tuplas de una tabla con las de la otra, para posteriormente evaluar aquellas cuyo campo en común sea igual generando como resultado una nueva tabla que tiene como tuplas (renglones) que cumplen con la condición establecida. Se representa con la orden JOIN.
    La orden Join es colocada entre las dos tablas a multiplicar después de que la primera especifica la operación de selección y proyección.
                    (Tabla)[atributo] JOIN(Tabla)[Atributo];
* La operación Divide.
    Toma dos relaciones, una binaria y la otra unaria, construye una relación formada por todos los valores de un atributo de la relación binaria que concuerdan (en el otro atributo) con todos los valores de la relación unaria. Se representa con la orden DIVIDEBY.
                    NomTablaBin DIVIDEBY NomTablaUna
* La operación Diferencia.
    Construye una relación formada por todas las tuplas (filas) de la primera relación que no aparezcan en la segunda de las dos relaciones especificadas. Se representa con la orden MINUS.
                    Nom_tablaA   MINUSNomTablaB;
* La operación Unión.
    Construye una relación formada por todas las tuplas de la primera relación y todas las tuplas de la segunda relación. El requisito es que ambas relaciones sean del mismo tipo.
                    Nom_TablaA   UNION Nom_tablaB
* La operación intersección.
    Construye una nueva tabla compuesta por todas las tuplas que están en la primera y segunda tabla.
                        Nom_TablaA  INTERSEC Nom_tablaB              
 Ejemplos:
    Para ejemplificar las notaciones anteriores consideremos el ejemplo
ALUMNO -       cursa           - MATERIA, que tienen los siguientes atributos:
NControl       NControl         Clave
NombreA        Clave             NombreM       
Especialidad   Calif              Créditos
Dirección
Representando en tablas a los atributos quedarían de la siguiente forma:
Tabla alumno:
NControl
NombreA
Especialidad
Dirección
 
 
 
 
Tabla cursa:
NControl
Clave
Calif
 
 
 
Tabla materia:
Clave
NombreM
Créditos
 
 
 
 
1.- Obtener el nombre de todos los alumnos que están inscritos en la Institución.
      (Alumno) [NombreA];
2.- Obtener el nombre de los alumnos que cursan la materia Base de datos 1 cuya clave es SCB9333
       (Alumno)   JOIN (Cursa where Clave='SCB9333') [NombreA];
3.- Obtener los nombres de los alumnos de la especialidad de Ing. Sistemas que cursan la materia Base de datos 2.
((Alumno)[especialidad,NombreA,NControl] 
JOIN (Cursa) where especialidad = 'ISC')[Clave,NombreA])
JOIN  (Materia where NombreM='BD2')[NombreA];
    En el álgebra relacional  no solo debemos saber lo que queremos  si no también como obtenerlo, al realizar las consultas debemos especificar el nombre de la tabla a utilizar en caso de que deseemos realizar una operación con un atributo que las  otras tablas no tienen debemos "arrastrar" dicho atributo para poder utilizarlo, como lo es en el caso anterior, en donde requerimos el nombre del alumno que solamente lo tiene la tabla alumno, pro también deseamos que se cumpla la condición NombreM=BD2, como no podemos relacionar directamente a ambas tablas empleamos la tabla cursa de donde obtenemos la clave de las materias y mantenemos el nombre del alumno (NombreA) finalmente con la orden JOIN se combinan las tablas por el campo común que tienen que es clave así que obtenemos una tabla con todas las materias que cursan los alumnos de ISC, de donde seleccionamos solo aquella que se llame BD2 con la orden Join obtenemos esta nueva tabla de donde por último proyectamos el atributo NombreA que hemos venido "arrastrando".
Ejercicios propuestos:
Considere el modelo E-R del caso Médico - atiende - Paciente.
Realizar:
    * La conversión a tablas del modelo E-R.
    * Las siguientes consultas en álgebra relacional.
1.- Obtener el nombre de Todos los médicos.
2.- Obtener el nombre de todos los pacientes > de 18 años.
3.- Obtener todos los datos de todos los pacientes.
4.- Obtener losnombres de todos los pacientes que consultan con el médico con cédula profesional ABC001.
5.- Obtener los nombres de los médicos que atienden al paciente John Smith.
6.- Suponiendo que el hospital de la Ciudad de la Paz tiene una tabla de pacientes similar a la del hospital de San José, obtener el nombre y la afiliación de estos pacientes.
7.- Obtener las combinaciones de pacientes y médicos exceptola de aquellosmédicos cuya especialidad sea Oftalmología.
    Recuerde que tenemos que indicar las tablas a utilizar entre paréntesis y los atributos a proyectar entre corchetes, después podemos utilizar las ordenes Times, Join, Divide, Minus, Union, Intersec, según sea el caso a resolver; si requiere manipular atributos que no tengan las otras tablas "arrástrelos" proyectando siempre entre cada operación dicho atributo. De cada operación o combinación que realice entre las tablas se genera una tabla nueva que cumple con las condiciones que establece.          Resultados
 
  Hoy habia 38 visitantes (44 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis