Texto completo

(1)

Programación de Bases de Datos © Carlos de Mesa Mansilla

Programación de Bases de

Datos

2º Curso de I.T. de Gestión

Ciencias de la Computación e I.A.

(2)

Diseño, creación y desarrollo de BD y aplicaciones de

gestión.

Estudiaremos técnicas y herramientas para desarrollo

de pequeños S.I.

Partimos de diseño orientado a los datos.

»

Utilizamos E/R para el esquema de BD.

»

Obtenemos un esquema funcional.

»

Integramos ambos esquemas.

Implantamos el esquema de BD en el Modelo

Relacional.

Programamos las aplicaciones del esquema funcional.

»

Lenguajes de programación de BD.

»

Programación de Integridad y optimización de

programas.

Herramientas avanzadas de ayuda al desarrollo.

(3)

MÓDULO I. Diseño de bases de datos.

MÓDULO II. Programación de BD en el

modelo relacional.

(4)

1. Introducción al diseño de BD.

2. Metodología para el diseño conceptual.

3. Análisis funcional usando el modelo de flujo

de datos.

4. Análisis conjunto de datos y funciones.

(5)

5. Implantación de BD en el modelo relacional.

6. Lenguajes para el desarrollo de aplicaciones.

7. Programación de la integridad.

8. Optimización.

(6)

Batini, Ceri, Navathe.

Diseño conceptual de bases

de datos.

Mc-Graw Hill.

James R. Groff, Paul N. Weinberg.

Aplique SQL.

Mc-Graw Hill.

ORACLE DATABASE 10g. Guía de aprendizaje.

Mc-Graw-Hill.

Oracle9i2 Server. Application Developer’s Guide

Oracle 8i : Programación avanzada con PL/SQL

Oracle9i2 PL/SQL. User’s guide and reference

Libros de la serie Oracle Press de Mcgraw-hill

(7)

Manejo de lenguajes de datos procedurales.

PL/SQL

Programación de integridad. Procedimientos

almacenados y disparadores.

Otras herramientas de programación:

»

SQL inmerso ó embebido en C, Java,

PHP,…

»

API

»

Herramientas RAD o de desarrollo

rápido.

»

Herramientas Case

(8)

Evaluación:

Evaluación:

Asistencia a clase.

Ejercicio teórico.

Desarrollo de proyecto de

prácticas.

Tutoría:

Tutoría:

Despacho en dpto. CCIA.

Despacho nº1. Jueves 18:30 a

19:30.

Avisar previamente.

(9)

Introducción.

»

Metodología a seguir.

Sistemas de Información.

»

Etapas

del desarrollo de un S.I.

Enfoque de diseño orientado a los

datos

y a las

funciones.

»

Fases

del diseño de Bases de Datos.

»

Enfoque orientado a las

funciones.

»

Herramientas: El modelo

E/R

y el modelo

de

flujo de datos.

(10)

• Un Sistema de Información es un conjunto de procesos informatizados

que resuelven una serie de necesidades funcionales de una empresa.

• Elementos:

» Un esquema de BD. Los datos de la empresa.

» Aplicaciones que lo usan. Requisitos funcionales.

• Enfoques de un S.I.: Estructurado y Orientado a objeto.

» Usaremos variante enfoque estructurado.

• Metodología: Procedimientos, técnicas y ayudas de documentación para desarrollo de S.I.

» Análisis y diseño:

» Diseño conceptual BD con E/R.

» Análisis funcional con modelo flujo datos.

» Refinamiento conjunto.

» Implantación:

» BD en modelo Relacional.

» Técnicas y lenguajes para implantación aplicaciones.

(11)

Componentes:

»

Configuración

hardware.

» Topología

de comunicación.

» Base de datos.

» SGBD.

» Aplicaciones

de Gestión.

Algunos vienen impuestos:

» Sólo

incidiremos en el desarrollo de la

BD

y de

las a

plicaciones

que la gestionan.

Herramientas

para el desarrollo:

» Lenguajes

de programación.

»

Herramientas

CASE.

(12)

Etapas del desarrollo de un S.I.

Ciclo de vida del softwareCiclo de vida del software

»

Un marco de referencia que contiene los procesos, las actividades

y las tareas involucradas en el desarrollo, la explotación y el mantenimiento

