SlideShare ist ein Scribd-Unternehmen logo
1 von 126
Downloaden Sie, um offline zu lesen
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Fernando Leandro Baladrón                            Proyecto fin de carrera
Diseño Base de Datos                                                6/04/05




3.1.3) Diseño Logico:

Categoria (CAT_ID: INTEGER(4), CAT_title: VARCHAR(25), CAT_link:
NUMBER(4), CAT_description: VARCHAR(25), CAT_language: CHAR(10),
CAT_copyright: VARCHAR(25), CAT_managingeditor: VARCHAR(50),
CAT_webmaster: VARCHAR(25), CAT_pubdate: DATETIME,
CAT_lastbuilddate: DATETIME, CAT_generator: VARCHAR(25), CAT_docs..)
CP: {CAT_ID}
VNN:{CAT_title, CAT_description, CAT_pubdate}

Noticia (NOT_guid: INTEGER(4), NOT_title: VARCHAR(250), NOT_link:
varchar(250), NOT_descripcion: VARCHAR(250), NOT_comments:
VARCHAR(100), NOT_pubdate: DATETIME, NOT_source: VARCHAR(50),
NOT_impacto: INTEGER, NOT_CAT_ID: INTEGER(4), USU_ID:INTEGER(4))
CP:{NOT_GUID}
C.Aj: {NOT_CAT_ID }→Categoria
C.Aj: {USU_ID }→Usuario
VNN: {NOT_title, NOT_description,NOT_CAT_ID,NOT_pubdate}

Palabra_Clave (PAL_ID: INTEGER(4), PAL_Nombre: VARCHAR(50))
CP:{PAL_ID}
VNN:{PAL_Nombre}


Not_REL_Pal (REL_ID: INTEGER(4), PAL_ID: INTEGER(4), Not_guid:
INTEGER(4)}
CP: {REL_ID)
Uni: {PAL_ID,NOT_GUID}
C.Aj: {PAL_ID }→Palabras_Clave
       { Not_guid }→Noticia


Imagen (IMA_ID: INTEGER(4), IMA_descripcion: VARCHAR(100),
IMA_Nombre:VARCHAR(25), IMA_url: VARCHAR(100), IMA_NOT_ID:
INTEGER(4), IMA_Imagen: Binary)
CP:{IMA_ID}
C.Aj: {IMA_NOT_ID }→Noticia
VNN:{url, IMA_NOT_ID, IMA_Imagen}



Pal_REL_Pal ( PAL_ID1: INTEGER(4), PAL_ID2: INTEGER(4)}
CP: {PAL_ID1, PAL_ID2 )
C.Aj: {PAL_ID1}→Palabras_Clave
      {PAL_ID2}→Palabras_Clave


                                                                        27
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews
Portal de Noticias DocuNews

Weitere ähnliche Inhalte

Andere mochten auch

Los comienzos de la labor del opus dei con universitarias la residencia zurba...
Los comienzos de la labor del opus dei con universitarias la residencia zurba...Los comienzos de la labor del opus dei con universitarias la residencia zurba...
Los comienzos de la labor del opus dei con universitarias la residencia zurba...Opus Dei
 
Kam. 28 agost setembre 1998
Kam. 28 agost setembre 1998Kam. 28 agost setembre 1998
Kam. 28 agost setembre 1998Nombre Apellidos
 
Ppt Cap 8
Ppt Cap 8Ppt Cap 8
Ppt Cap 8uv_sio
 
Informe praes sandra latorre
Informe praes sandra latorreInforme praes sandra latorre
Informe praes sandra latorreSelf-Employed
 
Talleres navideños 2010-2011
Talleres navideños 2010-2011Talleres navideños 2010-2011
Talleres navideños 2010-2011ampamonroyo
 
Presentaciondenegocios
PresentaciondenegociosPresentaciondenegocios
Presentaciondenegociosfdocarrera
 
Nociones gestion-talento-humano
Nociones gestion-talento-humanoNociones gestion-talento-humano
Nociones gestion-talento-humanoYuliana Gutierrez
 
Estilos De Aprendizaje de Zea
Estilos De Aprendizaje de ZeaEstilos De Aprendizaje de Zea
Estilos De Aprendizaje de Zeaargemiro
 
