Sei sulla pagina 1di 39

Informe Final

Miller Fabián Rodríguez Páez


Diana Patricia Blanco
Diego Fernando Fonseca
Fabio Mauricio Gutiérrez

Mayo 2019

Universidad Nacional Abierta y a Distancia - UNAD


ECBTI
Bases de Datos Avanzadas
ii

Introducción
Objetivos iii
Tabla de Contenidos iv

Informe Final .................................................................................................................................. 5


Desarrollo Colaborativo 1 ........................................................................................................... 5
Desarrollo Colaborativo 2 ........................................................................................................... 5
Desarrollo Colaborativo 3 ......................................................................................................... 19
Link Drive ................................................................................................................................. 25
Conclusiones ................................................................................................................................. 26
Lista de referencias ....................................................................................................................... 27
Informe Final

Desarrollo Colaborativo 1

a. Realiza la etapa de análisis, teniendo en cuenta los siguientes


requerimientos:
i. Definición y descripción de tablas
Entidad o Justificación, Ejemplo de Ejemplares Extensión INTENCION
Tipo de explicación de (Instancias)
Entidad su existencia en
el Mundo del
Problema
Asignatura La entidad 80 Realizar el
asignatura, - FISICA almacenamiento
contendrá el - MATEMATICAS de las
número de - PROGRAMACION asignaturas
materias o - PROBABILIDAD ofrecidas en la
cursos - ESTADISTICA universidad,
correspondientes - INTRODUCCION A para su
a cada LA INGENIERIA posterior oferta
especialidad o - CALCULO I en cada
programa - CALCULO II programa de
ofrecido por la - BASES DE DATOS formación.
universidad.

Programa La entidad -INGENIERIA DE 80 El propósito de


programa SISTEMAS la tabla
contendrá los -ADMINISTRACION DE programa nos
respectivos EMPRESAS. permite
pregrados y -INGENIRIA organizar las
diplomados AMBIENTAL. diferentes áreas,
conformados en los programas
-CONTADODURIA
cada académicos, e
PÚBLICA.
especialidad de identificar su
la universidad. -PSICOLOGIA respectiva
-INGEIRIA MECANICA resolución y
acreditación.
Matricula La entidad - 804156556 50 El propósito de
matricula, - 785968956 la tabla
contiene la - 458975623 matricula,
información - 1010125653 permitirá, llevar
correspondiente - 1478956457 organización y
a la fecha, control de la
identificación - Cód. 002 matrícula
del estudiante, - Cód. 005 asignada, por
código asignado - Cód. 008 medio de la
de matrícula y al identificación
programa de del estudiante
estudios que
pertenece.

Estudiante La entidad -Juan Daniel Torres Fonseca 100 El propósito de


estudiante, -David Leonardo Pachón Bello la entidad
contendrá -Carlos Arturo Torres Parra Estudiante
información -María Fernanda Morales consiste en
correspondiente Ortega llevar el control
a datos de los alumnos
personales, que -BOGOTA matriculados en
permitan -CALI cualquier
identificarlo -MEDELLIN programa de
como alumno de -IBAGUE formación
la universidad y -PEREIRA ofrecido por la
ciudad de universidad.
residencia. -2352659
-2457889
-3568975
-3225689
80 El propósito de
En la entidad - MATEMATICAS la entidad oferta
Oferta oferta, mostrara - FISICA corresponde a la
las asignaturas - INGLES publicación de
disponibles del - PROBABILIDAD las asignaturas
periodo a poder ofertadas por la
inscribir el - 03/04/2019 universidad así
estudiante, así - 04/04/2019 mismo a los
mismo el - 05/04/2019 programas de
programa de formación que
formación al que - JOSE SUARES corresponden
corresponde - PEDOR CAMARGO
cada oferta. - LUIS RODRIGUEZ