de un producto software, abarcando la vida del sistema desde la definición hasta la finalización de su uso (ISO 12207).

»

El ciclo de vida de un proyecto especifica el enfoque general del desarrollo, indicando los procesos, actividades y tareas que se van a realizar y en qué orden, y los productos que se van a generar, los que se van a

(13)

Etapas del desarrollo de un S.I.

»

Ciclo de Vida Incremental. Repetición de varios ciclos de vida en cascada. Al

Ciclos de Vida Evolutivos.Ciclos de Vida Evolutivos.

»

Ciclo de Vida Iterativo. Repetición de

(14)

Etapas del desarrollo de un S.I.

Ciclo de Vida Iterativo con Prototipos.

Prototipo: Desarrollo no definitivo.

»

Los prototipos se pueden usar como una herramienta para obtener y validar los requisitos de clientes y usuarios en cualquier ciclo de vida.

»

Lo habitual es usar prototipos de interfaz de usuario, que pueden reutilizarse

(15)

• Fases del diseño de bases de datos

»

Diseño

conceptual

:

– Requerimientos de datos->

Esquema conceptual

– Descripción abstracta del contenido de la BD

– Modelo conceptual, lenguaje para la descripción del

esquema conceptual

»

Diseño

lógico

:

– Esquema conceptual->

Esquema lógico

– Descripción estructura usando un modelo lógico:

Relacional, Redes, Jerárquico o distribuido.

»

Diseño

físico

:

– Esquema lógico->

Esquema físico

– Relativo a un SGBD concreto.

– Estructuras almacenamiento y métodos de acceso a los

datos.

(16)

• Enfoque orientado a las funciones

» Análisis funcional.

– Requerimientos de las aplicaciones-> Esquema funcional

– Diferentes lenguajes y modelos de representación esquema funcional.

– BD depósitos de información para intercambio entre actividades.

» Diseño funcional.

– Esquema funcional-> Especificaciones de aplicación

» Implantación.

– Especificaciones de aplicación-> Especificación detallada del

programa.

• Enfoque orientado a los datos y a las funciones.

» Diferentes perspectivas del problema. » Metodología conjunta:

– Desarrollo esquemas conceptual y funcional paralelamente. – Influidas mutuamente.

– Comprueba no existan conflictos entre enfoques.

(17)

• E/R modelo para identificar las estructuras de datos relevantes problema.

» Facilita representación, comprensión y

transmisión características esquema conceptual.

» Lenguaje gráfico. Diagramas E/R.

• Modelo flujo de datos orientado a procesamiento de datos.

» Lenguaje gráfico.

• Herramientas CASE

» Basadas en diferentes metodologías.

» Soporte para todas las etapas desarrollo.

» Generación automática diseño físico y aplicaciones.

(18)

1. Introducción.

2.

Notación

para el modelo E/R.

3.

Primitivas

del diseño conceptual.

4.

Estrategias

para el diseño de esquemas.

5.

Criterios de

elección

entre conceptos.

6.

Entradas

,

salidas

y

actividades

del diseño

conceptual.

(19)

• Entidades:

Una entidad es un objeto en el mundo real que es distinguible de todos los demás y que posee un conjunto de propiedades (atributos). Va a haber un subconjunto de propiedades cuyos valores van a determinar de una manera unívoca a una entidad.

• Atributos:

» Atributos simples y compuestos. Los atributos simples son aquellos que no tienen capacidad de ser descompuestos, mientras que los atributos compuestos son aquellos que permiten descomponerse en otros atributos conformando lo que se denominan jerarquías. Un ejemplo de atributo simple podría ser la edad, mientras que uno compuesto podría ser la dirección de un cliente

Notación para el modelo E/R.

Hay tres conceptos básicos:

• Entidades. • Atributos.

• Conjuntos de relaciones.

» Atributos nulos. Un atributo es nulo cuando para una determinada entidad ese atributo no tiene valor.

(20)

•Relaciones:

Relación.- Una relación es una asociación entre diferentes entidades.

» (participación, cardinalidad)

- La Participación de un conjunto de entidades E en un conjunto de relaciones R es total si cada entidad en E participa en al menos una relación de R. Si sólo algunas entidades en E

participan en relaciones en R, la participación se denomina parcial.

Participación parcial-> 0 Participación total-> 1 - Cardinalidad:

Cardinalidad 1-> Cada entidad participa una sola vez en la interrelación.

Cardinalidad n-> Cada entidad puede participar varias veces en la interrelación.

(21)

• Jerarquía de generalización

» ({t,p},{e,o})

» Clasificación total (t) o parcial (p)

» Clasificación exclusiva (e) o superpuesta (o)

Una entidad E es una generalización de un grupo de entidades E1, E2, ... En, si cada ocurrencia de cada una de esas entidades es también una ocurrencia de E.

Todas las propiedades de la entidad genérica E son heredadas por las subentidades.

Cada jerarquía es total o parcial, y exclusiva o superpuesta. Una jerarquía es total si cada

ocurrencia de la entidad genérica corresponde al menos con una ocurrencia de alguna subentidad. Es parcial si existe alguna ocurrencia de la entidad genérica que no corresponde con ninguna

ocurrencia de ninguna subentidad. Una jerarquía es exclusiva si cada ocurrencia de la entidad genérica corresponde, como mucho, con una ocurrencia de una sola de las subentidades. Es

superpuesta si existe alguna ocurrencia de la entidad genérica que corresponde a ocurrencias de dos o más subentidades diferentes.

Un subconjunto es un caso particular de generalización con una sola entidad como subentidad. Un subconjunto siempre es una jerarquía parcial y exclusiva.

(22)

• Características de una transformación:

» Esquema inicial + transformación = esquema resultante

» Correspondencia entre los nombres de conceptos del esquema inicial y los del

resultante.

» Conceptos esquema resultante heredan conexiones presentes en esquema inicial.

• Primitiva: transformación elemental.

» Primitivas descendentes

– Concepto E.I.->conjunto conceptos E.F.

– Nombres se refinan pasando a conjunto de nuevos nombres. – Conexiones lógicas heredadas un solo concepto E.R.

» Primitivas ascendentes

– Introducen nuevos conceptos o propiedades en el E.R.

– Adaptar esquema con nuevos rasgos dominio no percibidos inicialmente.

(23)
(24)
(25)
(26)

Primitivas ascendentes

• Tras primitiva

B3

(27)

• Propiedades de las Primitivas

» Las primitivas descendentes no son mínimas: T5 se puede expresar usando T1 - {T1,T2,T3,T4,T6,T7}, este conjunto si es mínimo.

» Las primitivas descendentes no son completas: sólo pueden generar

gráficos que se puedan reducir a conexiones serie o paralelo de

interrelaciones.

» Las primitivas ascendentes son mínimas y completas.

» Todos los esquemas pueden generarse con primitivas ascendentes.

» Esquemas producibles descendentemente los que se pueden generar con primitivas descendentes.

(28)

Se aplican las primitivas

descendentes en

sucesivos

pasos de

refinamiento.

Todos

los

conceptos

están presentes en

todos

los

planos

de

refinamiento.

El proceso

termina

cuando están

representados

todos

los

requerimientos.

Estrategias para el diseño de

(29)

• Se aplican las primitivas

ascendentes para pasar de conceptos elementales a otros más complejos.

• Ventaja: sencillez inicial, permite introducir versiones preliminares del problema.

• Inconveniente: hay que

reestructurar el esquema.

» Para esquemas complejos

reestructuración difícil.

• Descendente vs Ascendente

» Descendente si se percibe

bien el bosque pero no el árbol.

» Ascendente si se percibe

bien el árbol pero no el

Estrategias para el diseño de esquemas.

(30)

Caso particular ascendente.

» 1

Se

fijan

los conceptos más evidentes o importantes.

» 2

Se modelan los conceptos más próximos a estos.

» 3

Se modelan sucesivamente los más lejanos.

Ventaja

:

Orden

en la aplicación de refinamientos.

Inconveniente

: Grado de abstracción similar para cada

refinamiento.

(31)

• Combina descendente con

ascendente para

particionar el

problema.

»

1

Se

dividen

los

requerimientos

en dos

subconjuntos.

»

2

Se produce un

esquema

armazón

que aglutina los

conceptos más

importantes

y las

conexiones

entre las

particiones.

»

3

Se

modela

cada

partición.

»

4

Se

integran

utilizando el

armazón.

Ventaja

:

El esquema armazón

permite una

integración ascendente

más

fácil

de las

particiones.

• Aplica el enfoque de

“divide y

(32)

