10
EJERCICIOS DE SQL IVÁN ANDRÉS SUAREZ UNIDAD CENTRAL DEL VALLE DEL CAUCA FACULTAD DE INGENIERÍA PROGRAMA INGENIERÍA DE SISTEMAS TULUÁ, ABRIL 27 DE 2009

EJERCICIOS DE SQLl

Embed Size (px)

Citation preview

Page 1: EJERCICIOS DE SQLl

EJERCICIOS DE SQL

IVÁN ANDRÉS SUAREZ

UNIDAD CENTRAL DEL VALLE DEL CAUCA

FACULTAD DE INGENIERÍA

PROGRAMA INGENIERÍA DE SISTEMAS

TULUÁ, ABRIL 27 DE 2009

Page 2: EJERCICIOS DE SQLl

EJERCICIOS DE SQL

IVÁN ANDRÉS SUAREZ

Presentado al ingeniero:

Edgar Sandoval

Ing. Sistemas

UNIDAD CENTRAL DEL VALLE DEL CAUCA

FACULTAD DE INGENIERÍA

PROGRAMA INGENIERÍA DE SISTEMAS

TULUÁ, ABRIL 27 DE 2009

Page 3: EJERCICIOS DE SQLl

EJERCICIOS DE SQL

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.

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).

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.

Page 4: EJERCICIOS DE SQLl

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

investigador 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.

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.

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.

Page 5: EJERCICIOS DE SQLl

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

que trabajan.

ALGEBRA RELACIONAL:

