ejercicios álgebra relacional

11
TALLER – ALGEBRA RELACIONAL ----------- UNIDAD CENTRAL DEL VALLE DEL CAUCA FACULTAD DE INGENIERÍA

Upload: negriz

Post on 13-Jun-2015

21.375 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Ejercicios áLgebra Relacional

TALLER – ALGEBRA RELACIONAL

-----------

UNIDAD CENTRAL DEL VALLE DEL CAUCA

FACULTAD DE INGENIERÍA

PROGRAMA INGENIERÍA DE SISTEMAS

TULUÁ, ABRIL 28 DE 2009

TALLER – ALGEBRA RELACIONAL

Page 2: Ejercicios áLgebra Relacional

-------------

Presentado al ingeniero:

Edgar Sandoval

Ing. Sistemas

UNIDAD CENTRAL DEL VALLE DEL CAUCA

FACULTAD DE INGENIERÍA

PROGRAMA INGENIERÍA DE SISTEMAS

TULUÁ, ABRIL 28 DE 2009

Ejercicios Álgebra Relacional

Page 3: Ejercicios áLgebra Relacional

Un grupo de investigación de una universidad ha diseñado una base de datos (BD)

para la gestión de los proyectos de investigación en los que participa.

RELACIÓN PLAN

CÓDIGO_PLAN CHAR(20) Clave primaria

NOMBRE CHAR(100)

ENTIDAD_FINANCIADORA CHAR(20)

En esta tabla se almacenarán los distintos planes o programas a los que pueden

pertenecer los proyectos de investigación. Para cada plan se almacenará el código

del mismo, el nombre completo del plan, y la entidad que lo financia. Por ejemplo,

un plan podría ser el I+D+I, cuyo nombre completo es Plan Nacional de

Investigación Científica, Desarrollo e Innovación Tecnológica, cuya entidad

financiadora es el MCYT (Ministerio Ciencia y Tecnología).

RELACIÓN PROYECTO

CÓDIGO_PROYECTO CHAR(20) Clave primaria

CÓDIGO_PLAN CHAR(20) Clave ajena que referencia a PLAN

NOMBRE CHAR(50)

FECHA_INICIO DATE

FECHA_FIN DATE

PRESUPUESTO INTEGER

En esta tabla se almacenarán los proyectos en los que participan los distintos

investigadores. Cada proyecto de investigación estará asociado a un plan.

Tendremos el código del proyecto, el código del plan al que pertenece dicho

proyecto, el nombre completo del proyecto, la fecha de inicio del mismo y la de

finalización. Además se almacenará en esta tabla el presupuesto concedido a cada

proyecto.

RELACIÓN ASIGNADO_A

CÓDIGO_PROYECTO CHAR(20) Clave ajena que referencia a PROYECTO

DNI_INVESTIGADOR CHAR(9) Clave ajena que referencia a INVESTIGADOR

FECHA_INICIO DATE

FECHA_FIN DATE

Page 4: Ejercicios áLgebra Relacional

TIPO_PARTICIPACION CHAR(20)

En esta tabla se almacenará qué investigadores trabajan en qué proyectos. La clave

primaria estará formada por CÓDIGO_PROYECTO y DNI_INVESTIGADOR. Un

investigador una vez que abandona el proyecto no puede reincorporarse al mismo

proyecto posteriormente. También se indicará el periodo en el que un determinado

nvestigador trabaja en un proyecto de investigación por medio de los atributos

FECHA_INICIO y FECHA_FIN. El atributo TIPO_PARTICIPACION indicará el papel que

juega cada investigador en cada proyecto. Podrá tomar los siguientes valores:

investigador principal, investigador a tiempo completo, investigador a tiempo

parcial, becario FPI, etc.

RELACIÓN INVESTIGADOR

DNI_INVESTIGADOR CHAR(9) Clave primaria

NOMBRE CHAR(50)

CIUDAD CHAR(15)

TELÉFONO CHAR(12)

En esta tabla se almacenarán los investigadores que participan en los distintos

proyectos de investigación. Se almacenará el DNI, el nombre, la ciudad en la que

trabaja y su teléfono de contacto. A continuación, se muestra el grafo relacional de

este BD para la gestión de proyectos de investigación.

PLAN (Código_Plan, Nombre, Entidad_Financiadora)

PROYECTO (Código_Proyecto, Código_Plan, Nombre, Fecha_Inicio, Fecha_Fin, Presupuesto)

ASIGNADO_A (Código_Proyecto, DNI_Investigador, Fecha_Inicio, Fecha_Fin,

Tipo_Participación)

INVESTIGADOR (DNI_Investigador, Nombre, Ciudad, Teléfono)