- Aula 5002
- Aula 2003
- Aula 2006
- Aula 2008
La entidad 80 El propósito de
Docente docente, - JOSE SUAREZ la entidad
mostrara la - PEDRO CAMARGO docente
información - LUIS RODRIGUEZ corresponde a la
correspondiente - INGENIERIA DE inserción y
al tutor o SISTEMAS actualización de
profesor - INGENIERIA datos de los
asignado para MECANICA docentes,
llevar a cabo la - PSICOLOGIA pertenecientes a
formación de la la institución
asignatura. - 3105895689 que imparten
- 3201458789 diferentes
- 3114568986 asignaturas de
formación.
Calificación La entidad 60 La información
calificación, se - MATEMATICAS de la entidad
compone de la - FISICA calificación,
información, - INGLES podrá ser
correspondiente - PROBABILIDAD visualizada por
a las notas y el estudiante,
fecha del - 01121212 mostrando el
periodo actual y - 01215451 estado de sus
correspondiente - 01212454 materias a nivel
a su número de - 02145689 de calificación.
matrícula, y
asignaturas - 3.5
inscritas. - 3.6
- 3.8
- 4.5

- 12/02/2019
- 15/02/2019
- 16/03/2019
- 14/02/2019
La existencia de 40 La entidad
Ciudad la entidad - BOGOTA ciudad,
ciudad, permite - IBAGUE establecerá la
identificar la - YOPAL asignación de
ciudad de - LETICIA los programas
domicilio del de formación y
estudiante así - CUNDINAMARCA asignaturas
mismo de los - TOLIMA ofertadas en la
diferentes - CASANARE universidad.
programas, - AMAZONAS
ofertados por la
universidad en
todo país.
ii. Descripción de las columnas

Cardinalidad Restricciones adicionales


Identificador Tipo de Dato (Texto, Obligatoriedad
Nombre Entidad Atributos Nombre dominio Tamaño
Único (UID) Número, Fecha) (Si/No) Lista de
(1 o Muchos) Rango de Restriccion
Valores Valores de Control

idasignatura x ids_asignaturas N 3 SI 1

titulo_asignatura titulos_asignaturas T 50 SI M
Asignatura
credito_asignatura creditos_asignaturas T 3 SI 1

prerrequisito_asignatura prerrequisitos_asignaturas T 50 SI 1

idOferta x idsOfertas N 3 SI 1

años_ofertas Fecha de
año_oferta F SI 1 ingreso >

semestre_oferta semestres_ofertas N 1 SI 1
Oferta
programa_oferta programas_ofertas T 45 SI M

fechas_ofertas Fecha de
fecha_oferta F SI 1 ingreso>

aula_oferta aulas_ofertas T 45 SI 1

idPrograma x ids_programas N 3 SI 1

nombre_programa nombres_programas T 50 SI M
Programa
facultad_programa facultades_programas T 40 SI 1

resolucion_programa resoluciones_programas N 7 SI 1

ccDocente x cedulas_docentes N 20 SI 1

nombre_docente nombres_docentes T 25 SI M
Docente apellido_docente apellidos_docentes T 25 SI 1

profesion_docente profesiones_docentes T 50 SI 1

telefono_docente telefonos_docentes N 12 SI 1

idCalificacion x idsCalificaciones N 7 SI 1
Calificacion fecha_calificacion fechas_calificaciones F SI 1

nota_calificacion notas_calificaciones N 2 SI 1
idMatricula x ids_matriculas N 7 SI 1
Matricula fecha_matricula fechas_matriculas F SI 1

sucursal_matricula sucursales_matriculas T 45 SI 1

cc_Estudiante x cedulas_estudiantes N 20 SI 1

ciudad_estudiante ciudades_estudiantes N 3 SI 1

nombre_estudiante nombres_estudiantes T 25 SI 1
Estudiante apellido_estudiante apellidos_estudiantes T 25 SI 1

direccion_estudiante direcciones_estudiantes T 50 SI 1

telefono_estudiante telefonos_estudiantes T 12 SI 1

email_estudiante emails_estudiante T 60 SI 1

idCiudad x idsCiudades N 3 SI 1
Ciudad nombre_ciudad nombres_ciudades T 20 SI M

departamento_ciudad departamento_ciudad T 20 SI 1

iii. Definición de las relaciones requeridas y pertinentes en la matriz de relaciones

MATRIZ DE RELACIONES

ASIGNATURA CALIFICACION CIUDAD DOCENTE ESTUDIANTE MATRICULA OFERTA PROGRAMA