Cada estrategia

puede conducir a un

esquema diferente

»

Dada una

estrategia

y unos

requerimientos

pueden

obtenerse

resultados diferentes.

• Estrategia

descendente

para

entornos

de desarrollo

altamente

estructurados

. Debe usarse

siempre que sea

posible.

• Estrategia

ascendente

para

organizaciones informales

en

las que integrar a posteriori los diferentes aproximaciones

parciales.

• Generalmente se adopta una

mezcla de estrategias

»

Se

parte

de una estrategia

descendente

y se

utiliza

estrategia

ascendente

para incorporar

conceptos

ignorados

en

fases iniciales.

• En teoría no todos los esquemas pueden ser generados

descendentemente; en la práctica es aplicable a la

mayoría

de los

diseños.

Estrategias para el diseño de esquemas.

(33)

Entidad o atributo simple

»

Entidad

: si el objeto va a llevar

asociadas

características.

»

Atributo

: si

no

le es

aplicable

ninguna

propiedad.

Generalización o atributo.

»

Generalización

: se espera

utilizar

alguna

característica

entidad

de

bajo

nivel.

Atributo compuesto o conjunto atributos simples

»

Compuesto

: resulta natural

asignarle

un

nombre.

»

Conjunto

simples

: representan

(34)

• Esquema de

caja negra

. La Metodología utiliza las

entradas

de requerimientos

para obtener los

resultados perseguidos.

Entradas-

> requerimientos

(especificaciones de la aplicación

de la base de datos).

»

Requerimientos

de

datos

: estructura de datos.

»

Requerimientos

de

funciones

: funciones y

actividades

del sistema y flujos de información.

»

Requerimientos

de

aplicación

: operaciones

sobre los

datos.

Lenguajes

de

descripción

de

requerimientos

:

»

Lenguaje natural.

»

Formularios

. Para recabar información de

usuarios

»

Formatos de

registros

y de

pantallas

. Para

desarrollo

sobre sistemas antígüos.

»

Esquemas

de

datos

. Describen las estructuras

de

datos. Para

cambiar

de

SGBD.

(35)

• Salidas:

» Esquema conceptual de la base de datos.

» Esquema de funciones.

» Especificaciones de alto nivel de la aplicación.

» Documentación de diseño

• Actividades:

» Análisis de requerimientos. Producir descripciones claras a partir de los requerimientos obtenidos.

» Conceptualización inicial. Selección de los conceptos a

representar inicialmente (estrategias descendentes, centrífugas y

mixtas)-> esquema preliminar incompleto.

» Conceptualización incremental. Aplicación de las estrategias

para

refinar el esquema.

» Integración. (Estrategias mixtas y ascendentes) fusión de esquemas. Se descubren conflictos y propiedades interesquemáticas.

» Reestructuración. Evaluar la bondad del esquema conceptual y

(36)

Introducción.

El modelo de flujo de datos.

• Primitivas

del modelo de flujo de datos.

• Estrategias:

»

Descendentes.

»

Ascendentes.

»

Centrífuga.

»

Mixta.

• Metodología

para el análisis funcional.

• Cualidades

de un esquema funcional.

• Documentación

y

mantenimiento

de un Esq.

Funcional.

(37)

Análisis funcional.

Modelado

de

actividades

de una empresa.

Cómo cada función

utiliza

la información y

como se

intercambia

la

información

entre

las funciones.

Primer paso

para el diseño de

programas

de

aplicación

sobre la BD.

Es útil para diseño conceptual. Permite

verificar

la

compleción.

Visión procedimental

de la base de datos.

(38)

• MFD elaborar esquema funcional de sistemas de procesamiento de datos.

• Conduce a la elaboración del

Diagrama de Flujo de Datos (DFD).

• Elementos:

» Proceso: actividad dentro de un sistema

– Generar, usar, manipular o destruir información.

» Flujo de datos: intercambio información entre procesos.

– Flechas indican dirección del flujo.

» Almacén de datos: depósito de información.

– Archivos, tablas consulta, formularios, papel, electrónicos.

– Flecha hacia proceso: el proceso utiliza los datos.

– Flecha hacia almacén: el proceso modifica el contenido almacén.

» Interfaz: usuario externo al sistema.

– Puede originar o recibir los flujos de

datos o de los almacenes de datos.

(39)