Tema Iii Odo 061 Uce Enero Abril 2010
Tema Iii Odo 061 Uce  Enero  Abril 2010Tema Iii Odo 061 Uce  Enero  Abril 2010
Tema Iii Odo 061 Uce Enero Abril 2010Milagros Daly
 
Curso de inv de mercados
Curso de inv de mercadosCurso de inv de mercados
Curso de inv de mercadosjesus
 

Andere mochten auch (20)

Slideshare
SlideshareSlideshare
Slideshare
 
Los comienzos de la labor del opus dei con universitarias la residencia zurba...
Los comienzos de la labor del opus dei con universitarias la residencia zurba...Los comienzos de la labor del opus dei con universitarias la residencia zurba...
Los comienzos de la labor del opus dei con universitarias la residencia zurba...
 
Derechos humanos
Derechos humanosDerechos humanos
Derechos humanos
 
Kam. 28 agost setembre 1998
Kam. 28 agost setembre 1998Kam. 28 agost setembre 1998
Kam. 28 agost setembre 1998
 
2012 cursoinfectologia 3
2012 cursoinfectologia 32012 cursoinfectologia 3
2012 cursoinfectologia 3
 
Norma alcantarillado 1975
Norma alcantarillado 1975Norma alcantarillado 1975
Norma alcantarillado 1975
 
guia 4to
guia 4toguia 4to
guia 4to
 
Ppt Cap 8
Ppt Cap 8Ppt Cap 8
Ppt Cap 8
 
Informe praes sandra latorre
Informe praes sandra latorreInforme praes sandra latorre
Informe praes sandra latorre
 
Talleres navideños 2010-2011
Talleres navideños 2010-2011Talleres navideños 2010-2011
Talleres navideños 2010-2011
 
Presentaciondenegocios
PresentaciondenegociosPresentaciondenegocios
Presentaciondenegocios
 
Social Net
Social NetSocial Net
Social Net
 
Nociones gestion-talento-humano
Nociones gestion-talento-humanoNociones gestion-talento-humano
Nociones gestion-talento-humano
 
Es JesúS Suficiente
Es JesúS SuficienteEs JesúS Suficiente
Es JesúS Suficiente
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Estilos De Aprendizaje de Zea
Estilos De Aprendizaje de ZeaEstilos De Aprendizaje de Zea
Estilos De Aprendizaje de Zea
 
Tema Iii Odo 061 Uce Enero Abril 2010
Tema Iii Odo 061 Uce  Enero  Abril 2010Tema Iii Odo 061 Uce  Enero  Abril 2010
Tema Iii Odo 061 Uce Enero Abril 2010
 
Curso de inv de mercados
Curso de inv de mercadosCurso de inv de mercados
Curso de inv de mercados
 
C:\trabajo de choriso mixto
C:\trabajo de choriso mixtoC:\trabajo de choriso mixto
C:\trabajo de choriso mixto
 
Dia De Muertos
Dia De MuertosDia De Muertos
Dia De Muertos
 

Ähnlich wie Portal de Noticias DocuNews

Tesis 8659
Tesis 8659Tesis 8659
Tesis 8659Reason02
 
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKProyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKFernando Leandro
 
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessULEAM
 
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...Hollman Enciso
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosAidil Sanchez
 
5to ciclo desarrollo de aplicaciones web i
5to ciclo   desarrollo de aplicaciones web i5to ciclo   desarrollo de aplicaciones web i
5to ciclo desarrollo de aplicaciones web iJulio Pari
 
Presentacion primera programa del diplomado
Presentacion primera programa del diplomadoPresentacion primera programa del diplomado
Presentacion primera programa del diplomadoseny figueroa
 
Temario de nuevas tecnologias de bd
Temario de nuevas tecnologias de bdTemario de nuevas tecnologias de bd
Temario de nuevas tecnologias de bdMa Teresa Dominguez
 
Tecnologías de la Información y la Comunicación
Tecnologías de la Información y la ComunicaciónTecnologías de la Información y la Comunicación
Tecnologías de la Información y la Comunicaciónfl4k0
 
Manual de fundamentos de investigación 2012 ii
Manual de fundamentos de investigación 2012 iiManual de fundamentos de investigación 2012 ii
Manual de fundamentos de investigación 2012 iisandraruthi
 
P R E S E N T A C I O N W E B I N A R 2010
P R E S E N T A C I O N  W E B I N A R 2010P R E S E N T A C I O N  W E B I N A R 2010
P R E S E N T A C I O N W E B I N A R 2010proxectodesire
 