ASIGNATURA R9
CALIFICACION R7 R8
CIUDAD
DOCENTE
ESTUDIANTE R2
MATRICULA R3 R6 R10
OFERTA R1 R5
PROGRAMA R4
iv. Descripción de cada una de las relaciones teniendo en cuenta las opcionalidades, cardinalidades, grado, transferibilidad
y si ayuda o no resolver debilidades en las entidades participantes y las restricciones propias de cada relación.

Ayuda a
Relación es
Pregunta para determinar Rta. Pregunta para determinar Identificar
Entidad 1 Rol Entidad 2 Rta. Transferible Grado Observación/Restricciones/Atributos
Opcionalidad Opc. Cardinalidad entidades
Relación (Si/No)
Participantes

(Preguntar si está obligado) (Pregunta CUANTO ) Card.

La dos Las asignaturas y las ofertas son la


entidades base para las demás relaciones , la
Una oferta está obligada a participantes oferta es dependiente de las
Oferta Contiene… Asignaturas No Una oferta cuantas asignaturas tiene M Si 1aM
tener asignaturas se asignaturas pero las asignaturas no
R1
identifican necesariamente dependen de una
plenamente oferta

Una asignatura no esta Una asignatura puere estar asignada a


Asignatura Asignada.. Ofertas Si M Si 1aM
obligada a estar en una oferta varias ofertas

La dos
entidades
Tiene su Un estudiante esta obligado a Un estudiante en cuantas ciudades participantes
Estudiante Ciudad Si 1 Si 1a1
Ubicación.. diligenciar su ubicación puede estar ubicado se
R2 identifican
plenamente

Determina Una ciudad esta obligada a Una ciudad a cuantos estudianes les
Ciudad Estudiante No M Si 1aM
ubicación.. tener estudiantes relacionados determina la ubicación

La matrícula obligada a tener Una matircula solo tiene una


Matricula Es ubicada Ciudad No 1 Si 1a1
una ubicación ubicación
R3
La ciudad esta obligada a Una ciudad puede estar en varias
Ciudad Asignada.. Matricula No M Si 1aM
relacionarse con una matricula matriculas
Un programa es obligado a Un programa solo tiene una
Programa Es ubicado Ciudad Si 1 Si 1a1
tener una ubicación ubicación
R4
La ciudad esta obligada a Una ciudad puede estar en varias
Ciudad Asignada.. Programa No M Si 1aM
relacionarse con un Programa matriculas
Dirigido Una oferta esta obligada a
Oferta Docente No Una oferta tiene varios docentes 1 Si 1a1
por.. tener docente
R5
Asignado Un docente esta obligado a
Docente Oferta Si Un docente tiene varias ofertas M Si 1aM
a… estar asignado a una oferta
Realizada Una matrícula está obligada a Cuantos estudiantes tiene una
Matricula Estudiante No 1 Si 1a1
por… tener un estudiante asignado matricula
R6
Registro Un estudiante esta obligado a Cuantas matriculas tiene un
Estudiante Matricula No 1 Si 1a1
de… estar matriculado estudiante
La calificación debe tener una Cuantas matriculas tiene una
Calificación Contiene… Matricula No 1 Si 1a1
matricula calificación
R7
La matrícula debe tener una Cuantas calificaciones tiene una
Matricula Tiene… Calificación No 1 Si 1a1
calificación matricula
La oferta es opcional para la
Calificación Tiene… Oferta No Cuantas ofertas tiene una calificación 1 Si 1a1
calificación
R8 Es
Una oferta no está obligada a Cuantas ofertas son asignadas a nua
Oferta asignada Calificación Si M Si 1aM
tener una calificación calificación
a..
Depende Una asignatura debe tener un Cuantos programas tiene una
Asignatura Programa No M Si 1aM
de.. programa asignado asignatura
R9
Un programa debe tener
Programa Dirige Asignatura Si Cuantas asignaturas dirige M Si 1aM
asignaturas a dirige
Una matrícula debe tener un Una matrícula solo tiene un
Matricula Para Programa No 1 Si 1a1
programa asignado programa
R10
es Un programa puede no estar Un programa puede tener multiples
Programa Matricula Si M Si 1aM
asignado a relacionado con una matricula matriculas

b. La siguiente etapa consiste en realizar el diseño de la base de datos relacional, acorde a las características del caso de
estudio, para ello, se debe efectuar la entrega del Modelo Relacional, el cual se logra adelantando las siguientes tareas:

i. Llaves primarias (UID) de cada tabla.


ii. Transforme las Relaciones 1:1 o 1:M en Llaves Foráneas, implementando el concepto de la Integridad Referencial
iii. Aplicar técnicas de normalización
c. En la etapa final se efectúa el desarrollo de la base de datos relacional atendiendo
el caso de estudio propuesto, por tanto, se debe entregar:
i. Programación con el lenguaje SQL del Script DDL
colaborativo\DDL.sql
ii. Programación con el lenguaje SQL del script DML para poblar las tablas de la
base de datos (especialmente las tablas maestras o de referencia o tablas de códigos)
colaborativo\DML.sql
iii. Programación con el lenguaje SQL el Scripts DCL para otorgar los permisos
sobre los objetos de la base de datos a otros usuarios/Esquemas de la base de datos.
colaborativo\DBUNAD
iv. Diligencie cinco registros en la base de datos y con esta información realice cinco
consultas simples sobre las tablas de la base de datos que evidencien las características de
libros que existen en la librería y cuales han sido más pedidos.
Desarrollo Colaborativo 2

SENTENCIA INNER JOIN


SELECT e.cc_Estudiante,nombre_estudiante,apellido_estudiante,m.fecha_matricula
from estudiante as e inner join matricula as m on e.cc_Estudiante=m.cc_estudiante

INNER JOIN – LEFT JOIN


SELECT
e.cc_Estudiante,nombre_estudiante,apellido_estudiante,m.fecha_matricula,c.nota_cal
ificacion from estudiante as e inner join matricula as m left join calificacion as
c on c.matricula_calificacion=m.idMatricula on e.cc_Estudiante=m.cc_estudiante
LEFT JOIN
/* sentencia con left join*/
SELECT titulo_asignatura,pre_asignatura,o.aula_oferta from asignatura as a left
join oferta as o on a.idAsignatura=o.asig_no
RIGHT JOIN
/* sentencia con right join*/
SELECT e.cc_Estudiante,nombre_estudiante,apellido_estudiante,m.fecha_matricula
from estudiante as e right join matricula as m on e.cc_Estudiante=m.cc_estudiante

CROSS JOIN
/* sentencia con Cross join*/
SELECT * from programa as p cross join docente
FULL JOIN
/* sentencia con full join*/
SELECT * from estudiante as e full join matricula as m on
e.cc_Estudiante=m.cc_estudiante

FUNCION COUNT
SELECT COUNT(cc_Estudiante) AS can_total FROM estudiante
FUNCION SUM
SELECT SUM(c.nota_calificacion) as final, e.nombre_estudiante FROM estudiante AS e
inner join matricula AS m on e.cc_Estudiante=m.cc_estudiante inner join
calificacion as c on m.idMatricula=c.matricula_calificacion group by
(e.nombre_estudiante);

FUNCION AVG
SELECT
e.nombre_estudiante,e.apellido_estudiante,e.cc_Estudiante,AVG(c.matricula_califica
cion) as final FROM estudiante AS e inner join matricula AS m on
e.cc_Estudiante=m.cc_estudiante inner join calificacion as c on
m.idMatricula=c.matricula_calificacion where c.oferta_calificacion=1 group by
e.nombre_estudiante,e.apellido_estudiante,e.cc_Estudiante
FUNCION MIN
SELECT MIN(c.nota_calificacion) as final,
e.nombre_estudiante,e.apellido_estudiante FROM estudiante AS e inner join
matricula AS m on e.cc_Estudiante=m.cc_estudiante inner join calificacion as c on
m.idMatricula=c.matricula_calificacion group by
e.nombre_estudiante,e.apellido_estudiante
FUNCION MAX
SELECT MAX(c.nota_calificacion) as final, e.nombre_estudiante FROM estudiante AS e
inner join matricula AS m on e.cc_Estudiante=m.cc_estudiante inner join
calificacion as c on m.idMatricula=c.matricula_calificacion group by
(e.nombre_estudiante);
PROCEDIMIENTOS ALMACENADOS

/* Procedimiento Insertar Docente*/

create procedure Insertar_Docente


