  Artculo para la revista Linux Actual nmero 14:
  Javier Fernndez-Sanguino Pea
  15 mayo 2000

  En este artculo de la serie dedicada a bases de datos, vamos a intro
  ducir una posible aplicacin as como la creacin de la base de datos
  en s y las distintas posibilidades de implementacin para llevarla a
  cabo.

  11..  IInnttrroodduucccciinn aa eessttee aarrttccuulloo

  En el artculo anterior de la serie de bases de datos va la World
  Wide Web vimos los componentes de los que iba a formar parte nuestro
  sistema de acceso a la base de datos y las ventajas de utilizar
  GNU/Linux como sistema de desarrollo para nuestro proyecto. En este
  artculo vamos a seguir en la lnea dictada por el anterior
  determinando el componente que nos falta para desarrollar el sistema,
  en particular, el lenguaje a travs del cual vamos a programar el
  acceso la base de datos; veremos varias alternativas y nos
  decantaremos (por varias razones) por una de ellas.

  Tambin vamos a hacer una breve introduccin a la aplicacin que vamos
  a realizar, definiremos el esquema entidad-relacin y la conversin a
  tablas de la misma.

  Quedar para el siguiente artculo el diseo del interfaz en s y su
  implementacin con herramientas de generacin automtica.


  22..  AAcccceessoo aa bbaasseess ddee ddaattooss mmeeddiiaannttee WWWWWW

  El uso de Apache y PostgreSQL nos da la arquitectura necesaria para
  instalar un sistema de acceso a base de datos va WWW, pero como se
  puede dar cuenta el lector, an falta un componente intermedio quin
  acta de unin entre el servidor de WWW y el servidor de la Base de
  Datos? (ver ``Figura 1'').

  ****************** FIGURA 1*****************************

  Es el diseador el que ha de tomar la decisin de qu se puede
  implementar entre la base de datos, y el servidor, aunque en realidad
  puede no ser en absoluto necesario que estos se comuniquen, como ahora
  veremos. Hay dos posibles soluciones a este problema, por un lado se
  puede mantener la arquitectura cliente/servidor a travs del protocolo
  HTTP, y por otro se puede romper esta arquitectura y separar los dos
  servidores de forma que el cliente utilice un mtodo de acceso
  distinto para cada uno.

  En este segundo caso (presentado en la ``Figura 3'') el papel del
  servidor de WWW sera el de ofrecer la aplicacin que permite al
  cliente se comunicarse con la base de datos.  Esta aplicacin estara
  necesariamente programada en Java y se distribuira como un _a_p_p_l_e_t
  dentro de una pgina HTML. Esta posibilidad no va a ser tratada dentro
  de esta serie ya que rompe el esquema que hemos pretendido introducir,
  el diseo de esta aplicacin no sera con tecnologas estndar de la
  WWW (formularios, pginas, etc..) sino que sera realizada _a_d _h_o_c para
  el problema particular al que nos enfrentamos. El interfaz grfico se
  realizara con los elementos proporcionados por el lenguaje Java (ya
  sea _A_W_T o _S_w_i_n_g), y la comunicacin con la base de datos se hara a
  travs del estndar JDBC.

  ******************** FIGURA 3 **************************

  Para el primer caso (mostrado en la ``figura 2'') tenemos varias
  posibilidades de comunicacin entre el servidor y el sistema de base
  de datos, todas tienen en comn el hecho de que nos van a permitir
  "introducir" la aplicacin como elemento dentro de pginas HTML
  normales. Utilizando _t_a_g_s especiales podremos incorporar los elementos
  de programacin de dichos lenguajes, que sern preprocesados antes de
  enviar la pgina al cliente. El cliente, por tanto, no ser consciente
  de la existencia de una base de datos por debajo por que, por lo que a
  l respecta, los datos se devuelven de la misma forma de lo que est
  acostumbrada a ver cualquier persona que navega por la WWW. Para
  realizar la entrada de datos se utilizarn, pues, formularios como se
  definen en el estndar HTML, cuyos datos sern procesados dentro de la
  programacin de las otras pginas.

  ******************** FIGURA 2 *************************

  Tenemos varios mtodos para hacer esto:


    mod_perl. Se trata de un mdulo para Apache que permite introducir
     cdigo Perl (_P_r_a_c_t_i_c_a_l _E_x_t_r_a_c_t_i_o_n _a_n_d _R_e_p_o_r_t _L_a_n_g_u_a_g_e) en las
     pginas, de forma que se pueda obtener un comportamiento dinmico.
     Asmismo, permite acelerar la ejecucin de CGI's ya escritos en
     Perl entre un 400% y un 2000%, ya que, al introducirlo el Apache,
     desaparece la sobrecarga de inicializacin del intrprete (que
     siempre estar cargado). Usando Perl, junto con el mdulo DBI,
     podemos acceder, de forma transparente, a cualquier base de datos.
     Este mecanismo se usa en mltiples servidores "activos" como
     <http://slashdot.org>.

    PHP/FI (_H_y_p_e_r_t_e_x_t _P_r_e_p_r_o_c_e_s_s_o_r, antes _P_e_r_s_o_n_a_l _H_o_m_e_P_a_g_e). Se trata
     de un lenguaje de programacin que puede introducirse dentro de
     pginas HTML, con una sintaxis parecida a C, y funciones similares
     a las que realiza el lenguaje ASP para el Servidor de Informacin
     de Microsoft, pero se trata de una implementacin libre y, por
     tanto, mucho ms abierta. PHP/FI pas de ser una aplicacin para
     construir pginas personales (con contadores y elementos parecidos)
     a utilizarse en gran nmero de servidores profesionales. Este
     lenguaje soporta la comunicacin con bases de datos, y est
     disponible tanto como CGI independiente como mdulo en Apache.
     Soporta las bases PostgreSQL, MySQL y msql.

    www-sql. Es un sencillo lenguaje para introducir consultas SQL en
     pginas HTML, de forma que stas sean preprocesadas por un programa
     antes de enviar la pgina al cliente. Actualmente slo tiene
     soporte para las bases de datos PostgreSQL y MySQL.

  Como se puede ver, las alternativas a la hora de hacer el diseo son
  abundantes y dependen, en gran medida, de la versatilidad que se
  quiera tener a la hora de implementar la aplicacin. La alternativa de
  introducir Perl en las pginas es quizs la ms verstil, ya que, una
  vez hecho se puede hacer uso de cualquiera de los mdulos de Perl para
  casi cualquier funcin conocida (como por ejemplo conectarse a
  telfonos mviles con WAP). El lenguaje PHP es tambin muy verstil,
  aunque no tanto como Perl, y se encuentra ms limitado en el acceso a
  base de datos. Finalmente, www-sql es una librera mucho ms
  especfica, con un pseudo-lenguaje de programacin mucho menos
  expresivo que los anteriores (tiene pocos sistemas de bucles y pocas
  funciones para manipular los datos).

  Como quiera que en el proyecto que vamos a abordar no va a ser en
  exceso complicado, vamos a elegir la alternativa que ms sencilla va a
  resultar de implementar, que ser www-sql (en su versin para
  PostgreSQL, es decir www-pgsql).





  33..  IInnssttaallaacciinn ddee wwwwww--ppggssqqll

  La instalacin de este lenguaje ser bastante sencilla. Es necesario
  instalar la aplicacin en si, lo cual logramos instalando el paquete
  www-pgsql en un sistema Debian GNU/Linux (para otras distribuciones
  mirar el ``listado 2'').

  ************** LISTADO 2******************************+

  Una vez hecho esto, se debera haber instalado un programa (www-pgsql)
  en la localizacin de los CGI scripts de nuestro sistema, este ser
  generalmente /usr/lib/cgi-bin, aunque puede modificarse por el fichero
  de configuracin de Apache srm.conf (en la lnea ScriptAlias /cgi-bin/
  /usr/lib/cgi-bin/). Lo que hace falta ahora es modificar tanto nuestro
  servidor de WWW como nuestra base de datos para que sea posible
  acceder a travs de este sistema.

  Para modificar a Apache, lo que vamos a hacer es modificar su fichero
  de configuracin srm.conf, para que todos los ficheros que terminen en
  .pgsql sean procesados por el programa que acabamos de instalar.
  Aadiendo lo siguiente:


       # Para www-pgsql
       AddHandler www-pgsql pgsql
       Action www-pgsql /cgi-bin/www-pgsql




  Esto permitira que cuando  a Apache  le sea solicitado un fichero que
  tenga como extensin pgsql, enviar, antes de devolverlo al cliente
  que lo ha pedido, este fichero a un programa (/cgi-bin/www-pgsql) para
  que lo procese. Lo que ser enviado al cliente ser el resultado de
  este programa. Para poder activar esta directiva es necesario que en
  el fichero htttp.conf est definida la carga del mdulo mime_module.


  Para modificar el a gestor de la base de datos PostgreSQL y que
  nuestro _s_c_r_i_p_t pueda funcionar, es necesario editar los ficheros de
  configuracin para permitir varias cosas. Por un lado es necesario
  habilitar la posibilidad de conectarse a la base de datos a travs de
  TCP/IP, de no estar habilitado slo los clientes en la mquina local
  podran hacerlo. www-pgsql realiza una conexin TCP/IP con el sistema
  de base de datos (aunque est instalado en el mismo servidor) y ser
  necesario habilitarlo, lo que lanzar al demonio de gestin de la
  misma con la opcin -i. Para ello modificamos el fichero de
  configuracin del gestor de la base de datos (en Debian GNU/Linux
  /etc/postgres/postmaster.init) para aadir lo siguiente:



       # Whether to allow connections through TCP/IP as well as through Unix
       # sockets: yes/no.
       # By default, for greater security, we do not allow TCP/IP access.
       # This means that only users on this machine can access the database.
       PGALLOWTCPIP=yes




  A continuacin es necesario modificar la configuracin de la base de
  datos para que permita acceso, sin clave, desde el ordenador local,
  por defecto, en el fichero /var/postgres/data/pg_hba.conf. Se hace
  esto slo para conexiones a travs de sockets en dominio UNIX (local)
  y a travs de _l_o_c_a_l_h_o_s_t (direccin IP: 127.0.0.1), pero es necesario
  habilitarlos para nuestra direccin IP. Suponiendo que nuestra
  direccin IP fuera 192.168.1.1, modificaramos el fichero para que
  queda de la siguiente forma:


       # Por defecto, permite cualquier cosa en sockets dominio UNIX y
       localhost
       local        all                                         trust
       host         all         127.0.0.1     255.255.255.255   trust
       # Aadido para www-pgsql
       host         all         192.168.1.1   255.255.255.255     trust




  Hay que tener cuidado, sin embargo, ya que esta configuracin abre un
  posible agujero de seguridad en la base de datos. Si un usuario pone
  ficheros, al margen de la aplicacin que vamos a desarrollar aqu, con
  la extensin pgsql y un cliente un cliente a ellos podr poner
  arbitrariamente cualquier cdigo SQL dentro de pginas WWW que podran
  descubrir informacin reservada de la base de datos. No vamos a cubrir
  este aspecto en esta serie de artculos, pero el usuario interesado
  podr ver la forma de inhabilitar el acceso a esta directiva (salvo en
  las zonas del servidor que le interesen) en la documentacin del
  servidor Apache.

  De esta forma tendramos la siguiente configuracin (mostrada en la
  ``figura 4''):

  1. Cuando el servidor de WWW detecte un acceso a una pgina terminada
     en .pgsql la enviar al programa www-pgsql para que la procese.

  2. El programa www-pgsql procesar las directivas de conexin a la
     base de datos (ms adelante se ver cmo) y las enviar al gestor
     de base de datos  de PostgreSQL (_p_o_s_t_m_a_s_t_e_r).

  3. El demonio gestor de la base de datos recibir las directivas sql y
     las procesar (gracias a que le hemos habilitado el acceso).

  4. El programa recoge los resultados y los utiliza para modificar la
     presentacin de la pgina.

  5. La pgina con sus modificaciones es devuelta al cliente de WWW que
     la mostrar al usuario.

  En realidad algunos de estos cambios (as como la creacin de un
  usuario para acceder a la base de datos como se ver ms adelante) son
  necesarios porque www-pgsql establece necesariamente conexiones a
  travs de sockets TCP/IP. Lo hace aunque la conexin se realice con el
  propio ordenador local (con el que podra establecer conexiones a
  travs de sockets en el dominio UNIX). Es posible modificar las
  fuentes del programa para cambiar esto, pero supondremos que el
  usuario dispone del programa original sin ningn tipo de
  modificaciones.



  44..  EEjjeemmpplloo ddee uunn pprrooyyeeccttoo

  Vistas ya todas las herramientas que vamos a utilizar, vamos a ver
  ahora el problema concreto sobre el que se van a aplicar para
  demostrar su uso.

  El proyecto que se va a abordar es la creacin de una Asociacin de
  Antiguos Alumnos en Internet, el objetivo es que, a travs de un
  cliente universal (un navegador de la WWW) se pueda acceder a una base
  de datos de informacin de Antiguos Alumnos de una determinada
  organizacin (instituto, escuela o universidad). Desde el servidor
  debe ser posible que las personas den de alta su informacin personal
  y que puedan consultar la informacin de personas de la asociacin a
  travs de formularios creados al efecto.

  Para asentar ms el problema, vamos a indicar que el objetivo de dicha
  asociacin va a ser el de poder mantener en contacto a personas
  independientemente de su situacin personal actual (trabajo), de forma
  que una persona que est buscando a otra que pertenezca a la
  asociacin, pueda hacerlo de una forma rpida. De esta manera se
  pueden perpetuar los lazos de comunicacin existentes entre las
  personas antes de abandonar la organizacin, pero trasladndolos a un
  nuevo medio (correo electrnico e Internet).

  En primer lugar vamos a abordar la parte esencial de este proyecto,
  evidentemente, si se estuviera diseando este proyecto se deberan
  plantear objetivos posteriores a ste, tales seran, por ejemplo, la
  creacin de un tabln de anuncios para fomentar la comunicacin entre
  asociados o la generacin de una lista de correo para la comunicacin
  hacia todos los asociados de una forma directa. Vamos a centrarnos,
  sin embargo en la primera parte del proyecto.


  55..  EEssqquueemmaa eennttiiddaadd rreellaacciinn

  A la hora de concretar la base de datos que va a necesitar nuestro
  proyecto es necesario hacer uso de una serie de metodologas para
  poder convertir la idea que tenemos del mismo en tablas que vayan a
  ser almacenadas en la base de datos.

  El paso del concepto abstracto que se tiene del proyecto a la
  concrecin de los elementos fsicos (tablas) que maneja una base de
  datos no es, ni mucho menos, un paso inmediato y ni siquiera lleva
  siempre a la misma solucin. Perspectivas distintas y distintos
  objetivos en la aplicacin llevarn a desarrollar distintas tablas.

  Sin embargo es necesario partir de un diagrama concreto, conocido como
  de _e_n_t_i_d_a_d_-_r_e_l_a_c_i__n que nos permite concretar la "idea del mundo" de
  nuestra aplicacin. El diseo de estos diagramas hace necesario
  conocer cierta teora de las bases de datos y tener cierta experiencia
  en su manejo. No se va aqu a explicar los pasos dados hasta llegar a
  l sino que se va a explicar el elegido, y que se muestra en la
  ``figura 5'':

  ********************** FIGURA 5 ****************************


    Entidades:

    Persona. Se trata del objeto principal de la base de datos y
     almacena la informacin personal caracterstica de un individuo.
     Tiene como atributos la informacin de la direccin de esta persona
     (calle, ciudad, pas, cdigo postal) y la personal (nombre,
     apellido, dni/pasaporte, fecha de nacimiento). Se le aade un
     atributo especfico para la base de datos que es la promocin (o
     ao de salida de la organizacin). Como atributo unvoco de dicha
     base de datos, y que servir para identificar a los individuos se
     va a escoger el nmero de identidad (o dni), siendo ste la clave
     primaria.

    Telfono. Se trata de un objeto secundario, con un nico atributo,
     el nmero de telfono (que en realidad podra partirse en prefijo
     internacional/prefijo nacional, pero que dejamos as por
     simplicidad).

    Correo electrnico. Otro objeto secundario con un nico atributo,
     la direccin de correo.

    Empresa. Se trata de la caracterizacin de los lugares de trabajo
     de las personas, se compone de los siguientes atributos: nombre,
     direccin de la empresa (calle, ciudad, pas y cdigo postal),
     actividad o sector en el que se desarrolla la empresa, y nmero de
     empleados. Como caracterstica nica escogeremos el nombre de la
     misma, de tal forma que no podr  haber en la base de datos dos
     empresas con el mismo nombre.

    Relaciones:

    Trabaja en. Se trata de una relacin entre personas y empresas, que
     determina que una determinada persona tiene un determinado puesto
     en una empresa, por ello como caracterstica de dicha relacin
     tenemos el atributo 'puesto'.

  Este diseo lo materializamos en cinco tablas que sern las creadas
  dentro de la base de datos, como veremos ms abajo.



  66..  CCrreeaacciinn ddee llaa bbaassee ddee ddaattooss

  Una vez definido el esquema entidad relacin vamos a crear la base de
  datos en nuestro sistema de bases de datos. Primero, vamos a proceder
  a crear dos usuarios para poder gestionar la base de datos, en primer
  lugar el usuario _a_l_u_m_n_i que ser el "dueo" de la base de datos de
  nuestro proyecto, y por otro lado un usuarioque ser utilizado para
  acceder a los datos. Para acceder a los datos podramos utilizar el
  usuario _w_w_w_-_d_a_t_a, que es el usado por defecto por el interfaz www-
  pgsql, pero es necesario tener en cuenta a la hora de crearlo y
  otorgar permismos que es necesario encerrarlo entre comillas (debido
  al uso del carcter '-' en el nombre).  Tambin podemos utilizar, si
  nos es ms conveniente, el usuario _n_o_b_o_d_y, los ejemplos aqu sern con
  ste ltimo.

  Es necesario crear el usuario 'alumni' dentro de nuestro sistema, ya
  que, adems de ser el que administre la base de datos ser tambin en
  su directorio de usuario (/home/alumni/public_html) donde vamos a
  alojar sus pginas (para que sean accesibles como
  http://miservidor/~alumni). Lo haremos de la forma habitual (esto es,
  con adduser) aunque convendra dejarlo, de momento con la contrasea
  bloqueada.

  Para terminar con la asignacin de privilegios , tenemos que dar
  acceso a estos usuarios a la base de datos.  Para ello tenemos que
  "convertirnos" en usuario _p_o_s_t_g_r_e_s, que es el responsable de dar de
  alta usuarios dentro del sistema de base de datos: haremos (como
  superusuario) su - postgres y crearemos tanto los usuarios como la
  base de datos que van a utilizar, que no ser ms que un directorio
  (dentro de /var/postgres/data/base). Un ejemplo de la sesin la
  tenemos en el ``listado 1''.

  Conviene distinguir, llegados a este punto, que los usuarios de la
  base de datos no han de existir necesariamente como usuarios de
  nuestro sistema, ya que a la hora de conectar con sta utilizaremos un
  nombre de usuario determinado. Sin embargo, por simplicidad, aqu se
  van a usar los mismos usuarios en nuestro sistema operativo y en el
  gestor de bases de datos.


  ********************** LISTADO 1 ***************************


  Una vez creados los usuarios podemos "convertirnos" en usuario _a_l_u_m_n_i
  (con su - alumni como superusuario) y crear las tablas en la base de
  datos. Para ello nos conectaremos, bien va el interfaz de lnea de
  comandos psql o mediante el interfaz grfico pgaccess (ver ``Figura
  6''). Dado que el interfaz de texto es ms ilustrativo para el
  administrador es el que vamos a tratar aqu. Las rdenes SQL para
  crear las tablas las tenemos en el ``listado 3'', para ejecutarlas,
  slo tendremos que conectarnos a la base de datos con psql alumni y
  ejecutarlas tal cual estn escritas all (teniendo en cuenta slo que
  tras mandar una orden SQL hay que terminarla con el carcter ';').

  ********************** FIGURA 6 *******************************

  ********************* LISTADO 3 ****************************

  Lo nico que quedar tras crear las tablas es dar los permisos al
  usuario _n_o_b_o_d_y para que pueda acceder a stas, lo hacemos con la
  siguiente orden SQL: grant select on empresa, persona, trabaja_en,
  usa_mail, usa_tfo to nobody. Una vez hecho esto podramos ver los
  permisos actuales con \z.

  ******************** FIGURA 7 ********************

  En general, se pueden ver todas las rdenes que podemos enviar desde
  el interfaz con \h y todas las rdenes administrativas importantes
  (listar tablas, permisos, usuarios...) las vemos con \?. Conviene
  acudir a la pgina de manual (man psql) para conocer ms sobre esta
  herramienta y a la documentacin de PostgreSQL (en Debian GNU/Linux se
  instala con el paquete postgresql-doc) en /usr/doc/postgresql.



  77..  RReessuummeenn

  En este artculo se ha abordado el concepto de interfaz entre la base
  de datos y el servidor de WWW que es el que nos va a permitir, ms
  adelante, enlazar, a travs de la programacin en pginas HTML, el
  interfaz del usuario con la base de datos.  Ya hemos creado nuestra
  base de datos de ejemplo con el que trabajaremos en el siguiente
  artculo, lo nico que nos falta es crear el interfaz va WWW sobre el
  que se va a construir la aplicacin final.


  88..  SSuummaarriiooss

  Qu acta de unin entre el servidor y la base de datos?.

  Por su sencillez, escogemos www-sql como alternativa.

  Es necesario modificar Apache y PostgreSQL para preparar el interfaz.

  Se va a abordar un ejemplo concreto.

  La definicin del esquema entidad relacin es necesaria.

  Se van a crear tablas en funcin del esquema.

  Necesitamos crear la base de datos y los usuarios.

  Las conexiones a la base de datos la hacemos como el usuario creado.

  Psql es la manera ms ilustrativa de modificar la base de datos.

  Slo falta crear el interfaz WWW.


  99..  LLiissttaaddooss


  LISTADO 1-



       postgres@fuego:~$ createuser alumni
       Enter user's postgres ID or RETURN to use unix user ID: 1013 ->
       Is user "alumni" allowed to create databases (y/n) y
       Is user "alumni" a superuser? (y/n) n
       createuser: alumno was successfully added
       postgres@fuego:~$ createuser nobody
       Enter user's postgres ID or RETURN to use unix user ID: 65534 ->
       Is user "nobody" allowed to create databases (y/n) n
       Is user "nobody" a superuser? (y/n) n
       createuser: nobody was successfully added
       Shall I create a database for "nobody" (y/n) n
       don't forget to create a database for nobody
       postgres@fuego:~$ createdb alumni





  PIE LISTADO 1: Creacin de los usuarios y de la base de datos



  LISTADO 2

  En general los lenguajes de interfaz a los sistemas de base de datos
  va web podremos encontrarlos incorporados a nuestra distribucin
  favorita, los paquetes relacionados en Debian GNU/Linux se indican a
  continuacin, pero si no dispone de ellos en su distribucin puede
  acudir a lista ms abajo para recoger las fuentes e instalarlas en su
  sistema.


    Paquetes relacionados con www-sql:

    www-mysql: La interfaz a la base de datos MySQL.

    www-pgsql: La interfaz a la base de datos PostrgreSQL.

    Paquetes relacionados con el mdulo de perl de Apache:

    libapache-mod-perl: El mdulo de Perl para Apache, puede ser
     utilizado para introducir cdigo en pginas HTML junto con libhtml-
     embperl-perl  libhtml-ep-eperl.

    libapache-dbi-perl: Mdulo que se puede usar junto con un
     intrprete de Perl embebido para acceder transparentemente a bases
     de datos utilizando Perl::DBI.

    libapache-asp-perl: el sistema ASP (Active Server Pages) migrado a
     Apache y con soporte de Perl.

    libapache-dbilogger-perl: mdulo de Apache para poder seguir las
     transferencias a travs de los accesos DBI.

    Paquetes relacionados con PHP y conectividad a bases de datos:

    php3-cgi: ofrece un ejecutable independiente que se puede comportar
     como un CGI para procesar pginas, y usar conjuntamente con
     diversas ampliaciones para conectarse a distintas bases de datos:
     php3-cgi-msql, php3-cgi-mysql, y php3-cgi-pgsql.

    php3: mdulos para Apache de PHP, se puede utilizar conjuntamente
     con php3-mysql, php3-pgsql y php3-msql.



    www-sql. Se puede leer ms informacin en
     <http://www.daa.com.au/~james/www-sql/>, y lo podemos descargar de
     <ftp.daa.com.au:/pub/james/www-sql>, si no disponemos de un paquete
     disponible en nuestra distribucin favorita.

    Para conocer ms sobre la integracin de Perl y Apache, la mejor
     fuente de informacin es  <http://perl.apache.org>

    Para conocer ms sobre PHP, debemos acudir a <http://www.php.net>,
     si lo que se desea es descargarlo, ir directamente a
     <http://www.php.net/download-php.php3>.

  PIE LISTADO 2: Informacin de los lenguajes de interfaz WWW-BD

  LISTADO 3-












































  create table empresa
  ( idempresa             int not null,
    nombre                text not null,
    ciudad                text,
    calle                 text,
    pais                  text,
    codigo_postal         int,
    actividad             text,
    num_empleados         int,
    pagina_www            text,
    primary key (idempresa)
  )


  create table persona
  ( dni                   int not null,
    nombre                text,
    apellidos             text,
    calle                 text,
    ciudad                text,
    codigo_postal         int,
    pais                  text,
    graduacion            int,
    ingreso               int,
    fecha_nacimiento      date,
    pagina_personal       text,
    primary key (dni)
  )

  create table trabaja_en
  ( dni                   int not null,
    idempresa             int not null,
    puesto                text,
    departamento          text,
    primary key (dni, idempresa)
  )

  create table usa_mail
  ( dni                   int not null,
    e_mail                text not null,
    primary key (dni, e_mail)
  )

  create table usa_tfo
  ( dni                   int not null,
    telefono              text not null,
    primary key (dni, telefono)
  )





  PIE LISTADO 3: Tablas a crear en la base de datos




  1100..  CCaappttuurraass


    Figura 1 (enlacebd.png) Pie: Falta un componente entre la base de
     datos y el servidor de WWW.

    Figura 2 (enlacebd2.png) Pie: Aplicacin en el lado del servidor.

    Figura 3 (enlacebd3.png) Pie: Aplicacin en el lado del cliente.

    Figura 4 (acceso.png) Pie: Pasos del mtodo de acceso a la base de
     datos

    Figura 5 (entidadrel.png) Pie: Esquema entidad relacin del
     proyecto-

    Figura 6 (creagrafico.png) Pie: Creacin de las tablas de forma
     grfica.

    Figura 7 (psql.png) Pie: El interfaz de texto de PostgreSQL



  1111..  NNoottaass ddee mmaaqquueettaacciinn

  Dado que en este artculo tiene muchos listados y capturas quizs el
  texto no llegue, por s slo, a las cuatro pginas previstas, pero se
  considera _f_u_n_d_a_m_e_n_t_a_l incluir todas las grficas ya que el texto tiene
  muchas referencias a ellos.

  Caso de ser necesario el orden de preferencia es el que sigue: figura
  6, figura 3, figura 1, figura 7, figura 2. El resto (capturas y
  listados) conviene no quitarles porque se perdera demasiada
  informacin.


  1122..  NNoottaass ddee ccoooorrddiinnaacciinn

  El siguiente artculo quizs sea ms largo de lo que he planteado pero
  an no lo tengo decidido as que quizs me haga falta un artculo ms
  para cerrar la serie. Cuando haya escrito el siguiente ya lo dir.

































