El documento presenta el proyecto final de carrera para el desarrollo de un portal de noticias llamado DocuNews. Se comienza realizando un análisis exhaustivo de los requerimientos del sistema, incluyendo las características de una biblioteca digital y los usuarios potenciales. Luego, se especifican detalladamente los requisitos funcionales y no funcionales siguiendo la norma IEEE. El objetivo final es crear un portal web dinámico donde los usuarios puedan consultar y gestionar de forma eficiente las noticias almac
1. Licenciatura en Documentación
Facultad de Informática
Curso Académico 2004 / 2005
Proyecto Final de Carrera
DocuNews: Portal de Noticias
Tutor: Carlos Miguel T. Calafate
Autores: Fernando Leandro Baladrón
Departamento: Departamento de Informática de Sistemas y Computadores
2. 1.NIVEL DE OBJETIVOS Y REQUERIMIENTOS 3
1.1.INTRODUCCIÓN 3
1.1.1. QUÉ ES UNA BIBLIOTECA DIGITAL? 4
1.1.2. CARACTERÍSTICAS DE TODA BIBLIOTECA DIGITAL 4
1.1.3. QUÉ ES DOCUNEWS 4
1.1.4. CUAL ES LA FUNCIONALIDAD DE DOCUNEWS 4
1.1.5. USUARIOS POTENCIALES DE DOCUNEWS 4
1.1.6. COMO SE HA DESARROLLADO DOCUNEWS? 5
1.1.7. CONCLUSIÓN 5
1.2. ESPECIFICACIÓN DE REQUISITOS DE ACUERDO NORMA IEEE
1.2.1 INTRODUCCIÓN. 7
1.2.1.1. PROPÓSITO. 7
1.2.1.2.ÁMBITO. 7
1.2.1.3. DEFINICIONES, ACRÓNIMOS Y ABREVIATURAS. 7
1.2.1.4. REFERENCIAS. 8
1.2.2. DESCRIPCIÓN GENERAL. 8
1.2.2.1. PERSPECTIVA DEL PRODUCTO 8
1.2.2.2. FUNCIONES DEL PRODUCTO 8
1.2.3. REQUISITOS ESPECÍFICOS. 9
1.2.3.1. REQUISITOS FUNCIONALES. 9
1.2.3.2. REQUISITOS DE LA APLICACIÓN. 15
1.2.4. REQUERIMIENTOS ESPECIFICOS. 16
1.2.4.1. ESTANDARES CUMPLIDOS 16
1.2.4.2. LIMITACIONES HARDWARE. 16
1.2.5. ATRIBUTOS. 16
1.2.5.1. MANTENIMIENTO 16
1.2.5.2. SEGURIDAD 16
2. EL FORMATO RSS. 17
2.1. EXPLICACIÓN FORMATO RSS 17
2.2. ESPECIFICACIÓN FORMATO RSS. 20
3. BASE DE DATOS DOCUNEWS 24
3.1.NIVEL DEL DISEÑO DE LA BASE DE DATOS 24
3.1.1. ANÁLISIS DE REQUERIMIENTOS 24
3.1.2. DISEÑO CONCEPTUAL 26
3.1.3. DISEÑO LÓGICO 27
3.1.4. DIAGRAMA UML 29
3.2. PROCEDIMIENTOS ALMACENADOS CON SQL SERVER 30
3.2.1. BASE DE DATOS EN DOCUNEWS 30
3.2.2. PORQUÉ SQL SERVER? 30
3.2.3. CONEXIONES EN SQL SERVER. 30
3.2.4. EJEMPLOS PROCEDIMIENTOS IMPLEMENTADOS 31
4. NIVEL DEL DISEÑO DE LA INTERFACE 36
4.1. CLASES 36
4.2. PROGRAMACIÓN ASP .NET 45
4.2.1. PÁGINA PRINCIPAL (DEFAULT.ASPX) 46
4.2.2. CONTROLES DE USUARIO 47
3. 4.2.3. INSERCIÓN DE NOTICIAS 48
4.2.4. SUBIR UNA IMAGEN. 49
4.2.5. VISUALIZACIÓN DE LOS DATOS 49
4.2.6. IDENTIFICACIÓN DE LOS USUARIOS 51
4.2.7. OBTENER NOTICIAS 52
4.2.8. TEMAS ADICIONALES 53
5. NIVEL DEL DISEÑO WEB 56
5.1. DISEÑO DE NAVEGACIÓN 56
5.2. HOJA DE ESTILOS CSS 70
5.3. ESTUDIO POSICIONAMIENTO EN GOOGLE 78
6. NIVEL GESTIÓN LOCAL 81
6.1. APLICACIÓN PARA LA GESTIÓN LOCAL DE NOTICIAS 87
6.2. MODULO DE IMPORTACION 88
7. REFLEXIONES Y TRABAJO FUTURO 93
7.1. REFLEXIONES FINALES 93
7.2.TRABAJO FUTURO 95
8. BIBLIOGRAFIA 98
ANEXOS 101
I. ESTIMACIÓN DURACIÓN DEL PROYECTO 101
II. ESTUDIO NECESIDADES DE LOS USUARIOS 102
III. ESTUDIO COMPETENCIA Y FUENTES RELACIONADAS. 111
IV. TESAURO EUROVOC. 122
4.
5. Resumen
Se pretende desarrollar un sistema para el almacenamiento y consulta de
información de noticias.
Se empezará haciendo un análisis exhaustivo de los requerimientos que deben
satisfacer este tipo de sistemas, para pasar luego al diseño conceptual usando
el modelo entidad relación.
Nuestro objetivo final es la creación de un Portal que realice las funciones
básicas solicitadas en los requerimientos, donde el usuario podrá consultar en
todo momento la Base de datos de noticias del Portal, recuperando la
información de forma exhaustiva y eficiente.
El papel actual de los documentalistas en las organizaciones va encaminado a
la organización de contenidos en la web de las empresas en las que trabajan,
así como la organización de la información necesaria para las mismas. Uno de
los trabajos más interesantes actualmente para este tipo de profesionales es la
organización y creación de contenidos en Portales de Internet y en empresas.
En este caso, hemos decidido enfocarlo hacía las noticias porque
consideramos que se hace necesaria la creación de un portal que gestione
toda esta información de forma eficiente.
El resultado será una web dinámica donde el usuario podrá obtener lo que
realmente quiere, de forma fácil y totalmente parametrizable.
6. Fernando Leandro Baladrón Proyecto fin de carrera
Requerimientos y objetivos 20/05/05
1. REQUERIMIENTOS Y OBJETIVOS
Este primer punto estaría formado por una primera parte correspondiente a la
introducción, donde detallamos qué nos ha movido ha realizar este proyecto, y
una segunda parte relativa a la especificación de requisitos, donde hemos
realizado una estimación de los requerimientos del proyecto.
1.1. INTRODUCCIÓN
1.1.1 QUÉ ES UNA BIBLIOTECA DIGITAL?
Existen diferentes definiciones para una Biblioteca Digital; en su
concepto más simple, es un espacio en donde la información es almacenada y
procesada en formato digital. Según la definición tomada por la Digital
Libraries Federation:
"Las Bibliotecas Digitales son organizaciones que proveen los recursos,
incluyendo personal especializado, para seleccionar, estructurar, distribuir,
controlar el acceso, conservar la integridad y asegurar la persistencia a través
del tiempo de colecciones de trabajos digitales que estén fácil y
económicamente disponibles para usarse por una comunidad definida o para
un conjunto de comunidades."
Un servicio completo de biblioteca digital debe estar acompañado de los
servicios esenciales de las bibliotecas tradicionales, además de explotar las
ventajas de almacenamiento, búsqueda y comunicación digital.
El objetivo principal de una biblioteca digital es facilitar a los usuarios la
recuperación e intercambio de información, a través del acceso universal a la
información, sin limitantes de tiempo ni espacio.
1.1.2 CARACTERÍSTICAS DE TODA BIBLIOTECA DIGITAL
Una biblioteca digital debe contener seis características principales como son:
1) Colección de objetos de datos - Una biblioteca aloja una colección de
objetos de datos que pueden ser: libros, documentos etc. Estos objetos pueden
ser accesibles utilizando una red para acceder a ellos.
2) Colección de estructuras de metadatos - Una biblioteca contiene una
colección de estructuras de metadatos, como son catálogos, guías,
diccionarios, etc.
3) Colección de servicios - Una biblioteca proporciona un conjunto de servicios,
como diversos métodos de acceso para distintos usuarios. Se podrá acceder
como usuario registrado en el caso de estar dado de alta en la biblioteca, o por
el contrario como no registrado, el cual sólo tendrá acceso a la información que
se crea conveniente por parte de los mismos usuarios de la aplicación.
4) Dominio especializado - Una biblioteca tiene un dominio especializado y su
colección tiene un objetivo. Por ejemplo: arte, ciencia o literatura. Además,
normalmente se crea para servir a una comunidad de usuarios.
3
7. Fernando Leandro Baladrón Proyecto fin de carrera
Requerimientos y objetivos 20/05/05
5) Control de calidad - Una biblioteca utiliza el control de calidad en el sentido
de que todo su material se verifica. El material se filtra antes de incluirlo en la
biblioteca.
6) Preservación - El objetivo de la preservación es asegurar la protección de la
información de valor permanente de manera que pueda ser accesible para las
generaciones presentes y futuras. La preservación incluye la distribución de los
recursos para su permanencia, medidas preventivas para detener el deterioro
de los materiales y medidas restauradoras que permitan la utilización de los
materiales seleccionados.
1.1.3 ¿QUÉ ES DocuNews?
DocuNews es una aplicación la cual debe gestionar una biblioteca digital
dedicada a las noticias. En dicha aplicación se tratan todo tipo de noticias
clasificadas por categorías y se almacenan en una base de datos para su
posterior tratado o visualización. Otra característica de DocuNews es que debe
de dar una funcionalidad de una página web, es decir, cualquier usuario puede
acceder a visualizar los datos que existen, o en caso de pertenecer al grupo del
administradores, poder modificarlos desde dicha página web.
Dentro de este apartado surge la necesidad de analizar como está la situación
actual, para esto recomendamos consultar el ANEXO III del estudio de
competencia en el que hemos desarrollado un extenso listado de los diferentes
portales relacionados con el mundo de las noticias y con la sindicación de
contenidos RSS, evaluando la situación actual y que tendríamos que hacer
para diferenciarnos.
1.1.4 ¿CUÁL ES LA FUNCIONALIDAD DE DocuNews?
La funcionalidad de la aplicación DocuNews viene determinada en función al
usuario que desee acceder a la página web. Para dicha aplicación existen dos
tipos de usuarios finales: el primero de ellos será un miembro perteneciente al
grupo de Administradores, que tras validarse a través de un login y un
password podrá acceder a todas las funciones especiales que ofrece la
aplicación (dar de alta, modificar o eliminar Noticias). El segundo tipo de
usuario es el usuario anónimo, que podrá acceder a las noticias ofrecidas en el
Portal.
1.1.5 USUARIOS POTENCIALES DE DocuNews
Debida a la gran abundancia de información disponible al usuario de redes, una
de las necesidades que surgen es la de proveer al usuario de medios para
manejar de manera más efectiva el gran volumen, dinamismo y complejidad de
la información. Generalmente el usuario se ve enfrentado con la necesidad de
navegar entre el gran volumen de datos para buscar y localizar la información
que necesita y que le es de importancia. Esto representa frecuentemente una
desorientación del usuario entre los diferentes caminos que pueden seguir en
un sistema de tantos medios de búsqueda.
4
8. Fernando Leandro Baladrón Proyecto fin de carrera
Requerimientos y objetivos 20/05/05
Este tipo de aplicaciones serán como buscadores temáticos, los cuales sólo
contendrán información referente al tema de la biblioteca.
De esta forma, cualquier usuario interesado en realizar una búsqueda del tema
que desee, sólo tendrá que acceder a alguna de estas bibliotecas, y visualizar
los datos que hay en ella.
Existen bibliotecas en las cuales los usuarios deben registrarse para poder
acceder a ella, aportando información, así como introduciendo datos para
mantener y enriquecer dicha biblioteca.
Destacar que finalmente, tal y como se muestra en el ANEXO II nuestros
usuarios potenciales serán los jóvenes, en dicho anexo se puede observar que
se ha tomado la decisión de recurrir a encuestas para evaluar aspectos tan
determinantes como los gustos de los jóvenes valencianos, a que dedican el
tiempo libre o cuales son sus mayores motivaciones, de todo esto se han
realizado una serie de conclusiones que serán clave a la hora de darle finalidad
a nuestro portal. Nuestro portal aunque suene ambicioso tiene que dar
respuesta a las carencias y necesidades que hemos encontrado a la luz de
nuestras encuestas.
1.1.6 ¿Cómo se ha desarrollado DocuNews?
DocuNews ha sido desarrollada mediante la tecnología ASP.NET, mediante
Visual Studio .NET y con el lenguaje de programación ASP .NET Como se ha
mencionado anteriormente, la aplicación está soportada por una base de datos
que almacena toda la información de las noticias del Portal. Dicha base de
datos está desarrollada mediante SQL Server.
Otros detalles de la aplicación se encuentran más detallados en la
Especificación de requisitos realizada de acuerdo a la norma IEEE std. 830 –
1998 (Ver apartado 1.2 del trabajo).
1.1.7 CONCLUSIÓN
Internet y el Web han crecido continuamente en los últimos años produciendo
un aumento excesivo de la información. Los motores de búsqueda nos
proporcionan una gran cantidad de información que no deseamos, y en
definitiva, una búsqueda de un dato en concreto nos cuesta mucho más tiempo
del que desearíamos.
La solución radica en las bibliotecas digitales, en las cuales se tratan sólo unos
temas en concreto, y por tanto la información “no deseable” es mucho menor
que en cualquier buscador.
Muchos consideran la Web como la biblioteca virtual internacional definitiva.
5
9. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
Especificación
de
Requisitos siguiendo la normativa
IEEE std 830 –1998:
IEEE Guide to Software Requirements
Specifications. IEEE Standards Board.
6
10. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
1.2 Especificación de requisitos de acuerdo a la norma IEEE
El objetivo de este punto es dejar claro desde el principio los requerimientos
y funcionalidades que va ha tener la aplicación. En este punto nos hemos
dedicado a detectar todos aquellos requisitos que va ha necesitar nuestra
aplicación.
1.2.1 Introducción
1.2.1.1 Propósito
La aplicación consiste en la construcción de una biblioteca digital,
mediante una base de datos. Debe de dar la funcionalidad de una página
web de Noticias. Dicha base de datos permitirá introducir la información
relativa a las categorías y noticias, así como administradores, Palabras
clave, imágenes.
Los administradores de la aplicación serán los encargados de gestionar
las tareas de mantenimiento y actualización de los datos de toda la
información disponible, así como también los miembros autorizados.
1.1.2.2 Ámbito
Nuestra aplicación recibe el nombre de “DocuNews”.
Desempeñará el papel de gestionar y ordenar los datos introducidos por
los Administradores para poder después mostrarlo a cualquier visitante.
La aplicación dará la posibilidad de dar de alta a nuevos
administradores, y estos podrán introducir nuevas noticias, modificarlas e
incluso borrarlas.
1.1.2.3 Definiciones, acrónimos y abreviaturas
- ADMINISTRADORES: Los encargados fundamentalemente de introducir la
noticias, modificarlas, borrarlas, crear las categorías, dar de alta a nuevos
administradores.
- VISITANTE: Persona que visita la web de forma anónima.
- HITOS: Objetivo parcial que se alcanza una vez concluida una serie de
tareas.
- USUARIO: Persona que accede a la aplicación con derechos de
modificación y visualización de los datos.
*Acrónimos:
- URL: Uniform Resource Locator.
7
11. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
- ASP: (Active server pages), Páginas de servidor activo.
- IEEE: (Institute of Electrical & Electronics Engineers).
1.2.1.4 Referencias
-IEEE std 830 –1998 IEEE Guide to Software Requirements Specifications.
IEEE Standards Board.
-Guía del IEEE para la especificación de requerimientos software.
1.2.2. DESCRIPCIÓN GENERAL
1.2.2.1 Perspectiva del producto:
La aplicación DocuNews es una aplicación totalmente independiente
destinada a ejecutarse sobre cualquier PC que soporte un sistema operativo
Windows.
1.2.2.2 Funciones de producto:
a) Funciones especificas de los miembros:
a1) Funciones de gestión de información:
Añadir / Eliminar / Modificar Categorías.
Añadir / Eliminar/ Modificar Noticias.
Añadir / Eliminar/ Modificar Listado de Palabras Clave.
a2) Funciones de comprobación:
Verificar login y password.
a3) Funciones personales de un Administrador:
Cambio de password.
Dar de alta a un nuevo Administrador.
Modificar perfil propio.
b) Funciones de cualquier usuario:
b1) Funciones de búsqueda:
Consultar Categorías
Consultar Palabras clave
Consultar Noticias sobre palabras clave.
Consultar Noticias sobre títulos.
8
12. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
Consultar Noticias sobre fecha de publicación.
Consultar Noticias sobre Valor de impacto.
Consultar Noticias sobre autores.
Consultar Noticias con el campo imagen activo.
b2) Otras funciones:
Importación Automática de noticias formato RSS 2.0.
● Imagen Resumen:
2.3 Características del usuario:
Los usuarios que podrán utilizar el producto pueden ser:
- Cualquier persona que tenga acceso a Internet y tenga
curiosidad por conocer las noticias de actualidad.
- Un miembro perteneciente al grupo de administradores no
necesita ninguna formación especifica.
2.4 Restricciones generales:
La aplicación se realizará bajo el entorno ASP.NET con lo cual
vamos a utilizar el entorno Windows, luego no podemos hacer uso de
ninguna aplicación que no trabaje bajo dicho entorno. Además, solo
puede estar alojada en un servidor Windows.
2.5 Supuestos y dependencias:
Para utilizarlo necesitamos un servidor que procese nuestras
páginas ASP, para ello existe el Internet Information Server bajo
Windows NT o 2000.
1.2.3. REQUISITOS ESPECIFICOS.
1.2.3.1 Requisitos funcionales:
1.2.3.1.1 Añadir Categoría (Categoria):
-Introducción: Los administradores podrán dar de alta una
nueva categoría.
9
13. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
-Entrada: el titulo del Canal/Categoria (title), el link de la
dirección URL de la pagina web que genera el Canal/Categoria (link), la
descripción del Canal/Categoria (description), el idioma de la fuente de
información (language), el aviso legal del Canal/Categoria (copyright), el
correo electronico del editor del Canal/Categoria (managingEditor), el
correo electrónico del webmaster del Canal/Categoria para resolver
problemas técnicos (webMaster), la fecha de publicación del
Canal/Categoria (pubDate), la última fecha de actualización del
Canal/Categoria (lastBuildDate), el nombre del programa que genera el
archivo RSS (generador), la dirección url donde se encuentra la fuente
información del Canal/Categoria (docs), avisos de cuando se actualiza el
Canal/Categoria (cloud), el tiempo de vida del Canal/Categoria
expresado en minutos, el PICS rating del Canal/Categoria, la etiqueta de
la caja de texto del Canal/Categoria (textinput) , las horas en las que no
está disponible el Canal/Categoria (skipHours), Fechas en las que no
está disponible el Canal/Categoria (skipDays).
-Proceso: almacenar toda la información de la nueva categoría e
introducirla en la base de datos de la aplicación.
-Salida: Base de datos actualizada.
1.2.3.1.2 Eliminar Categoría (Categoria):
-Introducción: El Administrador puede dar de baja un
Canal/Categoria existente.
-Entrada: El título de la categoría que se quiere dar de baja.
-Proceso: sólo se podrá borrar si no existen noticias
relacionadas con el Canal/ Categoría.
-Salida: En caso de que no existan noticias relacionadas con el
Canal/Categoría la salida será la base de datos actualizada, en caso
contrario se le avisará al administrador de que la operación no se ha
podido realizar por existir noticias con la categoría que se desea borrar.
1.2.3.1.3 Modificar Categoria (Categoria):
-Introducción: modificar una categoría actualizando cualquier
campo de datos de dicho categoría.
-Entrada: Nombre de la categoría que se desea modificar.
-Proceso: El Administrador una vez identificado como tal, puede
modificar esa categoría en la base de datos.
-Salida: La base de datos actualizada.
1.2.3.1.4 Añadir Noticia (Noticia):
-Introducción: Los Administradores pueden insertar una Noticia
en la Base de datos.
-Entrada: Título de la noticia (title), el Canal/Categoría a la que
queremos que pertenezca (category), el link a la noticia en concreto
(link), la descripción de la noticia (description), el autor de la noticia
(author), dirección url donde se encuentran los comentarios acerca de la
noticia (comments), descripción del objeto de audio o video incluido en la
10
14. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
noticia (enclosure), la fecha de publicación de la noticia (pubDate), el
nombre del canal RSS donde procede la noticia (source). El factor de
impacto que consideramos que ha tenido la noticia (impacto), podremos
además asociar una imagen a la noticia. También se podrá concretar
una serie de palabras clave asociadas a la noticia. En caso de que no
exista previamente el canal/categoría al que se desea asociar la noticia,
deberemos crear anteriormente el canal/categoría.
-Proceso: Reestructurar la información para insertarla de forma
eficiente a la base de datos.
-Salida: La base de datos actualizada.
1.2.3.1.5 Eliminar Noticia (Noticia):
-Introducción: Los Administradores pueden eliminar noticias.
-Entrada: El título de la Noticia que se desea eliminar.
-Proceso: Comprobar que existe y borrar ese registro de la
base de datos.
-Salida: La base de datos actualizada.
1.2.3.1.6 Modificar Noticia (Noticia):
-Introducción: Los Administradores pueden modificar los datos
de una noticia.
-Entrada: El título de la noticia que quieres modificar.
-Proceso: Comprobar que existe y modificar ese registro de la
base de datos.
-Salida: La base de datos actualizada.
1.2.3.1.7 Añadir Palabras clave (Palabra_Clave):
-Introducción: Los administradores podrán añadir palabras clave
normalizadas.
-Entrada: Palabra clave correctamente normalizada basándose en
Tesauros.
-Proceso: El Administrador tiene que estar previamente
identificado, en el proceso de dar de alta una Palabra Clave, se
comprobará que la palabra no existía en la base de datos.
-Salida: Base de datos actualizada.
1.2.3.1.8 Eliminar Palabras clave (Palabra_Clave):
-Introducción: Los Administradores pueden dar de baja Palabra
Clave.
-Entrada: Nombre de la palabra clave.
-Proceso: El Administrador una vez identificado, podrá dar de baja
cualquier palabra clave, si la palabra clave que se desea borrar esta
11
15. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
siendo utilizada por una noticia automáticamente se borrara en cascada
también de dichas noticias.
-Salida: Base de datos actualizada.
1.2.3.1.9 Modificación Palabras clave (Palabra_Clave):
-Introducción: Los Administradores pueden modificar cualquier
Palabra Clave.
-Entrada: Nombre de la palabra clave que se desea modificar.
-Proceso: El Administrador una vez identificado, podrá modificar
cualquier palabra clave, actualizándose en cascada en todas las noticias
que usen esa palabra clave.
-Salida: La base de datos actualizada.
1.2.3.1.10 Cambio de password:
-Introducción: Un Administrador puede modificar su propio
password.
-Entrada: Login y password antiguo y dos veces su password
nuevo.
-Proceso: Comprobar que se ha introducido un password correcto,
y que se escribe dos veces el mismo nuevo password.
-Salida: Base de datos actualizada.
1.2.3.1.11 Asignar Administradores:
-Introducción: Un Administrador podrá dar de alta a un nuevo
Administrador.
-Entrada: Nombre del Administrador, Apellidos, login, password,
imagen, perfil.
-Proceso: A partir del nombre del Administrador, se genera un
nuevo registro en la base de datos.
-Salida: Base de datos actualizada.
1.2.3.1.12 Consulta Perfil Propio:
-Introducción: una vez identificado podremos modificar los
diferentes campos de nuestro perfil
-Entrada: Nombre del Administrador, Apellidos, login, password,
imagen, perfil.
-Proceso: El Administrador una vez identificado, podrá modificar
cualquier campo de su propio perfil.
-Salida: Base de datos actualizada.
1.2.3.1.13 Consultar Categorías:
12
16. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
-Introducción: Listado de Categorías /Canales dados de alta en el
sistema.
-Entrada: nombre de la Categoría/Canal y opciones elegidas.
-Proceso: Con el nombre de la Categoría/Canal y opciones
elegidas realizar la búsqueda de los diversos registros de la base de
datos.
-Salida: La página html con el resultado de la búsqueda realizada.
1.2.3.1.14 Consultar Palabras clave:
-Introducción: Listado de palabras Clave dadas de alta en el
sistema.
-Entrada: nombre de la palabra Clave, o caracteres iniciales de la
palabra clave.
-Proceso: Con la palabras clave o caracteres iniciales, realizar la
búsqueda de los diversos registros de la base de datos.
-Salida: La página html con el resultado de la búsqueda realizada.
1.2.3.1.15 Consulta Noticias sobre Categoría:
-Introducción: Busca una noticia a partir de un Canal/ Categoría.
-Entrada: El nombre del Canal/Categoría y opciones de búsqueda.
-Proceso: Con el nombre del Canal/Categoría y opciones de
búsqueda elegidas realizar la búsqueda de los diversos registros de la
base de datos.
-Salida: La página html con el resultado de la búsqueda realizada.
1.2.3.1.16 Consultar Noticias sobre título:
-Introducción: A partir de un titulo de Noticia buscar todas la
noticias con ese titulo.
-Entrada: Titulo de la noticia (o parte del titulo de la noticia) y
opciones de búsqueda.
-Proceso: Con en el nombre del título y opciones elegidas realizar
la búsqueda de los diversos registros de la base de datos.
-Salida: La pagina html con el resultado de la búsqueda realizada.
1.2.3.1.17 Consultar Noticias sobre fecha de publicación.
-Introducción: A partir de una fecha de publicación, o intervalo de
fechas de publicación, buscar las noticias publicadas en esa fecha.
-Entrada: fecha de publicación, (o intervalos de fechas) y opciones
de búsqueda.
-Proceso: Con la fecha de publicación y opciones elegidas realizar
la búsqueda de los diversos registros de la base de datos. Para el caso
en el que tengamos un intervalo de fechas comprobaremos que el
intervalo es valido, la fecha de inicio debe ser menor que la fecha de fin.
13
17. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
-Salida: La pagina html con el resultado de la búsqueda realizada,
ordenando los registros por fecha de publicación.
1.2.3.1.18 Consultar Noticias sobre autores:
-Introducción: A partir de un autor, obtener todas las noticias de
ese autor.
-Entrada: Autor y opciones de búsqueda.
-Proceso: Con el nombre del autor y opciones elegidas realizar la
búsqueda de los diversos registros de la base de datos.
-Salida: La pagina HTML con el resultado de la búsqueda
realizada
1.2.3.1.19 Consultar Noticias con Imagen:
-Introducción: búsqueda de noticias con el campo imagen activo,
es decir, queremos obtener aquellas noticias que tengan imagen.
-Entrada: campo imagen activo y opciones de búsqueda.
-Proceso: Buscaremos aquellos registros que no tengan a nulo el
campo imagen, además de las opciones elegidas para la búsqueda de
los diversos registros de la base de datos.
-Salida: La pagina html con las noticias con Imagen.
1.2.3.1.20 Consultar Noticias sobre valor de impacto:
-Introducción: A partir de un valor de impacto, buscar las noticias
con igual valor de impacto, menores que ese valor de impacto o mayores
que ese valor de impacto.
-Entrada: Valor de impacto del 1 al 10.
-Proceso: Con el valor de impacto y opciones elegidas realizar la
búsqueda de los diversos registros de la base de datos.
-Salida: La pagina html ordenadas por valor de impacto.
1.2.3.1.21 Consultar Noticias sobre Palabras clave:
-Introducción: A partir de unas palabras claves, buscar las noticias
con esas palabras clave.
-Entrada: Palabras clave y opciones de búsqueda.
-Proceso: Con las palabras clave y opciones elegidas realizar la
búsqueda de los diversos registros de la base de datos.
-Salida: La página html con el resultado de la búsqueda realizada.
14
18. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
1.2.3.2 Requisitos de la aplicación
1.2.3.2.1 Interfaces de usuario
La aplicación se visualizará con cualquier navegador, como puede
ser Internet Explorer, Netscape, Opera, Mozilla Firefox etc.
Se accederá a una pagina inicial desde la cual se podrá elegir
vínculos al resto de posibilidades de la mencionada pagina (DocuNews).
Todo visitante anónimo tendrá acceso a todo el contenido de la
aplicación pero sin la posibilidad de realizar ningún cambio. Podrá
realizar consultas sobre la Base de datos, cuyo resultado de las
búsquedas será mostrado en el navegador.
Se presentarán distintos formularios con la información pertinente
en cada uno de ellos, donde el usuario podrá seleccionar las opciones
deseadas y, en caso de ser un usuario con acceso registrado, se le
permitirá la introducción y modificación de todos los datos que considere
oportunos, en cualquier sección de la Web que desee excepto en las
páginas personales del resto de los usuarios registrados.
Como miembro del grupo de Administradores se tendrá acceso a
dar de alta a otro Administrador, a modificar sus datos personales.
1.2.3.2.2 Requisitos Hardware
No se necesitara un Hardware específicamente potente, bastará
con un equipo Hardware normal. Los requisitos serán los mismos que
los de SQL Server y Internet Information Server (IIS).
1.2.3.2.3 Requisitos Software
El producto que estamos describiendo esta desarrollado bajo el
sistema operativo Windows por el hecho de utilizar la tecnología de
microsoft ASP.NET.
Del lado del cliente no será necesario trabajar bajo un entorno
Windows, ya que lo que se genera son paginas HTML y se pueden
visualizar con cualquier navegador independientemente del sistema
operativo utilizado.
1.2.3.2.4 Interfaces de comunicación
Tener conexión a Internet gracias a un módem (acceso remoto) o
tarjeta de red.
1.2.3.3 Requisitos de eficiencia
Esta aplicación esta pensada para que se pueda visualizar bajo
cualquier navegador.
15
19. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación de requisitos 20/05/05
El prototipo de DocuNews se alojará en un servidor Windows.
1.2.4. Requerimientos específicos
1.2.4.1 Estándares cumplidos
El lenguaje utilizado para la anotación, definiciones y acrónimos
es el castellano, aunque para algunos campos de la base de datos
hemos utilizado el inglés.
1.2.4.2 Limitaciones Hardware
El PC que vaya a visualizar la aplicación debe disponer de una
tarjeta de red o un módem para conectarse a Internet, ya sea bien a
través de una LAN o de una conexión directa a Internet.
La capacidad del servidor estará en función de la carga de
transacciones a que estará sometido. Los PC´s para la visualización
deberán disponer como mínimo de la capacidad de almacenamiento
requerida por el navegador.
1.2.5. Atributos
1.2.5.1 Mantenimiento
El mantenimiento de la aplicación será sencillo, así como su
instalación, administración y reparación. Además irá acompañada de los
manuales correspondientes que clarifiquen los pasos a seguir por el
usuario.
En cuanto al idioma y formato de los datos, preferentemente se
hará en español, aunque quizás en un futuro se realice en otros idiomas.
En un futuro se estudia el que se pueda importar
automáticamente las noticias de diversos portales tales como Google,
yahoo, etc.. Por tanto, por esta circunstancia, adaptaremos nuestro
portal al formato RSS.
1.2.5.2 Seguridad
Los Administradores y usuarios tendrán un login y password para
acceder a posibles modificaciones de la aplicación. De esta forma,
cualquier persona no identificada, sólo podrá consultar las noticias.
Al tratarse de una aplicación a la cual se accede a través de
Internet, hay que tener un control estricto de las claves de los usuarios y
de sus permisos para que ningún usuario malicioso pueda modificar o
dañar la base de datos de la aplicación o la aplicación en sí.
16
20. Fernando Leandro Baladrón Proyecto fin de carrera
El formato RSS 20/05/05
2. El formato RSS
2.1 Explicación formato RSS.
El formato RSS ha tenido una gran importancia en nuestro portal web, el
diseño de la base de datos se ha centrado fundamentalmente en este formato,
y gracias a ello hemos conseguido desarrollar la importación automática de las
noticias.
Esta tecnología se basa en XML y en el uso de las metaetiquetas. Este formato
no se basa en la forma sino que está enfocado en el contenido. W3C ha
establecido una norma para que así todos los interesados en esta tecnología
puedan hacer un uso correcto y formalizado de dicho formato.
Explicación Formato RSS:
RSS son las siglas de RDF Site Summary, un sistema mediante el cual los sitios web
pueden publicar su contenido fuera del navegador web. Resulta de gran utilidad, por
ejemplo, para mantener a los usuarios al día sobre las últimas actualizaciones de la
página: novedades, titulares de última hora, etc.
El formato RSS, se ha convertido en los últimos tiempos en un estándar para la
trasmisión de noticias, sobre todo las provenientes de los weblogs. Al creador de la
especificación RSS 2.0 se le antojó cambiarle el significado a las siglas, y para él
significan Really Simple Syndication, Sindicación Realmente Simple.
Se trata de un formato basado en XML que incluye información siguiendo unas
determinadas especificaciones. De esta manera, cualquier programa que las siga es
capaz de mostrar dicha información. Te puedes 'sindicar' a un determinado 'feed'
(fichero RSS) y ser avisado en todo momento de las noticias que contenga.
Por ejemplo, para el caso de DocuNews se ha construido un fichero XML que se
actualiza al momento de ser solicitado, y que incluye las 12 noticias más importantes
de cada momento. De esta manera, podrás tener en cada instante (y sin tener que
estar accediendo a sus sitios web) las noticias más destacadas tomadas de decenas
de medios de comunicación.
Los editores de un sitio deciden qué van a difundir a través de RSS, ya sea: los
encabezados más recientes (What’s New?) de un blog, de un periódico en línea, de
una revista o de las noticias de un portal; las 10 aplicaciones más descargadas o el
menú de un sitio. Los sitios web que alberguen esta información no tendrán que
modificar nunca alguna línea del contenido importado, ya que a medida que se
actualice el RSS feed del sitio fuente, los destinos se actualizarán automáticamente.
Una ventaja para aquel al que le interesa atraer a más visitantes es que, si sus sitios
web incluyen en sus contenidos RSS feeds, entonces el número de visitas al sitio web
original aumenta, debido a que los encabezados se difunden por diversas fuentes
(sitios). Este hecho también contribuye a que los motores de búsqueda tengan más
referencias hacia nuestro sitio, porque indexan los encabezados que aparecen en las
páginas que importan los RSS feeds.
17
21. Fernando Leandro Baladrón Proyecto fin de carrera
El formato RSS 20/05/05
Comúnmente, los cibernautas dejan en las bitácoras de los servidores web muchos
registros de accesos a páginas que no consultan, ya que los contenidos de esas
páginas no es lo que están buscando, así se mantienen en búsquedas infructuosas
hasta que llegan a la información que necesitan. RSS es una forma de desviar ese
tráfico de búsquedas infructuosas hacia los sitios que importan los RSS feed, en el
momento que los cibernautas encuentran los encabezados que les interesan, acceden
al sitio original a través de la link del encabezado y sólo a la información que les
interesa.
Así por un lado, tenemos mayor número de accesos y por otro, accesos de mayor
calidad, directamente a las notas, artículos o información que les interesa a los
navegantes.
“To syndicate” traducido literalmente significa sindicar, entrar a formar parte de un
sindicato. Pero en inglés tiene otra acepción: algo así como "publicar artículos
simultáneamente en diferentes medios a través de un sindicato al que se pertenece".
EJEMPLO RSS 2.0:
En el siguiente ejemplo, se ilustra un documento con el formato RSS 2.0
<?xml version="1.0" ?>
- <!-- generator="b2evolution/0.9.0.10" -->
- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
- <channel>
- <item>
<title>Curso: Creación y Desarrollo de Bibliotecas
Digitales</title>
<link>http://blogs.orbis.org.mx/blogs/calmecac.php?title
=curso_creacion_y_desarrollo_de_bibliotec&more=1&c=1
&tb=1&pb=1</link>
<pubDate>Thu, 24 Feb 2005 10:52:40 +0000</pubDate>
<category domain="main">Tecnologías Aplicadas a la
Educación</category>
<guid
isPermaLink="false">45@http://blogs.orbis.org.mx/blogs</
guid>
<description>http://www.filos.unam.mx/dec/Semestre200
5/c_bibliotecasdigitales.htm Este un curso organizado por
la Facultad de Fislosofía y Letras de la UNAM. Objetivo
general. Proporcionar los elementos teóricos y aplicación
necesarios para la creación, desarrollo y organización de
diversas categorías de bibliotecas digitales, actividades
fundamentales universitarias: docencia, investigación y
difusión de la cultura.</description>
- <content:encoded>
- <![CDATA[
<p><a
href="http://www.filos.unam.mx/dec/Semestre2005/c_b
ibliotecasdigitales.htm">http://www.filos.unam.mx/d
ec/Semestre2005/c_bibliotecasdigitales.htm</a></p> <p>Este un curso
</p>]]>
</content:encoded>
<comments>http://blogs.orbis.org.mx/blogs/calmecac.php
</comments>
</item>
</channel>
</rss>
18
22. Fernando Leandro Baladrón Proyecto fin de carrera
El formato RSS 20/05/05
Ejemplo de lo que podría ser un formulario de entrada de datos para el formato
RSS 0.91
Se puede observar la gran cantidad de campos de los que dispone este
formato.
19
23. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación RSS 2.0 20/05/05
2.2 Especificación formato RSS 2.0:
En ente apartado se comenta en detalle cuales son los campos utilizados por
este formato, además de detallar un ejemplo para ilustrar la sencillez de este
formato.
● RSS 2.0
Publicada en Octubre del 2002 por Dave Winner. Esta especificación es
compatible con RSS 0.91 y RSS 0.92 . Por tanto, un fichero RSS 0.91 es
también un fichero RSS 2.0 válido.
-Resumen de los elementos que forman parte de un fichero RSS 2.0
● Elementos requeridos del channel
<title> -- Título del canal.
<link> -- Dirección URL a la página web que genera el canal de información.
<description> -- Breve descripción del canal.
● Elementos opcionales del channel
<language> -- Idioma de la fuente de información.
<copyright> -- Aviso legal del canal.
<managingEditor> -- Correo electrónico del editor del canal.
<webMaster> -- Correo electrónico del webmaster del canal, para resolver
problemas técnicos.
<pubDate> -- Fecha de publicación del canal. Ejemplo: cada 24 horas.
<lastBuildDate> -- Última fecha de actualización del canal.
<category> -- Cateogoría a la que pertenece el canal. Ejemplo: finanzas.
<generator> -- Nombre del programa que genera los archivos rss.
<docs> -- Dirección url donde se encuentra la fuente de información del canal.
<cloud> -- Permite recibir avisos cuando se actualiza el canal.
<ttl> -- Tiempo de vida del canal expresado en minutos.
<image> -- Url donde se encuentra la imagen del canal.
<rating> -- PICS rating del canal.
<textinput> -- Etiqueta de la caja de texto del canal.
<skipHours> -- Horas en que no está disponible el canal.
<skipDays> -- Fechas en que no está disponible el canal.
● Elementos requeridos del item
<title> -- Título del item.
<link> -- Link al item.
<description> -- Breve descripción del item.
● Elementos opcionales del item
<author> -- Correo electrónico de la persona que ha escrito la notícia.
<category> -- Categoría a la que pertenece la notícia.
<comments> -- Dirección URL donde se encuentran los comentarios acerca de la
20
24. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación RSS 2.0 20/05/05
notícia.
<enclosure> -- Describe el objeto de audio, video... que está incluido con la notícia.
<guid> -- Número que identifica a la notícia.
<pubDate> -- Fecha de publicación de la notícia.
<source> -- Nombre del canal RSS donde procede la notícia.
-Modificaciones respecto a las versiones anteriores
Se permiten crear tantos elementos como sean necesarios, siempre y cuando
se hayan definido correctamente.
El elemento <category> pasa a ser opcional.
● Nuevos elementos
<category> -- Es un nuevo sub-elemento opcional del <channel>.
<comments> -- Es un nuevo sub-elemento opcional del <item>. Es la dirección
web (URL) donde se encuentran los comentarios acerca del item.
<comments>http://www.uatsap.com/comentarios>
<generator> -- Es un nuevo sub-elemento opcional del <channel>. Programa
que ha generado el archivo RSS.
<author> -- Es un nuevo sub-elemento opcional del <item>. Especifica la
dirección de correo del autor del item. Para los periódicos o revistas que se
sindican via RSS, el autor es la persona que ha escrito el artículo.
<author> uatsap@uatsap.com (uatsap.com)</author>
<ttl> -- Es un nuevo sub-elemento opcional del <channel>. Define el tiempo de
vida del canal. Se expresa en minutos e indica cuánto tiempo el canal puede
guardarse en la caché antes de ser refrescado.
<ttl> 60 </ttl>
<pubdate> -- Es un nuevo sub-elemento opcional del <item>. Es una fecha que
indica cuándo el item fue publicado. Si la fecha es futura, los agregadores de
noticias pueden decidir no mostrarla hasta llegar a la fecha de publicación.
<guid> -- Es un nuevo sub-elemento opcional del <item>. Es un identificador
del número de item (similar al concepto de ID). Si está presente, un agregador
puede utilizarlo para decidir si el item es nuevo o no.
<guid> http://www.uatsap.com/rss10001 </guid>
Existe el atributo permalink, opcional y con valor por defecto a True, que si está
activado el agregador de notícias asume que el fichero puede ser abierto por
un navegador.
<guid isPermaLink="true"> http://www.uatsap.com/rss10001.php </guid>
21
25. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación RSS 2.0 20/05/05
● EJEMPLO RSS 2.0:
Mostramos un ejemplo simplificado de un fichero RSS 2.0 que consta de un
canal y dos elementos item:
<rss version="2.0">
<channel>
<title>Uats'ap. Noticias RSS.</title>
<link>http://www.uatsap.com</link>
<description> XML (Extensible Markup Language) es el formato universal
para datos en la web. XML permite fácilmente a los desarrolladores
describir y proporcionar contenido, datos estructurados para cualquier
aplicación de una forma estándard, XML no sustituye a HTML; es un
formato que lo complementa. </description>
<cloud domain="datos.uatsap.com" port="80" path="/RPC2"
registerProcedure="datos.rssNotificar" protocol="xml-rpc"/>
<docs>http://www.uatsap.com/docs</docs>
<generator>uatsap 1.0</generator>
<ttl>60</ttl>
<item>
<title> RSS Ficheros </title>
<link> http://www.uatsap.com </link>
<description> Obtén respuesta a tus preguntas acerca de los ficheros
RSS</description>
<source url="http://www.uatsap.com/music/uatsap.mp3" length="19917410"
type="audio/mpeg" />
<pubDate>Mon, 29 Sep 2003 06:57:42 GMT</pubDate>
</item>
<item>
<title> ¿Cómo sindicar noticias RSS? </title>
<link> http://www.uatsap.com </link>
<description> Manual para utilizar RSS y sindicar noticias en tu web
</description>
<source url="http://www.uatsap.com/music/radio.mp3" length="34518490"
type="audio/mpeg" />
<pubDate>Mon, 29 Sep 2003 06:58: GMT</pubDate>
</item>
</channel>
</rss>
22
26. Fernando Leandro Baladrón Proyecto fin de carrera
Especificación RSS 2.0 20/05/05
● Fuentes consultadas:
-Pagina en Español con mucha información sobre RSS. [en línea].
Encontraremos la especificación de los formatos muy detallada.
<http://www.uatsap.com/ > [fecha consulta 03 de marzo de 2005]
-RSS 2.0 Specification. RSS at Harvard Law. Autor Dave Winer. [en línea].
<http://blogs.law.harvard.edu/tech/rss> [fecha consulta 03 de marzo de 2005]
23
27. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño Base de Datos 6/04/05
3. Base de datos en DocuNews
Las ventajas de tener una base de datos son muchas. Para empezar
necesitamos de un recipiente donde poder almacenar nuestras noticias. Si
almacenamos la información correctamente luego conseguiremos interpretarla
y recuperarla de forma eficiente.
En esta Base de datos almacenaremos todas las noticias. La primera ventaja
es que cualquiera desde Internet, podrá consultar las noticias que solicite.
Otra de las ventajas es que al disponer de una base de datos podremos
realizar consultas delimitando por los diferentes campos que tiene una noticia.
Podremos, además, hacer un control de la redundancia de los datos, evitando
tener noticias duplicadas.
A continuación, se pasa a detallar el diseño de la base de datos DocuNews.
Una vez visto el diseño, veremos los procedimientos almacenados que tratan
esos datos, implementados sobre SQL Server.
3.1. Diseño de la base de datos
El apartado anterior y este van estrechamente ligados puesto que nos vamos a
basar en el Formato de Sindicación de Contenidos (RSS) a la hora de diseñar
la base de datos.
Partes en la que hemos dividido este apartado:
3.1.1) Análisis de Requerimientos.
3.1.2) Diseño Conceptual.
3.1.3) Diseño Lógico.
3.1.4) Diagrama UML.
3.1.1) Análisis Requerimientos:
Queremos diseñar una Base de datos para un Portal de Noticias.
Por un lado queremos almacenar las diferentes categorías (Canales) de
Noticias que vamos ha tener, de cada una de estas Categorías (Canales)
queremos almacenar los campos el titulo del Canal/Categoria (title), el link de
la dirección URL de la pagina web que genera el Canal/Categoria (link), la
descripción del Canal/Categoria (description), el idioma de la fuente de
información (language), el aviso legal del Canal/Categoria (copyright), el
correo electronico del editor del Canal/Categoria (managingEditor), el correo
electrónico del webmaster del Canal/Categoria para resolver problemas
técnicos (webMaster), la fecha de publicación del Canal/Categoria (pubDate),
la última fecha de actualización del Canal/Categoria (lastBuildDate), el nombre
24
28. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño Base de Datos 6/04/05
del programa que genera el archivo RSS, la dirección url donde se encuentra
la fuente información del Canal/Categoria (docs), avisos de cuando se
actualiza el Canal/Categoria (cloud), el tiempo de vida del Canal/Categoria
expresado en minutos, el PICS rating del Canal/Categoría (rating), la etiqueta
de la caja de texto del Canal/Categoria (textinput) , las horas en las que no
está disponible el Canal/Categoria (skipHours), Fechas en las que no está
disponible el Canal/Categoria (skipDays) y un codigo identificador (ID)
Además tendremos de cada Categoría(Canal) sus noticias, de dichas noticias
queremos saber su Título (title), el Canal/Categoría a la que queremos que
pertenezca (category), el link a la noticia en concreto (link), la descripción de
la noticia (description), el autor de la noticia (author), dirección url donde se
encuentran los comentarios acerca de la noticia (comments), descripción del
objeto de audio, video incluido en la noticia (enclosure), la fecha de
publicación de la noticia (pubDate), el nombre del canal RSS donde procede la
noticia (source). El factor de impacto que consideramos que ha tenido la
noticia (impacto) que será un valor del 1 al 10. Podremos además asociar una
imagen a la noticia. También se podrá concretar una serie de palabras clave
asociadas a la noticia. En caso de que no exista previamente el canal/categoría
al que se desea asociar la noticia, deberemos crear anteriormente el
canal/categoría. Para cada noticia tendremos un código identificador (ID).
Inicialmente, tendremos creadas 7 categorías: Noticias Destacadas, España,
Economía, Ciencia/Tecnología, Deportes, Espectáculos.
Cada Noticia pertenecerá a un Canal/Categoría
Y un Canal/Categoría puede tener muchas noticias.
Una palabra clave puede estar en muchas Noticias y una Noticia puede tener
varias palabras clave que la definan. Queremos tener almacenado las palabras
clave que tienen relación entre ellas. De esta forma, podemos saber todas las
Noticias relacionadas con un mismo tema, porque contendrán las mismas
palabras clave.
Además tenemos que tener en cuenta que una palabra clave puede estar a su
vez relacionada con otras palabras clave.
Cada noticia puede tener asociada una imagen, y esa imagen esta asociada a
una noticia.
De las imágenes queremos saber la descripción de la imagen, el nombre, la
dirección donde esta almacenada la imagen y la imagen en si.
También tendremos los Administradores/usuarios del sistema, donde
guardaremos el nombre y los apellidos, el perfil, su login, password y la
dirección de la fotografía del usuario.
25
29. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño Base de Datos 6/04/05
Cada usuario podrá generar muchas noticias y cada noticia pertenecerá a un
solo usuario, las noticias sólo podrán ser modificadas por su autor , o por el
súper-usuario (Administrador general).
Queremos guardar la Versión del sistema, donde guardaremos el código de la
versión, y las mejoras conseguidas en esa nueva versión, y la fecha de
creación de la versión.
Tendremos además una tabla menú donde almacenaremos las diferentes
secciones que queremos tener en nuestra pagina web con la imagen que
queramos asociar a cada una de las opciones.
Otra Tabla del sistema será la tabla Búsqueda donde almacenaremos todas las
búsquedas que hagan nuestros usuarios, de esta forma podremos más
adelante estudiar cuales son las palabras más buscadas y detectar cuales no
devuelven ningún resultado, etc.., en esta tabla queremos almacenar el valor
de la búsqueda y la Fecha de la búsqueda.
3.1.2) Diseño Conceptual utilizando el modelo Entidad-Relación:
26
31. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño Base de Datos 6/04/05
Usuario (USU_ID: INTEGER(4), USU_nombre: CHAR(50), USU_apellidos:
VARCHAR(50), USU_perfil: VARCHAR(15), USU_login: VARCHAR(10),
USU_Password: VARCHAR(8), USU_imagen: VARCHAR(50)
CP: {USU_ID)
VNN:{USU_Nombre, USU_login, USU_password}
Version ( Version: INTEGER(4), DescripcionMejora: VARCHAR(100), Fecha:
DATETIME)
CP: {Version}
VNN:{DescripcionMejora, Fecha}
Menu (MEN_ID: INTEGER(4), MEN_nombre: CHAR(25), MEN_img:
VARCHAR(50))
CP: {MEN_ID)
VNN:{MEN_Nombre}
Busqueda ( BUS_ID: INTEGER(4), BUS_Valor: VARCHAR(25), BUS_Fecha:
DATETIME)
CP: {BUS_ID}
VNN:{BUS_Valor, BUS_Fecha}
Implementando esto en un SGBD como puede ser SQL Server:
28
32. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño Base de Datos 6/04/05
2.4) Diagrama UML
Para realizar el diagrama UML hemos utilizado la herramienta Microsoft Visio,
la cual nos ha permitido dibujar de acuerdo al estandar UML.
24
33. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
3.2. PROCEDIMIENTOS ALMACENADOS EN SQL SERVER.
3.2.1 BASE DE DATOS EN DOCUNEWS.
Como hemos comentado anteriormente, la Base de Datos es una parte
fundamental en el desarrollo de nuestra aplicación. DOCUNEWS se trata de
una Biblioteca de Noticias, y como tal debe almacenar gran cantidad de
noticias y datos que sean de necesidad para el usuario. Pues bien, esa gran
cantidad de datos que nuestra aplicación debe tratar están guardados, o mejor
dicho, son tratados en una Base de Datos.
3.2.2 ¿PORQUÉ SQL Server?
Como ya introdujimos, nuestra Base de Datos está implementada con SQL
Server, producto de Microsoft Corporation.
El motivo de haber elegido este tipo de base de datos y no otro fue
simplemente por cuestión de comodidad y de probar una herramienta nueva.
Además del prestigio que aporta esta herramienta, el elegir SQL Server fue
además por la facilidad que aportaba el Visual Studio .NET.
Visual Studio .NET ofrece unas facilidades para trabajar con SQL que
permiten realizar todo tipo de trabajos con mucha facilidad, ya que dispone de
asistentes para crear todo tipo de consultas. Además, permite introducir
lenguajes SQL en el mismo código vb .Net.
Además de las facilidades que aporta el trabajar con SQL Server el Visual
Studio, también hay que hablar de la facilidad a la hora de implementar la
propia base de datos. SQL Server permite crear toda la estructura de la Base
de Datos de forma cómoda y sencilla, con una interfaz amigable y fácil de
entender. Para ver como está construida la Base de Datos, consultar el punto
de diseño de la base de datos.
Lógicamente, con el SQL Server no es todo tan sencillo. Para poder trabajar
con esta herramienta es también necesario conocer las propias características
que posee, como se accede a las tablas, como dejarlas en estado seguro, etc.
Para ello se dispone de las Conexiones.
3.2.3 CONEXIONES EN SQL Server.
Para crear conexiones para acceder a los datos es necesario utilizar las
clases SqlConnection para conectarse y desconectarse de una base de datos.
Para crear una conexión a una base de datos es necesaria la introducción
de una serie de parámetros como mostramos en el siguiente ejemplo:
30
34. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
Sqlconnection.connectionstring = “user id =idusuario; pwd=pwdusuario;
initial catalog=bdname; Data Source = localhost; Connect TimeOut = 30”;
Explicaremos brevemente cuales son los parámetros que componen la
conexión a una base de datos:
- SqlConnection.ConnectionString es una clase ya creada. Es necesaria
siempre que queramos crear una nueva conexión con una base de
datos.
- User id: este parámetro indica el nombre de usuario. Es posible crear un
usuario nuevo o utilizar el que nos ofrece por defecto “User ID”.
- Pwd: Representa la contraseña del usuario. También se puede omitir
este parámetro no introduciendo nada.
- Initial catalog: Este parámetro describe la instancia de base de datos a la
que hay que conectarse.
Una vez la conexión a la base de datos ya está establecida debemos
abrirla o cerrarla cuando queramos trabajar con ella o hayamos terminado. Esto
es una ventaja ya que permite trabajar con los datos teniendo la conexión
cerrada y abrirla para hacer la modificación en la base de datos. Los comandos
para abrir y cerrar la conexión son:
- Sqlconnection.open para abrir la conexión.
- Sqlconnection.close para cerrar la conexión.
Es conveniente tener en cuenta estos dos comandos, ya que, abrir y cerrar la
conexión inadecuadamente puede dejar la base de datos en estado inseguro.
3.2.4 Ejemplos procedimientos implementados.
Los procedimientos almacenados son un conjunto precompilado de
instrucciones Transact-SQL almacenadas bajo un solo nombre y procesadas
como una unidad. Los procedimientos almacenados pueden recibir parámetros
en base a los cuales realizar distintas acciones.
La utilización de procedimientos almacenados en nuestras aplicaciones aporta
multitud de ventajas, entre las que podemos destacar las siguientes:
Rendimiento
Los procedimientos almacenados son analizados y optimizados en el momento
de su creación, a diferencia de las instrucciones Transact-SQL, que deben ser
analizadas, compiladas y optimizadas cada vez que son enviadas por el cliente.
Además, el motor de SQL Server es capaz de reutilizar el plan de ejecución del
procedimiento almacenado que se encuentra en la memoria (caché de
procedimientos) después de haberse ejecutado una primera vez.
31
35. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
Reducción del tráfico de red
Una sentencia formada por decenas, cientos o incluso miles de líneas de
código Transact-SQL puede escribirse como un procedimiento almacenado en
el servidor y ejecutarse simplemente mediante el nombre de dicho
procedimiento, en lugar de enviar todas las líneas de código por la red desde el
cliente hasta el servidor (ésta reducción del tráfico de red será especialmente
significativa en redes no muy veloces, como por ejemplo, algunas redes WAN).
Seguridad
Los procedimientos almacenados facilitan algunas tareas de administración de
seguridad y asignación de permisos. Por ejemplo, se puede conceder permiso
a un usuario para ejecutar un determinado procedimiento almacenado, aunque
el usuario no disponga de los permisos necesarios sobre los objetos afectados
por las acciones individuales de dicho procedimiento.
Encapsulación
Los procedimientos almacenados encapsulan gran parte de la lógica de los
datos a las aplicaciones que los utilizan. Por ejemplo, una aplicación puede
llamar al procedimiento almacenado CategoriaBorrar sin conocer cómo
funciona internamente éste proceso (transacciones e instrucciones Transact-
SQL utilizadas, tablas afectadas, etc.)
Programación modular
Los procedimientos almacenados se crean una sóla vez, se almacenan en la
base de datos y se ejecutan desde las aplicaciones cliente tantas veces como
sea necesario. Además, en caso de detectarse un error en un procedimiento
almacenado, éste podrá ser reparado por el administrador de la base de datos
desde el servidor sin afectar -y probablemente, volver a compilar- a las
aplicaciones cliente
A continuación, mostramos los procedimientos almacenados con los que
hemos trabajado, los hemos clasificado según la clase con la que van ha
trabajar.
Busqueda
BusquedaInsertar
BusquedaObtener
Categoria
CategoriaBuscar
CategoriaCargar
CategoriaBorrar
CategoriaInsertar
CategoriaModificar
CategoriaObtener
CategoriaObtenerIndice
CategoriaObtenerTitle
CategoriaXML
32
36. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
Imagen
ImagenBorrar
ImagenBorrarTodas
ImagenInsertar
ImagenModificar
ImagenObtener
Noticia
NoticiaDeCategoria
NoticiaInsertar
NoticiaModificar
NoticiaObtener
NoticiaObtenerUlt
NoticiaRSS
Palabras Clave
PClaveBorrar
PClaveInsertar
PClaveModificar
Palabras Clave Relacionadas
PClaveRELborrar
PClaveRELinsertar
PClaveRELNoticiaborrar
PClaveRELObtener1
PClaveRELObtenerT
Usuario
UsuarioBorrar
UsuarioInsertar
UsuarioLogin
UsuarioModificar
UsuarioObtener
UsuarioObtenerLogin
A continuación, vamos a mostrar un ejemplo de cada uno de los tipos posibles,
un ejemplo de borrado, de inserción, modificado y de consulta.
-Ejemplo de borrado : borra una categoria en concreto
CREATE PROCEDURE CategoriaBorrar
(
@ID int
)
AS
DELETE
FROM Categoria
WHERE CAT_ID=@ID
GO
33
37. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
-Ejemplo de inserción: Insertar una Noticia
CREATE PROCEDURE NoticiaInsertar
(
@guid int OUTPUT,
@title nvarchar(250),
@link nvarchar(250),
@description nvarchar(500),
@comments nvarchar(50),
@pubDate datetime,
@source nvarchar(50),
@IMPACTO int,
@CAT_ID int,
@USU_ID int
)
AS
Insert INTO Noticia
(
NOT_title,
NOT_link,
NOT_description,
NOT_comments,
NOT_pubDate,
NOT_source,
NOT_IMPACTO,
NOT_CAT_ID,
USU_ID
)
values
(
@title,
@link,
@description,
@comments,
@pubDate,
@source,
@IMPACTO,
@CAT_ID,
@USU_ID
)
select @guid=@@identity
GO
34
38. Fernando Leandro Baladrón Proyecto fin de carrera
Procedimientos Almacenados 20/05/05
-Ejemplo de modificado: Modificar los datos del usuario
CREATE PROCEDURE UsuarioModificar
(
@ID int OUTPUT,
@Nombre nvarchar(50),
@Apellidos nvarchar(50),
@Perfil nvarchar(15),
@Login nvarchar(10),
@Password nvarchar(8),
@Imagen image
)
AS
UPDATE Usuario
SET
USU_Nombre=@Nombre,
USU_apellidos=@Apellidos,
USU_perfil=@Perfil,
USU_Login=@Login,
USU_Password=@Password,
USU_Imagen=@Imagen
WHERE USU_ID=@ID
GO
-Ejemplo de consulta: Obtiene las palabras Clave de una noticia en concreto.
CREATE PROCEDURE PClaveRELobtenerT
(
@NoticiaID int
)
AS
select NX.NOT_guid, NX.Pal_id, PX.PAL_nombre
from Not_REL_Pal NX, Palabra_Clave PX
where NX .NOT_guid=@NoticiaID
and PX.PAL_ID=NX.Pal_id
GO
35
39. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
4. DISEÑO INTERFACE
Dentro de este apartado, vamos ha tener en cuenta dos aspectos: por un lado
con que clases hemos trabajado en Visual Studio y después pasaremos ha
comentar el código implementado en ASP .NET subrayando los detalles de la
programación desarrollada y explicando cuestiones tales como qué son los
controles de usuario.
4.1. Clases
Visual Basic .NET ofrece herencia, interfaces y sobrecarga, que lo convierten
en un eficaz lenguaje de programación orientado a objetos.
Visual Basic .NET admite el concepto de herencia y le permite definir clases
que sirven de base para las clases derivadas. Las clases derivadas heredan, y
pueden extender, las propiedades y los métodos de la clase base. También
pueden reemplazar métodos heredados con nuevas implementaciones. De
forma predeterminada, todas las clases creadas con Visual Basic .NET son
heredables. Puesto que los formularios que diseña son realmente clases,
puede utilizar la herencia para definir nuevos formularios basados en
formularios existentes.
Un objeto es una combinación de código y datos que puede tratarse como una
unidad. Un objeto puede ser una porción de una aplicación, como un control o
un formulario. Una aplicación entera también puede ser un objeto.
Los objetos permiten declarar variables y procedimientos una vez y utilizarlos
siempre que sean necesarios. Por ejemplo, si desea agregar un corrector
ortográfico a una aplicación, puede definir todas las variables y funciones
auxiliares para proporcionar a la aplicación funcionalidad de corrección
ortográfica. No obstante, si crea el corrector ortográfico como una clase, puede
volver a utilizarlo en otras aplicaciones mediante la inclusión de una referencia
en el ensamblado compilado. Aún mejor, tal vez pueda ahorrarse trabajo
mediante el uso de una clase de corrector ortográfico que otra persona ya ha
desarrollado.
Cada objeto de Visual Basic .NET se define mediante una clase. Las clases
describen los campos, propiedades, métodos y eventos de un objeto. Los
objetos son instancias de clases.
Nosotros particularmente, hemos trabajado con 6 clases:
1) CLSbusqueda : Clase creada para trabajar con las búsquedas.
2) CLScategoria: Clase creada para trabajar con las categorías.
3) CLSImagen: Clase creada para trabajar con las imágenes.
4) CLSNoticia: Clase creada para trabajar con las noticias.
5) CLSPalabra: Clase creada para trabajar con las palabras Clave.
6) CLSUsuario: Clase creada para trabajar con los usuarios.
36
40. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
Comentar como se muestra en la imagen que son los objetos los que acceden
a los Datos, todo el código de acceso a la Base de datos se encuentra en el
objeto.
En todos los constructores de las clases se crea la conexión a la Base de
datos:
Public Sub New()
miconn = New SqlClient.SqlConnection
'creo los parametros de la conexion
Try
miconn.ConnectionString = "Data Source=.;" & _
"Initial Catalog=DocuNews;" & _
"Integrated Security=true"
Catch ex As Exception
RaiseEvent errorSQL(ex, "utilidad ADO conectar")
End Try
End Sub
1) Clase Búsqueda: En esta clase se controlan las búsquedas que realizan los
usuarios para de esta forma almacenarlas en la base de datos.
En todas las clases siempre se hace lo mismo: primero declaramos las campos
que va ha tener, y después los métodos.
Private _ID As Integer
Private _Valor As String 'busqueda que ha hecho el usuario
Private _Fecha As Date 'fecha actual
Private _IP As string 'dirección IP del ordenador
Public Property Valor() As String
Get
Return _Valor
End Get
Set(ByVal Value As String)
37
41. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
_Valor = Value
End Set
End Property
Esto sería un ejemplo de una de las funciones que tiene implementada la clase
búsqueda, esta función llama al procedimiento almacenado “BusquedaInsertar”
de la base de datos donde le pasa como entrada el valor de la búsqueda, la
fecha actual y la IP del que está realizando la búsqueda. Es importante resaltar
que es la clase la que llama al procedimiento almacenado para la inserción.
Public Function insertarBusqueda(ByVal BUS_ID As Integer, ByVal BUS_Valor As
String, ByVal BUS_Fecha As Date, ByVal BUS_Valor As String)
Try
Dim cmdOrden As New SqlCommand
cmdOrden.CommandType = CommandType.StoredProcedure
'Nombre del procedimiento almacenado de la Base de Datos
cmdOrden.CommandText = "BusquedaInsertar"
cmdOrden.Connection = miconn
Dim p As New SqlParameter("@Id", SqlDbType.Int, 4)
Dim p1 As New SqlParameter("@Valor", SqlDbType.NVarChar, 25)
Dim p2 As New SqlParameter("@Fecha", SqlDbType.DateTime)
Dim p3 As New SqlParameter("@IP", SqlDbType.NVarChar, 25)
'BUS_ID
If BUS_ID <> Nothing Then
p.Value = BUS_ID
Else
p.Value = System.DBNull.Value
End If
'BUS_valor
If BUS_Valor <> Nothing Then
p1.Value = BUS_Valor
Else
p1.Value = System.DBNull.Value
End If
'BUS_Fecha
If IsDate(BUS_Fecha) Then
p2.Value = BUS_Fecha
Else
p2.Value = System.DBNull.Value
End If
'BUS_IP
If IsDate(BUS_IP) Then
p2.Value = BUS_IP
Else
p2.Value = System.DBNull.Value
End If
cmdOrden.Parameters.Add(p)
cmdOrden.Parameters.Add(p1)
cmdOrden.Parameters.Add(p2)
cmdOrden.Parameters.Add(p3)
'si esta ya abierta la conexión no es necesario volverla abrir
If miconn.State <> 1 Then
miconn.Open()
End If
midatar = cmdOrden.ExecuteReader()
Catch ex As Exception
38
42. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
Finally
midatar.Close()
End Try
End Function
2) Clase Categoria:
En esta clase controlo las categorías.
Por un lado declaro los campos con su tipo:
Private _ID As Integer
Private _title As String
Private _link As String
Private _description As String
Private _language As String
Private _copyright As String
Private _managingeditor As String
Private _webmaster As String
Private _pubdate As Date
Private _lastbuilddate As String
Private _generator As String
Private _docs As String
Private _cloud As String
Private _ttl As Integer
Private _image As String
Private _rating As String
Private _textinput As String
Private _skipHours As String
Private _skipDays As String
Y por el otro las funciones:
obtenerCategoria, eliminarCategoria, insertarCategoria y modificarCategoria.
39
43. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
Como ejemplo vamos a mostrar obtenerCategoria y borrarCategoria.
Public Function obtenerCategoria(ByVal Id As Integer) As Boolean
Try
'Ejecuta el procedimiento almacenado CategoriaObtener
Dim cmdOrden As New SqlCommand
cmdOrden.CommandType = CommandType.StoredProcedure
cmdOrden.CommandText = "CategoriaObtener"
cmdOrden.Connection = miconn
Dim p As New SqlParameter("@Id", SqlDbType.Int, 4)
p.Value = Id
cmdOrden.Parameters.Add(p)
'si esta ya abierta la conexión no es necesario volverla abrir
If miconn.State <> 1 Then
miconn.Open()
End If
midatar = cmdOrden.ExecuteReader()
While midatar.Read()
_title = midatar(1)
_link = midatar(2)
_description = midatar(3)
_language = midatar(4)
_copyright = midatar(5)
_managingeditor = midatar(6)
_webmaster = midatar(7)
_pubdate = midatar(8)
_lastbuilddate = midatar(9)
_generator = midatar(10)
_docs = midatar(11)
_cloud = midatar(12)
_ttl = midatar(13)
_image = midatar(14)
_rating = midatar(15)
_textinput = midatar(16)
_skipHours = midatar(17)
_skipDays = midatar(18)
End While
Return True
Catch ex As Exception
Return False
Finally
midatar.Close()
End Try
End Function
40
44. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
Ver como en realidad esta función lo único que hace es llamar a un
procedimiento que esta en la Base de Datos que se llama “CategoriaBorrar”
pasandole el identificador de la categoria que se desea borrar.
Public Function borrarCategoria(ByVal Id As Integer) As Boolean
Try
'Ejecuta el procedimiento almacenado CategoriaBorrar
Dim s As String
Dim cmdOrden As New SqlCommand
cmdOrden.CommandType = CommandType.StoredProcedure
cmdOrden.CommandText = "CategoriaBorrar"
cmdOrden.Connection = miconn
Dim p As New SqlParameter("@Id", Id)
cmdOrden.Parameters.Add(p)
'miconn.Open()
midatar = cmdOrden.ExecuteReader()
Return True
Catch ex As Exception
Return False
Finally
midatar.Close()
End Try
End Function
3) Clase imagen: Prácticamente ya hemos comentado todos los conceptos
importantes en las dos clases anteriores.
Por un lado los campos:
Private _ID As Integer
Private _description As String
Private _nombre As String
Private _url As String
Private _IMA_NOT_GUID As Integer
Private _imagen As Byte()
Y luego los métodos:
-obtenerImagen , borrarImagen, insertarImagen, modificarImagen.
Como ya hemos puesto un ejemplo de obtener, de borrar y de insertar vamos
ha poner un último ejemplo con modificar, de todas formas es muy parecida a
la de insertar.
41
45. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
Public Function modificarImagen(ByVal IMA_ID As Integer, ByVal
IMA_descripcion As String, ByVal IMA_Nombre As String, ByVal IMA_url
As String, ByVal IMA_NOT_GUID As Integer, ByVal IMA_imagen() As Byte)
Try
Dim cmdOrden As New SqlCommand
cmdOrden.CommandType = CommandType.StoredProcedure
cmdOrden.CommandText = "ImagenModificar"
cmdOrden.Connection = miconn
Dim p As New SqlParameter("@Id", SqlDbType.Int, 4)
Dim p1 As New SqlParameter("@Descripcion", SqlDbType.NVarChar, 255)
Dim p2 As New SqlParameter("@Nombre", SqlDbType.NVarChar, 25)
Dim p3 As New SqlParameter("@Url", SqlDbType.NVarChar, 100)
Dim p4 As New SqlParameter("@NoticiaID", SqlDbType.Int, 4)
'Ojo importante no especificarle el numero de bits a la imagen
Dim p5 As New SqlParameter("@Imagen", SqlDbType.Image)
'IMA_id
If IMA_ID <> Nothing Then
p.Value = IMA_ID
Else
p.Value = System.DBNull.Value
End If
'IMA_descripcion
If IMA_descripcion <> Nothing Then
p1.Value = IMA_descripcion
Else
p1.Value = System.DBNull.Value
End If
'IMA_nombre
If IMA_Nombre <> Nothing Then
p2.Value = IMA_Nombre
Else
p2.Value = System.DBNull.Value
End If
'IMA_url
If IMA_url <> Nothing Then
p3.Value = IMA_url
Else
p3.Value = System.DBNull.Value
End If
'IMA_NOT_GUID
If IMA_NOT_GUID <> Nothing Then
p4.Value = IMA_NOT_GUID
Else
p4.Value = System.DBNull.Value
End If
'IMA_Imagen
If Not (IMA_imagen Is Nothing) Then
42
46. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
p5.Value = IMA_imagen
Else
p5.Value = System.DBNull.Value
End If
cmdOrden.Parameters.Add(p)
cmdOrden.Parameters.Add(p1)
cmdOrden.Parameters.Add(p2)
cmdOrden.Parameters.Add(p3)
cmdOrden.Parameters.Add(p4)
cmdOrden.Parameters.Add(p5)
midatar = cmdOrden.ExecuteReader()
Catch ex As Exception
Finally
midatar.Close()
End Try
End Function
4) Clase Noticia: esta clase se encarga de trabajar con las noticias,
tendremos declarados todos los campos que tiene una noticia y además los
métodos, tales como insertarNoticia, borrarNoticia, modificarNoticia,
ObtenerNoticia
Private _guid As Integer
Private _title As String
Private _link As String
Private _description As String
Private _comments As String
Private _pubdate As Date
Private _source As String
Private _impacto As Integer
Private _CAT_ID As Integer
Private _USU_ID As Integer
A continuación, mostramos la funcion ObtenerNoticiasRel lo que hace es que
para una noticia en concreto con una palabras clave asignadas me obtiene
aquellas noticias que tienen alguna de esas palabras clave.
Además es interesante como ejemplo, ya que esta vez no llamamos a un
procedimiento almacenado, sino que ejecutamos directamente sobre la base
de datos una consulta SQL.
Public Function obtenerNoticiaREL(ByVal Id As Integer) As DataSet
Try
Dim miadapter As New SqlDataAdapter
dstUtilidad = New DataSet
Dim SQL As String
Dim SQL2 As String
'si esta ya abierta la conexión no es necesario volverla abrir
43
47. Fernando Leandro Baladrón Proyecto fin de carrera
Diseño interface 20/05/05
If miconn.State <> 1 Then
miconn.Open()
End If
'Palabras clave relacionadas con la noticia
SQL = "select NX.NOT_guid, NX.Pal_id, PX.PAL_nombre " & _
"from Not_REL_Pal NX, Palabra_Clave PX " & _
"where NX.NOT_guid='" & Id & "' " & _
"and PX.PAL_ID=NX.Pal_id"
'Listado de noticias relacionadas con las Palabras clave de la noticia
SQL2 = "select NX.NOT_guid, NX.NOT_title,NX.NOT_Link, " &
_
"NX.NOT_Description, NX.NOT_Comments,NX.NOT_PubDate, " & _
"NX.NOT_source, NX.NOT_IMPACTO " & _
"from Noticia NX, NOT_REL_PAL PX " & _
"where(NX.NOT_guid = PX.NOT_guid)" & _
"and NX.NOT_guid <>'" & Id & "' " & _
"and PX.PAL_ID IN (select PY.Pal_id " & _
"from Noticia NY, Not_REL_Pal PY " & _
"where NY.NOT_guid='" & Id & "' " & _
"and NY.NOT_guid=PY.NOT_guid)"
'PRIMER SELECT rellenamos el dataset “NoticiasREL”
Dim miorden As New SqlCommand(SQL, miconn)
miadapter.SelectCommand = miorden
miadapter.Fill(dstUtilidad, "NoticiaREL")
'SEGUNDO SELECT rellenamos el dataset “NoticiasRELNoticia”
Dim miorden2 As New SqlCommand(SQL2, miconn)
miadapter.SelectCommand = miorden2
miadapter.Fill(dstUtilidad, "NoticiaRELNoticia")
obtenerNoticiaREL = dstUtilidad
Catch ex As Exception
RaiseEvent errorSQL(ex, "sorry")
End Try
End Function
Las dos clases que quedan por explicar nos las vamos a desarrollar puesto que
el código es equivalente a lo mostrado anteriormente.
5) La clase palabras clave: en esta clase tenemos todo lo relacionado a las
palabras clave. Insertar/borrar/eliminar palabras clave. Además del metodo que
se encarga de asociar/quitar una palabra clave a una noticia.
6) La clase usuario: en este caso es la que se encargará de gestionar los
usuarios, esta clase tendrá definidos los métodos: borrarUsuario,
modificarUsuario, insertarUsuario y obtenerUsuario.
44
48. Fernando Leandro Baladrón Proyecto fin de carrera
Programación ASP .NET 20/05/05
4.2. PROGRAMACIÓN ASP .NET
A continuación presentaremos algunos fragmentos de código interesantes,
usados en nuestra aplicación.
Lo primero que consideramos interesante es mostrar los ficheros con los que
hemos trabajado:
Fig.1.Listado de ficheros
Por un lado las Clases, por otro lado los controles de usuario y finalmente el
formulario principal default.aspx que es el que gestiona lo que se debe cargar
en cada momento.
45
49. Fernando Leandro Baladrón Proyecto fin de carrera
Programación ASP .NET 20/05/05
Para la implementación del portal web DOCUNEWS hemos utilizado la
herramienta Microsoft Visual Studio, en concreto, el lenguaje de programación
VB .NET.
4.2.1 PÁGINA PRINCIPAL (default.aspx).
Fig.2 Estructura de la pagina principal (default.aspx)
La página principal esta compuesta de 5 partes, parte superior, parte central
izquierda, parte central derecha, centro y parte inferior.
En la parte superior, tenemos 3 controles, uno para el logo y la fuente de
autoría de la página. Otro para el login y un último control para el menú
horizontal de las categorías.
En la parte central izquierda tenemos otros 3 controles, uno para el menú
vertical de las categorías, otro para la búsqueda y un último control para el
calendario.
En el centro, según nos interese, cargaremos un control u otro. Estos
controles, a diferencia que los anteriores, los cargaremos por código.
Para la parte central derecha la forma de trabajar es la misma que para el
centro: cargaremos un control u otro dependiendo de nuestros intereses.
Lo siguiente que vamos a comentar son los controles de usuario.
46
50. Fernando Leandro Baladrón Proyecto fin de carrera
Programación ASP .NET 20/05/05
4.2.2 CONTROLES DE USUARIO
Los controles de usuario ofrecen una forma sencilla de dividir y reutilizar
funciones de interfaz de usuario comunes entre las aplicaciones Web
ASP.NET.
Gracias a los controles de usuario nos podemos crear fácilmente nuestros
propios controles personalizados y reutilizables.
Los que hemos utilizado han sido:
-CtrBuscar.ascx
-CtrCalendar.ascx
-CtrListarNoticias.ascx
-CtrMenu.ascx
-CtrNoticiaCategorias.ascx
-CtrNoticiaAsociarP.ascx
-CtrNoticiaInsertar.ascx
-CtrNoticiaModificar.ascx
-CtrNoticiaObtner.ascx
-CtrPie.ascx
-CtrRightNotRel.ascx
-CtrRigthPane.ascx
-CtrTitulo.ascx
Hay dos formas de cargar un control, la primera sería indicándoselo en el
código html de la siguiente forma:
Al principio de la página ponemos el siguiente código:
<%@Register TagPrefix="Control" TagName="Menu" Src="CtrMenu.ascx"%>
<%@Register TagPrefix="Control" TagName="Buscar"
Src="CtrBuscar.ascx"%>
<%@Register TagPrefix="Control" TagName="Calendar"
Src="CtrCalendar.ascx"%>
y luego desde una celda lo cargamos:
<td id="LeftPane3" vAlign="top" align="left" width="20%" runat="server">
<CONTROL:CALENDAR id="Calendar1" runat="server"></CONTROL:CALENDAR>
</td>
Otra de las formas de cargar un control es como, ya he comentado
anteriormente, mediante código:
If IsNumeric(Request.Params("OP")) Then
Select Case Request.Params("OP")
Case 1
'abrimos el formulario de insercción de Noticias
CenterPane.Controls.Add(Page.LoadControl("CtrNoticiaInsertar.ascx"))
47
51. Fernando Leandro Baladrón Proyecto fin de carrera
Programación ASP .NET 20/05/05
Case 2
'abrimos el formulario de modificiación de noticias
CenterPane.Controls.Add(Page.LoadControl("CtrNoticiaModificar.ascx"))
Case 3
'abrimos el formulario de Asociación de PClave
CenterPane.Controls.Add(Page.LoadControl("CtrNoticiaAsociarP.ascx"))
End Select
En el ejemplo se carga en el centro un control u otro dependiendo del valor de
la variable “OP”.
4.2.3. INSERCIÓN DE LAS NOTICIAS
Empezaremos introduciendo el código implementado para la introducción de
nuevos grupos en nuestra base de datos. Utilizaremos este ejemplo para
mostrar como hemos ido guardando los diferentes datos en nuestra base de
datos mediante parámetros.
FormNoticiaInsertar.ascx
Fig.3 Diseño del formulario de inserción de Noticias
Hemos trabajado con RequiredFieldValidator para validar los diferentes
campos.
48