as
INSERT INTO docente (ccDocente, nombre_docente, apellido_docente,
profesion_docente, telefono_docente) VALUES
(1066954841,'FREDY ALEJANDRO', 'TORRES CAMARGO', 'INGENIERIA MECATRONICA',
2256987),
(101599356, 'DANIEL ARTURO', 'PEREZ BEJARANO', 'INGENIERIA INDUSTRIAL', 25369878);

/*********************************************************************************
*******************/

exec insertar_docente

select * from docente


/* Procedimiento Actualizar Oferta */

create procedure actualizar_oferta


@aulaoferta varchar(35)
as
update oferta set aula_oferta='SEDE BOGOTA' where aula_oferta=@aulaoferta

/*********************************************************************************
**********************/
exec actualizar_oferta'SEDE 5 AULA -602'

select * from oferta


/* Procedimiento Consultar un Estudiante */

create procedure Consulta_Estudiante


@estudiante int
as
select * from estudiante where cc_Estudiante=@estudiante;

/*********************************************************************************
***********************/

exec Consulta_Estudiante 50412563


/* Procedimiento Insertar Ciudad */

create procedure Insertar_Ciudad


@idciudad int,
@nombre varchar(12),
@departamento varchar(20)
as
INSERT INTO ciudad ( idCiudad , nombre_ciudad, departamento_ciudad )
VALUES(@idciudad,@nombre,@departamento);

/*********************************************************************************
****************************/
exec Insertar_Ciudad 7 ,'PASTO','NARIÑO'

SELECT * FROM ciudad


/****** INSERTAR TABLA ESTUDIANTE *****/

create procedure insertar_estudiante


@cedula int,
@codigo int,
@nombre varchar(30),
@apellido varchar(30),
@direccion varchar(30),
@telefono int,
@email varchar(25)

as
INSERT INTO estudiante (cc_Estudiante, ciudad_estudiante, nombre_estudiante,
apellido_estudiante, direccion_estudiante, telefono_estudiante, email_estudiante)
VALUES
(@cedula, @codigo, @nombre,@apellido, @direccion, @telefono, @email);

/*********************************************************************************
***************************************************************/

exec insertar_estudiante 10352689,3,'PEDRO ANTONIO','LOPEZ ANDRADE','CLL 34 Nº 63-


25',458965,'pedroa1895@hotmail.com'
TRIGGERS
create trigger estado_nota
on calificacion
for insert
as
declare @valor float;
select @valor=c.nota_calificacion from calificacion as c join inserted on
inserted.idCalificacion=c.idCalificacion where
inserted.idCalificacion=c.idCalificacion
if(@valor>=3.5)
update calificacion set estado_calificacion='APROBADO' where
nota_calificacion>=3.5
else
update calificacion set estado_calificacion='REPROBADO' where
nota_calificacion<=3

/*********************************************************************************
*********************************/

INSERT INTO calificacion (idCalificacion, oferta_calificacion,


matricula_calificacion, fecha_calificacion, nota_calificacion) VALUES
(17,1,4, '2019-02-04',4 );
/******ESTADO DE OFERTA***********/

create trigger estado_oferta


on oferta
for insert
as
declare @fecha date;
select @fecha=o.fecha_oferta from oferta as o join inserted on
inserted.id_oferta=o.id_oferta where inserted.fecha_oferta=o.fecha_oferta

if(@fecha>='2017.01.01' and @fecha<='2019.01.01')

update oferta set estado_oferta='VIGENTE' where


fecha_oferta>='2017.01.01' and fecha_oferta<='2019.01.01'
else

update oferta set estado_oferta='CERRADO' where


fecha_oferta<'2017.01.01'

/*********************************************************************************
************************************************/
INSERT INTO oferta ( id_oferta, asig_no, ano_oferta, semestre_oferta,
seccion_oferta, cc_docente, fecha_oferta, aula_oferta) VALUES
(8, 3, '2018-02-19', 4, 'BOGOTA', 83256879, '2018-05-11', 'SEDE XL AULA - 303A');
Desarrollo Colaborativo 3

Crear y gestionar estructuras de almacenamiento

Ingresa con cuenta de administrador y realizar los siguientes procesos:

a. Crear dos "tablespace" llamados NOMINA y ACADEMICO, que contendrán datos relativos
a las aplicaciones de nómina y datos académicos de los empleados de una empresa, según las
siguientes características:
ACADEMICOO NOMINA

Parámetros Tamaño inicial 1M 1M


almacenamiento Autoextensible SI SI
Extensión 200K 100K
Tamaño máximo 1400K 1500K

Initial 16K 16K

Next 16K 16K


Minextents 1 1
Maxextents 3 3
Luego de ingresar al sistema a través de la consola de de comandos de Oracle se procede a crear
las tablespace por separado con la finalidad de generar mayor fluidez al familiarizarse con los
códigos.

b. Crear y gestionar usuarios:


Buscar en la documentación en línea y en la base de datos el contenido de las vistas:
dba_profiles : es el encargado de mostrar todos los perfiles y los límites de cada uno.

dba_roles : da a conocer de forma enumerada los roles existentes en la base de datos.

dba_users : describe los usuarios pertenecientes a la base de datos.


dba_role_privs : da a conocer los roles otrogado a todos los usuarios de la base de datos.
dba_tab_privs: da a conocer todas las concesiones de objetos en la base de datos.

dba_sys_privs : describe los privilegios otorgados a los usuarios y roles.

Conectarse como usuario SYSTEM a la base de datos y crear un usuario llamado


“administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto
USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace"
USERS.
Teniendo en cuenta el requerimiento de la guía de actividades se crea el usuario administrador.
Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el
usuario “administrador”.
Se ejecuta una consulta en la búsqueda de roles concedidos al usuario administrador.

Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e intentar de nuevo la


conexión

Se le asigna al usuario administrador el privilegio de crear sesión para ingresar a la base de


datos.

Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga
como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota
de 0K en el "tablespace" USERS. ¿Es posible hacerlo?

Luego de realizar la conexión se trata de crear un usuario lo cual no es permitido debido a que
no se cuenta con los privilegios necesarios.
Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario
“administrador” y realizar el ejercicio anterior.

Se ingresa nuevamente con la cuenta “SYSTEM” y se le otorgan los privilegios de creación de


usuarios a administrador.

Se realiza nuevamente el procedimiento de creación del usuario siendo este satisfactorio al


contar con los privilegios necesarios.

Averiguar qué usuarios de la base de datos tienen asignado el privilegio “create user” de forma
directa, ¿qué vista debe ser consultada?

Para la verificación se revisa la vista dba_sys_privs la cual describe los privilegios otorgados a
los usuarios y roles se revisa su descripción y se genera consulta.
Link Drive

https://drive.google.com/drive/folders/1c-
M1lNLG_pVL8JfeOmNaqFqrXTvXwvdK?usp=sharing
Conclusiones

En el desarrollo del presente curso, Bases de Datos Avanzadas se colocan en

práctica los diversos conocimientos adquiridos a lo largo del proceso del curso, donde se

implementa en ambiente gestor de base de Datos Oracle creación de Tablespace,

Sentencias con DML y DDL respectivamente, permitiendo de esta forma familiarizarnos

con los entornos SQL, ya que dentro del ámbito profesional y en la vida práctica las bases

de datos se utilizan en la mayoría de implentaciones ya sean de poco o gigantesco

alcance.
Lista de referencias

Ramakrishnan, Raghu, and Johannes Gehrke. Sistemas de gestión de bases de datos


(3a.ed.), McGraw-Hill España, 2007. ProQuest Ebook Central, pag-16-24recuperado
Sosa Flores, M. & López Vázquez, M. (2007) Diseño de bases de datos relacionales.
Córdoba, AR: El Cid Editor. pág. 20 -42.

Jiménez, C. M. Y. (2014). Bases de datos relacionales y modelado de datos (uf1471).


Rodríguez, González, María Elena. Gestión de datos: bases de datos y sistemas gestores
de bases de datos, Editorial UOC, 2013. ProQuest Ebook Central, pág. 13-38

Triana Martinez, D. (2018). Introducción Bases de Datos transaccionales [Formato video]


Piñeiro, Gómez, José Manuel. Manual gestión de bases de datos: formación para el
empleo, Editorial CEP, S.L., 2011. ProQuest Ebook Central

Potrebbero piacerti anche