Manual de fundamentos de investigación 2012 i
Manual de fundamentos de investigación 2012 iManual de fundamentos de investigación 2012 i
Manual de fundamentos de investigación 2012 isandraruthi
 

Ähnlich wie Portal de Noticias DocuNews (20)

PFC Antonio Bernal Baena
PFC Antonio Bernal BaenaPFC Antonio Bernal Baena
PFC Antonio Bernal Baena
 
Tesis 8659
Tesis 8659Tesis 8659
Tesis 8659
 
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKProyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
 
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
 
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...
IMPLEMENTACÍON DE UN PROTOTIPO DE RED WMAN UTILIZANDO TOPOLOGÍA MESH PARA EL ...
 
Sistema para el control de ventas e inventarios
Sistema para el control de ventas e inventariosSistema para el control de ventas e inventarios
Sistema para el control de ventas e inventarios
 
Syllabus sistemas distribuidos 2012
Syllabus sistemas distribuidos 2012Syllabus sistemas distribuidos 2012
Syllabus sistemas distribuidos 2012
 
5to ciclo desarrollo de aplicaciones web i
5to ciclo   desarrollo de aplicaciones web i5to ciclo   desarrollo de aplicaciones web i
5to ciclo desarrollo de aplicaciones web i
 
Presentacion primera programa del diplomado
Presentacion primera programa del diplomadoPresentacion primera programa del diplomado
Presentacion primera programa del diplomado
 
Temario de nuevas tecnologias de bd
Temario de nuevas tecnologias de bdTemario de nuevas tecnologias de bd
Temario de nuevas tecnologias de bd
 
Tecnologías de la Información y la Comunicación
Tecnologías de la Información y la ComunicaciónTecnologías de la Información y la Comunicación
Tecnologías de la Información y la Comunicación
 
Manual de fundamentos de investigación 2012 ii
Manual de fundamentos de investigación 2012 iiManual de fundamentos de investigación 2012 ii
Manual de fundamentos de investigación 2012 ii
 
P R E S E N T A C I O N W E B I N A R 2010
P R E S E N T A C I O N  W E B I N A R 2010P R E S E N T A C I O N  W E B I N A R 2010
P R E S E N T A C I O N W E B I N A R 2010
 
Taller de bases de datos
Taller de bases de datosTaller de bases de datos
Taller de bases de datos
 
Tesis
TesisTesis
Tesis
 
Tesis
TesisTesis
Tesis
 
Tesis
TesisTesis
Tesis
 
Reporte Final de Residencia Profesional
Reporte Final de Residencia ProfesionalReporte Final de Residencia Profesional
Reporte Final de Residencia Profesional
 
Oe04300 c
Oe04300 cOe04300 c
Oe04300 c
 
Manual de fundamentos de investigación 2012 i
Manual de fundamentos de investigación 2012 iManual de fundamentos de investigación 2012 i
Manual de fundamentos de investigación 2012 i
 

Mehr von Fernando Leandro

Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...Fernando Leandro
 
Creación de formularios con Microsoft Forms
Creación de formularios con Microsoft FormsCreación de formularios con Microsoft Forms
Creación de formularios con Microsoft FormsFernando Leandro
 
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?Fernando Leandro
 
Webinar Seminarios en TEAMS
Webinar Seminarios en TEAMSWebinar Seminarios en TEAMS
Webinar Seminarios en TEAMSFernando Leandro
 
Reuniones video llamadas en TEAMS
Reuniones video llamadas en TEAMSReuniones video llamadas en TEAMS
Reuniones video llamadas en TEAMSFernando Leandro
 
Uso de Microsoft List para organizar tu información
Uso de Microsoft List para organizar tu informaciónUso de Microsoft List para organizar tu información
Uso de Microsoft List para organizar tu informaciónFernando Leandro
 
Uso de Sharepoint para crear tu propias paginas web de comunicación interna
Uso de Sharepoint para crear tu propias paginas web de comunicación internaUso de Sharepoint para crear tu propias paginas web de comunicación interna
Uso de Sharepoint para crear tu propias paginas web de comunicación internaFernando Leandro
 
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia Fernando Leandro
 
Fernando leandro-Microsoft Educator Community- Learning Paths
Fernando leandro-Microsoft Educator Community- Learning PathsFernando leandro-Microsoft Educator Community- Learning Paths
Fernando leandro-Microsoft Educator Community- Learning PathsFernando Leandro
 
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.Fernando Leandro
 
