Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tabla cursa:
NControl Clave Calif
Tabla materia:
Clave NombreM Crditos
((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
tambin como obtenerlo, al realizar las consultas debemos especificar el
nombre de la tabla a utilizar en caso de que deseemos realizar una
operacin 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 tambin deseamos que se cumpla la condicin
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 comn 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 Mdico - atiende - Paciente.
Realizar:
* La conversin a tablas del modelo E-R.
* Las siguientes consultas en lgebra relacional.
1.- Obtener el nombre de Todos los mdicos.
2.- Obtener el nombre de todos los pacientes > de 18 aos.
3.- Obtener todos los datos de todos los pacientes.
4.- Obtener los nombres de todos los pacientes que consultan con el
mdico con cdula profesional ABC001.
5.- Obtener los nombres de los mdicos que atienden al paciente John
Smith.
Solucin
La conversin a tablas del modelo Medico-atiende-Paciene resulta:
Tabla Mdico
Cdula NombreM Especialidad
Tabla Paciente
Afiliacin NombreP Sexo
Edad
Tabla Atiende
Cdula Afiliacin Fecha
Hora
3.- (Paciente);
4.- (Paciente)[NombreP] JOIN (Atiende where Cdula='ABC001')[NombreP];
5.- ((Mdico)[NombreM] JOIN (Atiende) JOIN (Paciente where
NombreP='John Smith' )) [NombreM];
6.- Consideremos 2 tablas de pacientes, Paciente1 y Paciente2, entonces:
((Paciente1) UNION (Paciente2))[NombreP,Afiliacin];
7.- ((Paciente) TIMES (Mdico where especialidad<> 'Oftalmologa'));