Π Nombre. Investigador, NomProyecto. Proyecto (σ (Ciudad. Investigador =

“Madrid”) and (DNIInvestigador. Asignado_A = DNIInvestigador. Investigador) and

(CodProyecto. Proyecto = CodProyecto. Asignado_A) (Investigador X Asignado_A X

Proyecto).

SQL:

SELECT investigador.nombre, proyecto.nomproyecto

FROM Investigador , Asignado_A , Proyecto

WHERE Investigador.Ciudad = „Madrid‟ AND Asignado_A.DNIInvestigador =

Investigador.DNIInvestigador AND Proyecto.CodProyecto = Asignado_A

.CodProyecto;

Page 6: EJERCICIOS DE SQLl

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

“NEPTUNO”.

ALGEBRA RELACIONAL:

Π Nombre. Investigador, FechaInicio. Proyecto, NomProyecto. Proyecto (σ (NomProyecto. Proyecto = “Neptuno”) and (DNIInvestigador. Asignado_A =

DNIInvestigador. Investigador) and (CodProyecto. Proyecto = CodProyecto.

Asignado_A) (Investigador X Asignado_A X Proyecto).

SQL:

SELECT investigador.nombre, proyecto.fechainicio, proyecto.nombreproyecto

FROM Investigador , Asignado_A , Proyecto

WHERE Proyecto .NomProyecto.= „Neptuno‟ AND Asignado_A .DNIInvestigador =

Investigador .DNIInvestigador AND Proyecto.CodProyecto = Asignado_A.

CodProyecto;

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

ALGEBRA RELACIONAL:

Π NomProyecto. Proyecto (σ (Ciudad. Investigador = “Soria”) and (DNIInvestigador.

Asignado_A = DNIInvestigador. Investigador) and (CodProyecto. Proyecto =

CodProyecto. Asignado_A) (Investigador X Asignado_A X Proyecto).

SQL:

SELECT proyecto.nomproyecto

FROM Investigador , Asignado_A , Proyecto

WHERE Investigador .Ciudad = „Soria‟ AND Asignado_A.DNIInvestigador =

Investigador. DNIInvestigador AND Proyecto.CodProyecto = Asignado_A

.CodProyecto;

Page 7: EJERCICIOS DE SQLl

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

cuyo presupuesto sea inferior a 5000 EUR.

ALGEBRA RELACIONAL:

Π NomInvestigador. Investigador, Telefono. Investigador (σ (Presupuesto. Proyecto <

5000) and (DNIInvestigador. Asignado_A = DNIInvestigador. Investigador) and

(CodProyecto. Proyecto = CodProyecto. Asignado_A) (Investigador X Asignado_A X

Proyecto).

SQL:

SELECT Investigador. NomInvestigador, Investigador .Telefono

FROM Investigador , Asignado_A , Proyecto

WHERE Proyecto .Presupuesto < 5000 AND Asignado_A.DNIInvestigador =

Investigador. DNIInvestigador AND Proyecto.CodProyecto = Asignado_A

.CodProyecto;

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

plan, cuyo código sea “PEUR”.

ALGEBRA RELACIONAL:

Π NomProyecto. Proyecto (σ (FechaInicio. Proyecto = 2009) and (CodPlan. Plan =

“PEUR”) and (CodPlan. Plan = CodPlan. Proyecto) (Proyecto X Plan).

SQL:

SELECT proyecto.nomproyecto

FROM Proyecto, Plan

WHERE Proyecto.FechaInicio = 2009 AND Plan .CodPlan = “PEUR” AND

Plan.CodPlan = Proyecto.CodPlan;

Page 8: EJERCICIOS DE SQLl

Q6: Nombre de los investigadores principales de los proyectos cuya entidad

financiadora sea la “CICYT”.

ALGEBRA RELACIONAL:

Π NomInvestigador. Investigador (σ (EntFinanciera. Plan = “CICYT”) and

(DNIInvestigador. Asignado_A = DNIInvestigador. Investigador) and (CodProyecto.

Proyecto = CodProyecto. Asignado_A) and (CodPlan. Proyecto = CodPlan. Plan)

(Investigador X Asignado_A X Proyecto X Plan).

SQL:

SELECT Investigador.NomInvestigador

FROM Investigador, Asignado_A, Proyecto, Plan

WHERE Plan.EntFinanciera = „CICYT‟ AND Asignado_A.DNIInvestigador =

Investigador. DNIInvestigador AND Proyecto.CodProyecto = Asignado_A

.CodProyecto AND Proyecto.CodPlan = Plan.CodPlan;

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.

ALGEBRA RELACIONAL:

Π NomPlan. Plan (σ (Presupuesto. Proyecto > 10000) and (Ciudad. Investigador = <>

”Madrid”) and (Ciudad. Investigador = <> ”Barcelona”) and (DNIInvestigador.

Asignado_A = DNIInvestigador. Investigador) and (CodProyecto. Proyecto =

CodProyecto. Asignado_A) and (CodPlan. Proyecto = CodPlan. Plan) (Investigador X

Asignado_A X Proyecto X Plan).

SQL:

SELECT plan.nomplan

FROM Investigador, Asignado_A, Proyecto, Plan

WHERE Proyecto.Presupuesto > 10000 AND Investigador.Ciudad = <> ‟Madrid‟

AND Investigador.Ciudad = <> ‟Barcelona‟ AND Asignado_A.DNIInvestigador =

Investigador. DNIInvestigador AND Proyecto.CodProyecto = Asignado_A

.CodProyecto AND Proyecto.CodPlan = Plan.CodPlan;

Page 9: EJERCICIOS DE SQLl

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

investigación.

ALGEBRA RELACIONAL:

Π NomInvestigador. Investigador, NomProyecto. Proyecto (DNIInvestigador.

Asignado_A = DNIInvestigador. Investigador) and (CodProyecto. Proyecto =

CodProyecto. Asignado_A) (Investigador X Asignado_A X Proyecto).

SQL:

SELECT Investigador.NomInvestigador, Proyecto.NomProyecto

FROM Investigador, Asignado_A, Proyecto

WHERE Asignado_A.DNIInvestigador = Investigador. DNIInvestigador AND

Proyecto.CodProyecto = Asignado_A .CodProyecto;

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".

Π NomProyecto. Proyecto (σ (Ciudad. Investigador = “Coruña”) and (Presupuesto.

Proyecto > (Presupuesto. Proyecto = “CICYT”)) and (DNIInvestigador. Asignado_A =

DNIInvestigador. Investigador) and (CodProyecto. Proyecto = CodProyecto.

Asignado_A) and (CodPlan. Proyecto = CodPlan. Plan) (Investigador X Asignado_A X

Proyecto X Plan).

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

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

Π NomInvestigador. Investigador (σ (Presupuesto. Proyecto > = (Presupuesto.

Proyecto = “FOLRE”)) and (DNIInvestigador. Asignado_A = DNIInvestigador.

Investigador) and (CodProyecto. Proyecto = CodProyecto. Asignado_A) and (CodPlan.

Proyecto = CodPlan. Plan) (Investigador X Asignado_A X Proyecto X Plan).

Page 10: EJERCICIOS DE SQLl