Examen de mitad de trimestre. Otoño
2003
Normas
Éste es un examen no presencial.
Puede realizarlo donde quiera y utilizar todos los recursos
que desee. El único requisito es hacerlo sin
ayuda de nadie (sin colaboradores, ni siquiera los miembros
de su equipo). Si recurre a la sección de un
libro o a una página web, cite la fuente. Una
calificación de 80/100 es un resultado muy bueno
para este examen, así que si hay una parte que
se le resiste o no le interesa, contéstela rápidamente
y pase a las que sí le interesan. Cuando
haya terminado el examen, envíe el resultado
por correo electrónico (en texto sin formato,
por favor) al profesor. Al principio del mensaje, incluya
un párrafo en el que quede claro que el examen
lo ha realizado sin ayuda de nadie. Dispone de
una semana para realizar el examen.
Recursos
A continuación,
detallamos los recursos que pueden servirle de ayuda
para responder las preguntas.
¿Problemas? ¿Tiene
alguna pregunta?
Envíe un mensaje de correo
electrónico al profesor.
Pregunta 1: Desarrollo de un
modelo de datos
Acceda a friendster.com.
Si aún no es miembro, suscríbase para
obtener una cuenta.
- Busque a Ben, utilizando la
búsqueda de usuarios, y agréguelo como
amigo (Ben dijo que se inició en los estudios
de informática porque quería conocer
a mucha gente interesante). Haga esto cuanto antes
para que pueda terminar los ejercicios con suficiente
tiempo.
- Analice la página que
describe a los usuarios. Preste mucha atención
a la información que aparece en el perfil,
incluidos los comentarios de otros amigos.
- Agregue a otros amigos (sería
buena idea agregar a otros compañeros de clase).
- Cambie las películas
o los programas de televisión favoritos para
encontrar a gente con los mismos gustos. Preste atención
al modo en que el sitio presenta esta información.
- Agregue algunos testimonios
de sus amigos.
- Busque personas de su red que
vivan en ciudades que no sean Boston.
Ahora, desarrolle un modelo de
datos para el sitio friendster.com. Su modelo de datos
deberá ser lo suficientemente completo como para
gestionar todas las acciones descritas anteriormente
y hacer funcionar el núcleo principal de friendster.com.
(Omita las secciones de compras y eventos ("Shopping"
y "Events")). Asuma la existencia de una tabla de usuarios
con claves user_id. El modelo de datos deberá
incluir las limitaciones de integridad correspondientes
y los índices para facilitar las consultas que
considera necesarias para las páginas a las que
acaba de acceder. El modelo de datos deberá contener
también los comentarios correspondientes.
Compruebe su modelo de datos insertándolo
en un RDBMS y asegurándose de que se aceptan
sin errores las sentencias CREATE TABLE y la definición
de índices. Probablemente deberá crear
un nuevo usuario de base de datos para que las definiciones
de la tabla no entren en conflicto con el resto de tablas
que tal vez haya definido para el proyecto en equipo.
Extensión de la respuesta:
si el modelo de datos contiene más de 15-20 tablas,
lo más probable es que se enfrente a muchos casos
especiales. Lo importante es obtener correctamente la
estructura del modelo de datos y las relaciones. No
dedique mucho tiempo a comprobar que cuenta con todas
las columnas necesarias de cada tabla. Por ejemplo,
bastará con decir "-- ... columnas de dirección..."
para referirse a la existencia de un modo de almacenar
la dirección, la ciudad, la provincia, etc.,
de un miembro.
Pregunta 2: Consultas más
complejas de SQL
Con el modelo de datos de la Pregunta
1, escriba dos programas informáticos:
Parte a: un programa que genere
la página "buscar gente de mi red o amigos que
vivan en un radio de 80 kilómetros y que afirmen
estar interesados en conocer gente para citas". El programa
deberá mostrar una lista de personas dentro de
dicha distancia geográfica en orden ascendente.
Parte b: una programa que genere
la página "¿Qué relación
tengo con esta persona?" y que muestre todas las conexiones
posibles entre dos personas.
Idóneamente, cada programa
debe ser una consulta sencilla de SQL. Aceptaremos el
uso de bloques de lenguaje de procedimiento, es decir,
procedimientos almacenados. Sugerencia: puede presuponer
la existencia de una tabla o de una función que
proporcione la latitud / longitud de un centroide dentro
del código postal concreto.
Compruebe las consultas insertando
el modelo de datos de la Pregunta 1 en el RDBMS que
ha estado utilizando este semestre (aunque puede utilizar
un espacio de tablas / base de datos / espacio de nombres
independiente). Rellene las tablas al menos con los
siguientes datos de prueba (puede incluir más
si lo desea):
- George tiene 57 años,
le gustan las galletitas saladas, el servicio de transporte
Segway Human Transporters, Tejas y los coches deportivos.
George vive en EE.UU., en el código postal
20500.
- Dick tiene 60 años, le
gustan las hamburguesas dobles con queso y bacon,
y defiende el ahorro de energía. Dick prefiere
no revelar su lugar de residencia.
- Ken tiene 55 años, defiende
el ahorro energético, le gusta Tejas y el culturismo.
Ken vive en EE.UU., en el distrito de Houston - 77002.
- Arnold tiene 55 años,
le gusta California, el culturismo y los coches deportivos.
A Arnold le interesa tener citas con mujeres. (Su
modelo de datos no incluye las citas a ciegas como
posible objetivo para conocer gente). Arnold vive
en el código postal 90210.
- Britney tiene 22 años,
le gusta la física de semiconductores y está
interesada en conocer tanto a hombres como a mujeres
(siempre y cuando sean ricos y famosos, y tengan como
poco 6 licenciaturas del MIT). Britney ha facilitado
el código posta 90210 como suyo propio, ya
que pasó mucho tiempo allí mientras
trabajaba en una película.
- George es amigo de Dick.
- Dick es amigo de Ken.
- Ken es amigo de Arnold.
- George es amigo de Britney.
Imprima una sesión de la
base de datos que utilizará para las consultas
(para el apartado (b) podría realizar consultas
para ver la relación de amistad posible entre
George y Arnold).
Tenga en cuenta que cabe la posibilidad
de que comience a realizar las consultas y descubra
que quiere modificar el modelo de datos. Es un método
totalmente natural para mejorar un sistema. Pruebe que
un modelo de datos acepta consultas y realice las modificaciones
necesarias hasta conseguirlo.
Dedique solamente varias horas
a esta pregunta. Obtendrá una calificación
parcial si demuestra que su línea de acción
es la correcta, es decir, si consigue realizar varias
consultas pequeñas con las que obtenga datos
útiles para resolver el problema más grande.
Pregunta 3: Análisis
de usabilidad
Basándose en la experiencia
de la Pregunta 1, identifique tres problemas de usabilidad
en Friendster y redacte instrucciones para que los programadores
puedan resolverlos. Calificación adicional: envíe
estas ideas por correo electrónico a los colegas
de Friendster y adjunte sus respuestas.
Extensión de la respuesta:
1 página.
Pregunta 4: Extensión
de la aplicación con informática distribuida
José Frío Cuarenta,
administrador senior del MIT, ha decidido que
las redes de amistad tienen mucho futuro y quiere trasladar
la magia de Friendster al MIT mediante la creación
de MITster. Al ser el responsable
total de la organización, concibe esta tarea
como una aplicación independiente en la que cada
persona afiliada al MIT pueda registrarse y acceder
al sitio. Philip '82 y Gerry '68 pueden descubrir que
ambos viven en la misma ciudad, que comparten aficiones
e intereses y que están conectados mediante Hal
'XX [¿qué tipo de conexión? La
conocemos, pero no podemos decírsela].
José le introduce en el
proyecto para diseñar los requisitos del sistema
y su primera pregunta es: ¿por qué no
utilizamos Friendster? José responde que no está
contento con las características de la comunidad
de Friendster. Un grupo de amigos debería poder
crear un grupo paralelo improvisado para crear un foro
de debate, un espacio de trabajo en el que colaborar,
una agenda de eventos, etc.
Usted señala que los servidores
independientes ofrecían buenos resultados en
la década de los 90, pero que en el siglo XXI
el pilar fundamental es la informática distribuida.
Tal vez el objetivo debería ser aumentar los
servicios de Friendster, y no tanto suplantarlos. Un
miembro del MIT podría acceder a un servidor
sencillo y obtener todos los servicios de Friendster
además de servicios adicionales para grupos de
amigos del MIT.
Está claro que será
necesario definir algún tipo de servidor que
albergue las características adicionales de la
comunidad. ¿Qué tipo de interfaz SOAP
querría obtener de Friendster? Escriba una descripción
de 1 ó 2 páginas (en español) de
la interfaz que desea obtener y un archivo WSDL para
incluir un fragmento de la interfaz.
De nuevo, lo que buscamos es una
estructura razonable, no una solución completa
que contenga todos los campos definidos posibles. Basta
con que entregue algunos fragmentos elididos y comentados.
Pregunta 5: Diversión
con el alojamiento de datos
Utilizando el modelo de datos de
Levi Strauss definido en el ejemplo de la sección
Data
Warehousing, escriba consultas de SQL que ofrezcan
respuesta a las siguientes preguntas:
- Para todas las regiones de EE.UU.,
¿cuántos clientes compraron pantalones
por segunda vez, en comparación con las ventas
de pantalones a primeros clientes?
- Comenzando por la concepción
de este negocio, ¿cuáles son las ventas
adicionales de cada mes, en meses por orden ascendente?
Suponga ahora que le pedimos que
prepare un informe con la talla media de cintura de
los pantalones enviados, dividido por regiones. ¿A
qué tabla agregaría la columna waist_size
(talla cintura) y por qué?
Entrega del examen
Envíe las respuestas por
correo electrónico al profesor.
Al principio del mensaje, incluya
un párrafo en el que quede claro que el examen
lo ha realizado sin ayuda de nadie.
|