10 ideas about me - Jornadas Documentación 2018
10 ideas about me - Jornadas Documentación 201810 ideas about me - Jornadas Documentación 2018
10 ideas about me - Jornadas Documentación 2018Fernando Leandro
 
International STAFF Week - Hiroshima University 2018
International STAFF Week - Hiroshima University 2018International STAFF Week - Hiroshima University 2018
International STAFF Week - Hiroshima University 2018Fernando Leandro
 
Short brief Conclussions about my International STAFF Week Hiroshima University
Short brief Conclussions about my International STAFF Week Hiroshima UniversityShort brief Conclussions about my International STAFF Week Hiroshima University
Short brief Conclussions about my International STAFF Week Hiroshima UniversityFernando Leandro
 
Presentación Adolescentes y Redes Sociales: hackeando el sistema.
Presentación Adolescentes y Redes Sociales: hackeando el sistema.Presentación Adolescentes y Redes Sociales: hackeando el sistema.
Presentación Adolescentes y Redes Sociales: hackeando el sistema.Fernando Leandro
 
International Staff Week 2017 at Sheffield Hallam University
International Staff Week 2017 at Sheffield Hallam UniversityInternational Staff Week 2017 at Sheffield Hallam University
International Staff Week 2017 at Sheffield Hallam UniversityFernando Leandro
 
Descargar plantilla para realizar un plan de social media
Descargar plantilla para realizar un plan de social mediaDescargar plantilla para realizar un plan de social media
Descargar plantilla para realizar un plan de social mediaFernando Leandro
 
Experiencia en las International STAFF week Erasmus+
Experiencia en las International STAFF week Erasmus+Experiencia en las International STAFF week Erasmus+
Experiencia en las International STAFF week Erasmus+Fernando Leandro
 
Extracto Libro: La Fuerza de la Publicidad -Marçal Molinè
Extracto Libro: La Fuerza de la Publicidad -Marçal MolinèExtracto Libro: La Fuerza de la Publicidad -Marçal Molinè
Extracto Libro: La Fuerza de la Publicidad -Marçal MolinèFernando Leandro
 
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal Fernando Leandro
 

Mehr von Fernando Leandro (20)

Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
 
Creación de formularios con Microsoft Forms
Creación de formularios con Microsoft FormsCreación de formularios con Microsoft Forms
Creación de formularios con Microsoft Forms
 
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?
¿Cómo puedo gestionar Microsoft BOOKINGS para reservar tutorías, citas?
 
Webinar Seminarios en TEAMS
Webinar Seminarios en TEAMSWebinar Seminarios en TEAMS
Webinar Seminarios en TEAMS
 
Reuniones video llamadas en TEAMS
Reuniones video llamadas en TEAMSReuniones video llamadas en TEAMS
Reuniones video llamadas en TEAMS
 
LIVE EVENTS en Microsoft
LIVE EVENTS en MicrosoftLIVE EVENTS en Microsoft
LIVE EVENTS en Microsoft
 
Uso de Microsoft List para organizar tu información
Uso de Microsoft List para organizar tu informaciónUso de Microsoft List para organizar tu información
Uso de Microsoft List para organizar tu información
 
Uso de Sharepoint para crear tu propias paginas web de comunicación interna
Uso de Sharepoint para crear tu propias paginas web de comunicación internaUso de Sharepoint para crear tu propias paginas web de comunicación interna
Uso de Sharepoint para crear tu propias paginas web de comunicación interna
 
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia
Descargar TFM San Juan Pablo II - Plan de comunicación online defensa familia
 
Fernando leandro-Microsoft Educator Community- Learning Paths
Fernando leandro-Microsoft Educator Community- Learning PathsFernando leandro-Microsoft Educator Community- Learning Paths
Fernando leandro-Microsoft Educator Community- Learning Paths
 
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.
Proyecto de innovación docente, TuBeBOVIS-Los Vlogers de Veterinaria.
 
10 ideas about me - Jornadas Documentación 2018
10 ideas about me - Jornadas Documentación 201810 ideas about me - Jornadas Documentación 2018
10 ideas about me - Jornadas Documentación 2018
 
International STAFF Week - Hiroshima University 2018
International STAFF Week - Hiroshima University 2018International STAFF Week - Hiroshima University 2018
International STAFF Week - Hiroshima University 2018
 