• HACER_RESERVAS: El

pasajero solicita

una

reserva

; si se

acepta se almacena la reserva y al pasajero se le entrega un

billete.

• ACEPTAR_REGISTROS: El pasajero con billete

solicita

cerrar vuelo

; si existen billetes libres se le da la tarjeta de

embarque; si no, se le asigna un vuelo posterior.

(40)
(41)

T1, T2 y T3 son las

más

utilizadas

Descomposición de un

proceso

en subprocesos

»

Debe existir

independencia

(42)

El DFD se construye a partir de

conceptos elementales

:

1

Se incluyen los

procesos

elementales.

2

Se incluyen las

interfaces

y se

conectan a

los

procesos.

3

Se

interconectan

los

procesos

y

se

introducen los

almacenes de

datos.

(43)

• Comienza con los interfases y determina progresivamente los procesos que participan en los flujos.

• Estrategia orientada hacia la entrada.

» Parte de los interfases que proporcionan información.

• Estrategia orientada hacia la salida

» Parte de los interfases que reciben información mostrada como salida del sistema.

(44)

1

Esquema

armazón

que aglutina los principales procesos.

2

Diseño

descendente

sobre esos procesos.

3

Se

integran

de acuerdo con el esquema

armazón.

• Conveniente si el sistema es complejo (

divide

y

vencerás

).

(45)

1

Identificar

interfaces.

2

Identificar

flujos

entrada/salida entre

interfaces y

sistema.

3

Diseñar un

esquema armazón.

4

Repetir:

»

Refinar

los

procesos

con estrategias diseño

vistas

hasta que:

requerimientos

se vean reflejados sin entrar en

rasgos

procedimentales.

5

Verificar las

cualidades

del esquema: independencia,

compleción, exactitud, legibilidad y minimalidad.

• Los

rasgos procedimentales

se introducen cuando

utilizamos:

iteraciones

,

bucles

y

ejecuciones condicionales.

(46)

46

Independencia funcional

: puede

realizar sus funciones

independientemente.

»

Separabilidad

: analizado de

forma independiente.

»

Facilidad integración

: el DFD

resultante se puede integrar en

esquema global.

»

Flexibilidad

: proceso se adapta

a los cambios

sin alterar

al resto

procesos.

Compleción

: representa

todos los detalles

de la aplicación

sin

entrar en

rasgos procedimentales.

Corrección

: usa correctamente elementos MFD para expresar los

requerimientos.

»

Es conveniente que las

conexiones

a través

de una

frontera se mantengan

tras un

(47)

Legibilidad

: entendible

.

»

Legibilidad

conceptual

y

gráfica.

Minimalidad

: cada aspecto de los requerimientos

debe aparecer

una sola vez

en DFD.

»

Cada

actividad-

> un

solo proceso.

»

almacenes de datos no

tienen

partes

en

común.

El DFD de una empresa real

puede no presentar

estas cualidades

:

»

Análisis funcional permite estudiar los

problemas funcionales

presentes

en una

empresa.

(48)

Deben documentarse de forma

descendente.

Esquema

armazón

incluirá pocos procesos

complejos y

casi todos

las

interfaces.

Los

conceptos

se expanden a

través

de varios

planos de refinamiento.

El

mantenimiento

se realiza teniendo en cuenta

la

documentación anterior.

(49)

Introducción.

Esquemas externos

para los diagramas

de flujo de datos.

Metodología

para el

análisis conjunto

de

datos y funcional.

Sugerencias

para refinamientos mutuos.

Esquemas de navegación

para

operaciones con bases de datos.

(50)

Diseño conceptual de BD y funcional

conjunto

DFD con

esquemas externos;

descripción

ER

de los

datos

que

usan

los

procesos

o presentes en los

almacenes de datos.

Metodología de

refinamientos mutuos

de datos y

funciones.

Partimos de los

esquemas externos

para especificar

operaciones de BD

, necesario para diseño lógico y

físico.

»

Obtenemos esquemas de

operación

y

esquemas de

navegación.

Esquema

D

<--> Esquema conceptual de

datos

Esquema

F

<--> Esquema

funcional

(51)

Esquema externo

vista particular

de la

BD

de

una

aplicación.

Diagrama

ER

que incluye sólo los

datos

que

conciernen a un

proceso

o

almacén

de datos.

Ventajas:

»

Ayuda a ver los

datos

que formarán parte

del esquema conceptual.

»

Ayuda a verificar la

compleción

del

esquema D.

»

Útiles para la identificación y especificación

de

las

operaciones de BD.

(52)
(53)

53

• Facilita verificar la compleción mutua en etapas intermedias.

• Metodología descendente:

1 Identificar interfaces.

2 Identificar flujos E/S entre interfaces y sistema.

3 Encontrar un primer esquema armazón para los datos

y para las funciones.

4 Repetir:

– Refinar el esquema D con esquema D previo, considerando esquema F anterior.

– Refinar el esquema F con esquema F previo, considerando esquema D anterior.

– (Opcional) Probar compleción mutua esquemas D y F.

hasta que: Todos los requerimientos estén

expresados.

5 Verificar las cualidades de los esquemas D y F. Modificarlos hasta que cumplan las cualidades.

• Compleción mutua:

» Cada concepto expresado en los flujos y almacenes de datos

está en el esquema D.

(54)

• Se pueden emplear

otras estrategias

(mixta, centrífuga).

• Variantes: Diseño

orientado

a los

datos

y diseño orientado a las

funciones.

• Ejemplo. Requerimientos:

»

Oficina

registro

universidad con información

plan de

estudios

de cada

estudiante

(cursos realizados y previstos).

»

Registro de

fechas de cursos

(inicio y fin),

calificaciones

.

»

Estudiantes doctorado:

departamento, tutores, título

tesis y

fecha defensa.

»

La información se

modifica

:

– Estudiante presenta

plan

estudio para

periodo

siguiente.

– Profesores entregan

calificaciones.

– Estudiantes doctorado

escogen tutores

y definen

título

tesis.

»

Estudiantes pueden

solicitar información

de sus

(55)
(56)
(57)
(58)
(59)
(60)

60

• Esquema de navegación: esquema ER anotado con símbolos especiales que indican como se accede a las entidades y como se recorren las

relaciones.

• Metodología:

» Por cada proceso conectado con un almacén de datos:

1 Determinar las operaciones de BD.

2 Por cada operación:

– Determinar el esquema de la operación. Subconjunto del esquema que interviene en la operación.

– Determinar el esquema de la navegación.

Esquema con flechas que indican las condiciones de acceso y símbolos que indican las

operaciones (seleccionar, insertar, actualizar, suprimir).

• Esquema operación incluye:

» Atributos usados en las condiciones.

» Atributos usados en operaciones de recuperación o actualización.

» Entidades o interrelaciones que son insertadas o suprimidas.

» Interrelaciones o jerarquías que intervienen en la

(61)

Esquema de navegación

es un

esquema de

operación

que

incluye símbolos

de navegación.

Notación

esquema de navegación:

» Flechas

que apuntan

hacia atributos

indican

que

estos se usan

en

las

condiciones

de

selección.

»

Las

flechas

entre

interrelaciones

o

jeraquías

indican

como se recorren

.

»

Los símbolos

R, M, I, D

en las entidades o

interrelaciones indican

leer, modificar,

insertar y

suprimir

, respectivamente.

(62)

• Operaciones para el ejemplo 1:

» Proceso P1: INTRODUCIR LAS CALIFICACIONES DE UN CURSO

– O1: Introducir las calificaciones de un curso. – O2: Cambiar las calificaciones de un curso.

– O3: Determinar la curva de calificaciones de un curso y calcular su

desviación respecto a una curva normal.

» Proceso P2: PREPARAR PLAN DE ESTUDIO

– O4: Insertar o suprimir un estudiante.

– O5: Introducir el plan de estudio para un estudiante (para un semestre

en particular).

– O6: Cambiar la opción para un estudiante en un curso. – O7: Retirar una materia del plan de estudio de un estudiante.

» Proceso P3: DIRIRIGIR ESTUDIANTES DE DOCTORADO

– O8: Introducir un nuevo estudiante de doctorado y su asesor.

– O9: Introducir el titulo de la tesis y fecha de defensa.

– O10: Detectar todos los estudiantes que han recibido un notable o

menos en un curso impartido por un profesor dado.

• Ejemplo2: Seleccionar los nombres de los médicos que viven en la misma

ciudad donde nacieron.

(63)

Figure

Actualización...

Referencias

Actualización...

Related subjects :