Sobre esta BD se pide que se realicen las siguientes consultas en álgebra

relacional:

A continuación, se plantea una posible solución a las consultas que se plantean.

Naturalmente, pueden existir otras alternativas igualmente válidas, incluso en

algunos casos se muestran estas alternativas.

Tablas hechas en Power Designer 12:

Page 5: Ejercicios áLgebra Relacional

TIENE

ASIGNADO

ASIGNADOS

PLAN

cod_Plannombreentidad_financiera

<pi> Characters (20)Characters (100)Characters (20)

<M><M><M>

Identifier_1 <pi>

PROYECTO

cod_Proyectonombrefecha_iniciofecha_finpresupuesto

<pi> Characters (20)Characters (100)DateDateInteger

<M><M><M><M><M>

Identifier_1 <pi>

INVESTIGADOR

dni_investigadornombreciudadtelefono

<pi> Characters (9)Characters (100)Characters (15)Characters (12)

<M><M><M>

Identifier_1 <pi>

ASIGNADO_A

fecha_iniciofecha_fintipo_participacion

DateDateCharacters (20)

<M><M><M>

Q1: Nombre de los investigadores de Madrid y el nombre de los proyectos en los

que trabajan.

IInombre.INVESTIGADOR, nombre.PROYECTO(

σ(ciudad.INVESTIGADOR=“Madrid”)and(dni_nvestigador.ASIGNADO_A= dni_nvestigador.INVESTIGADOR)and(cod_proyecto.PROYECTO= cod_proyecto.ASIGNADO_A)

(INVESTIGADOR ×ASIGNADO_A ×PROYECTO)

Q2: Nombre del investigador responsable y fecha de inicio del proyecto llamado

“NEPTUNO”.

IInombre.INVESTIGADOR,fecha_inicio.PROYECTO,nombre.PROYECTO

(σ(nombre.PROYECTO=“Neptuno”)and(dni_nvestigador.ASIGNADO_A= dni_nvestigador.INVESTIGADOR)and(cod_proyecto.PROYECTO= cod_proyecto.ASIGNADO_A)

(INVESTIGADOR ×ASIGNADO_A ×PROYECTO).

Q3: Nombre de los proyectos en los que trabaja algún investigador de Soria.

II nombre.PROYECTO

(σ(ciudad.INVESTIGADOR=“Soria”)and(dni_nvestigador.ASIGNADO_A= dni_nvestigador.INVESTIGADOR)and(cod_proyecto.PROYECTO= cod_proyecto.ASIGNADO_A)

(INVESTIGADOR ×ASIGNADO_A ×PROYECTO).

Page 6: Ejercicios áLgebra Relacional

Q4: Nombre y teléfono de los investigadores principales que trabajen en proyectos

cuyo presupuesto sea inferior a 5000 EUR.

IInombre.INVESTIGADOR,telefono.INVESTIGADOR

(σ(presupuesto.PROYECTO<5000)and(dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)and (cod_proyecto.PROYECTO= cod_proyecto.ASIGNADO_A)

(Investigador × Asignado_A × Proyecto).

Q5: Nombre de los proyectos que hayan comenzado este año y que pertenezcan al

plan, cuyo código sea “PEUR”.

IInombre.PROYECTO

(σ(fechaInicio.PROYECTO = 2009) and (cod_plan.PLAN = “PEUR”) and

(cod_plan.PLAN = cod_plan.PROYECTO) (PROYECTO × PLAN).

Q6: Nombre de los investigadores principales de los proyectos cuya entidad financiadora sea la “CICYT”.

IInombre.INVESTIGADOR(

σ(entidad_financiera.PLAN=“CICYT”)and(dni_nvestigador.ASIGNADO_A=dni_investigador.INVESTIGADOR)and(cod_proyecto.PROYECTO=cod_proyecto.ASIGNADO_A)and(cod_plan.PROYECTO=cod_plan.PLAN)

(INVESTIGADOR × ASIGNADO_A × PROYECTO X PLAN).

Q7: Nombre de los planes a los que pertenecen los proyectos con un presupuesto superior a 10000 EUR pero que cuyo investigador principal no sea ni de Madrid ni de Barcelona.

IInombre.PLAN

(σ(presupuesto.PROYECTO > 10000) and (ciudad.INVESTIGADOR = ¬”Madrid”) and(ciudad.INVESTIGADOR=¬”Barcelona”)and(dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)and(cod_proyecto.PROYECTO= cod_proyecto.ASIGNADO_A)and(cod_plan.PROYECTO=cod_plan.PLAN)

(INVESTIGADOR ×ASIGNADO_A ×PROYECTO X PLAN)

Q8: Nombre de aquellos investigadores que trabajan en todos los proyectos de

investigación.

Q9: Obtener el nombre de los proyectos cuyo investigador principal es de La

Coruña y que tienen un presupuesto concedido superior a todos los proyectos

financiados por el plan "CICYT".

Page 7: Ejercicios áLgebra Relacional

Q10: Obtener el nombre de los investigadores que participan en proyectos que

tienen un presupuesto superior o igual al proyecto con nombre "FOLRE".

Q11: Obtener el nombre de los investigadores que nunca han participado en

proyectos que pertenezcan al plan "PEUR".

Q12: Obtener el nombre de los investigadores que nunca han sido investigadores

principales de ningún proyecto.

IInombre.INVESTIGADOR (σ(tipo_participacion.ASIGNADO_A = ¬ “Principal”) and(dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)

(INVESTIGADOR × ASIGNADO_A).

Q13: Obtener el nombre y el código de los proyectos con un presupuesto superior a100.000 €.

IInombre.PROYECTO,xod_proyecto.PROYECTO

(σ(presupuesto.PROYECTO > 100000) (Proyecto).

Q14: Obtener el nombre y el DNI de los investigadores que son de Barcelona y que están asignados (en el momento actual, por lo que la fecha de fin de asignación debe ser nula) al proyecto con nombre "BDI".

IInombre.INVESTIGADOR, dni_investigador.INVESTIGADOR

(σ(ciudad.INVESTIGADOR=“Barcelona”) and (fecha_fin.ASIGNADO_A = NULL) and(nombre.PROYECTO=“BDI”)and(cod_proyecto.PROYECTO=cod_proyecto.ASIGNADO_A)and(dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)

(INVESTIGADOR × ASIGNADO_A × PROYECTO).

Q15: Obtener el nombre y los códigos de proyectos que tienen un presupuesto inferior a 100.000 € y en los que no trabajen investigadores de Barcelona.

IInombre.PROYECTO,cod_proyecto.PROYECTO

(σ(presupuesto.PROYECTO < 100000) and (ciudad. INVESTIGADOR = ¬ “Barcelona”) and (cod_proyecto.PROYECTO = cod_proyecto.ASIGNADO_A)and (dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)

(INVESTIGADOR × ASIGNADO_A × PROYECTO).

Q16: Obtener el nombre de los investigadores que son de Tarragona y que están asignados a proyectos que tienen un presupuesto inferior a alguno de los proyectos del plan con nombre "PLAN 2002".

Page 8: Ejercicios áLgebra Relacional

IInombre.INVESTIGADOR

(σ(ciudad.INVESTIGADOR = “Tarragona”) and (presupuesto.PROYECTO < (presupuesto. PROYECTO = “PLAN 2002”) and (cod_proyecto.PROYECTO = cod_proyecto.ASIGNADO_A)and (dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR) and (cod_plan. PROYECTO = cod_plan.PLAN)

(INVESTIGADOR × ASIGNADO_A × PROYECTO X PLAN).

Q17: Obtener el nombre de todos los proyectos que no están dirigidos por investigadores de Valladolid y que además tienen un presupuesto inferior al proyecto que tiene por nombre "EURO PROYECTO".

IInombre.PROYECTO

(σ(ciudad.INVESTIGADOR = ¬ “Valladolid”) and (presupuesto.PROYECTO< (presupuesto.PROYECTO = “EURO PROYECTO”) and (cood_proyecto.PROYECTO=cod_proyecto.ASIGNADO_A)and (dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)

(INVESTIGADOR × ASIGNADO_A × PROYECTO).

Q18: Obtener el nombre y los DNIs de los investigadores que no participan o nunca han participado en un proyecto de investigación.

IInombre.INVESTIGADOR,dni_nvestigador.INVESTIGADOR

(σ(cod_proyecto.ASIGNADO_A=NULL)and (dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR)

(INVESTIGADOR × ASIGNADO_A).

Q19: Obtener el nombre de los investigadores que viven en Cuenca y que no sean investigadores principales de proyectos en los cuales participen investigadores de Barcelona.

Q20: Obtener el nombre de los investigadores que únicamente hayan sido investigadores principales de proyectos del plan "SOCRATES".

IInombre.INVESTIGADOR

(σ(nombre.PLAN=“SOCRATES”)and(tipo_participacion.ASIGNADO_A= “Principal”) and(dni_nvestigador.ASIGNADO_A=dni_nvestigador.INVESTIGADOR) and (cod_plan.PROYECTO =cod_plan.PLAN)

(INVESTIGADOR × ASIGNADO_A × PROYECTO X PLAN).