Short brief Conclussions about my International STAFF Week Hiroshima University
Short brief Conclussions about my International STAFF Week Hiroshima UniversityShort brief Conclussions about my International STAFF Week Hiroshima University
Short brief Conclussions about my International STAFF Week Hiroshima University
 
Presentación Adolescentes y Redes Sociales: hackeando el sistema.
Presentación Adolescentes y Redes Sociales: hackeando el sistema.Presentación Adolescentes y Redes Sociales: hackeando el sistema.
Presentación Adolescentes y Redes Sociales: hackeando el sistema.
 
International Staff Week 2017 at Sheffield Hallam University
International Staff Week 2017 at Sheffield Hallam UniversityInternational Staff Week 2017 at Sheffield Hallam University
International Staff Week 2017 at Sheffield Hallam University
 
Descargar plantilla para realizar un plan de social media
Descargar plantilla para realizar un plan de social mediaDescargar plantilla para realizar un plan de social media
Descargar plantilla para realizar un plan de social media
 
Experiencia en las International STAFF week Erasmus+
Experiencia en las International STAFF week Erasmus+Experiencia en las International STAFF week Erasmus+
Experiencia en las International STAFF week Erasmus+
 
Extracto Libro: La Fuerza de la Publicidad -Marçal Molinè
Extracto Libro: La Fuerza de la Publicidad -Marçal MolinèExtracto Libro: La Fuerza de la Publicidad -Marçal Molinè
Extracto Libro: La Fuerza de la Publicidad -Marçal Molinè
 
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal
Herramienta Linkedin: Taller Formación uso y consejos manejo Marca Personal
 

Kürzlich hochgeladen

La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 

Kürzlich hochgeladen (20)

La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 

Portal de Noticias DocuNews

  • 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
  • 30. Fernando Leandro Baladrón Proyecto fin de carrera Diseño Base de Datos 6/04/05 3.1.3) Diseño Logico: Categoria (CAT_ID: INTEGER(4), CAT_title: VARCHAR(25), CAT_link: NUMBER(4), CAT_description: VARCHAR(25), CAT_language: CHAR(10), CAT_copyright: VARCHAR(25), CAT_managingeditor: VARCHAR(50), CAT_webmaster: VARCHAR(25), CAT_pubdate: DATETIME, CAT_lastbuilddate: DATETIME, CAT_generator: VARCHAR(25), CAT_docs..) CP: {CAT_ID} VNN:{CAT_title, CAT_description, CAT_pubdate} Noticia (NOT_guid: INTEGER(4), NOT_title: VARCHAR(250), NOT_link: varchar(250), NOT_descripcion: VARCHAR(250), NOT_comments: VARCHAR(100), NOT_pubdate: DATETIME, NOT_source: VARCHAR(50), NOT_impacto: INTEGER, NOT_CAT_ID: INTEGER(4), USU_ID:INTEGER(4)) CP:{NOT_GUID} C.Aj: {NOT_CAT_ID }→Categoria C.Aj: {USU_ID }→Usuario VNN: {NOT_title, NOT_description,NOT_CAT_ID,NOT_pubdate} Palabra_Clave (PAL_ID: INTEGER(4), PAL_Nombre: VARCHAR(50)) CP:{PAL_ID} VNN:{PAL_Nombre} Not_REL_Pal (REL_ID: INTEGER(4), PAL_ID: INTEGER(4), Not_guid: INTEGER(4)} CP: {REL_ID) Uni: {PAL_ID,NOT_GUID} C.Aj: {PAL_ID }→Palabras_Clave { Not_guid }→Noticia Imagen (IMA_ID: INTEGER(4), IMA_descripcion: VARCHAR(100), IMA_Nombre:VARCHAR(25), IMA_url: VARCHAR(100), IMA_NOT_ID: INTEGER(4), IMA_Imagen: Binary) CP:{IMA_ID} C.Aj: {IMA_NOT_ID }→Noticia VNN:{url, IMA_NOT_ID, IMA_Imagen} Pal_REL_Pal ( PAL_ID1: INTEGER(4), PAL_ID2: INTEGER(4)} CP: {PAL_ID1, PAL_ID2 ) C.Aj: {PAL_ID1}→Palabras_Clave {PAL_ID2}→Palabras_Clave 27
  • 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