SlideShare una empresa de Scribd logo
1 de 29
Sistemas de Base de Datos



              CAPÍTULO V

        ARQUITECTURA CLIENTE
              SERVIDOR




                      DAI - Ing. Arturo Rozas Huacho   1
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor




                    TCP/IP
                    TCP/IP                             BASE DE
                                                        DATOS




                      DAI - Ing. Arturo Rozas Huacho         2
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor…
 Servidores
 •   Servidores de archivos
     Compartir documentos, imágenes, planos de
     ingeniería y otros objetos de grandes
     dimensiones.
 •   Servidores de bases de datos
     Intercambio de mensajes Solicitud/Respuesta
     mediante instrucciones SQL.
 •   Servidores de transacciones
     El cliente invoca procedimientos remotos que
     residen en el servidor. Los enunciados de SQL
     aciertan o fallan todos como una sola unidad.
     (OLAP: Online Transaction Processing)

                      DAI - Ing. Arturo Rozas Huacho   3
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor…
 Servidores
 •Servidores de groupware




                      DAI - Ing. Arturo Rozas Huacho   4
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor
 Elementos de Construcción de Cliente/Servidor




                                                      e
                                               w ar
                                       l   e
                                i   dd
                            M
     Cliente
                                                          Servidor




                      DAI - Ing. Arturo Rozas Huacho                 5
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor…
 Servidor
  • Espera las solicitudes de los clientes

  • Ejecuta muchas solicitudes al mismo
    tiempo

  • Atiende primero a los clientes VIP
    (very important person)

  • Emprende y opera actividades de tareas en
    segundo plano

  • Se mantiene ejecutándose
    permanentemente
                      DAI - Ing. Arturo Rozas Huacho   6
Sistemas de Base de Datos

5.1.- Arquitectura Cliente/Servidor…
 ¿Qué es middleware?


  Es un término vago que abarca a todo
  el software distribuido necesario para
  el soporte de interacciones entre
  clientes y servidores.

  Es el enlace que permite que un
  cliente obtenga un servicio de un
  servidor.


                      DAI - Ing. Arturo Rozas Huacho   7
Sistemas de Base de Datos
 5.2.- Servicios de Base de Datos
   Los servicios de BD se almacenan en la base de datos y pueden ser
   funciones y procedimientos.



Aplicación


                  Solicitud Servicios (SQL)
Aplicación                                                       BASE DE
                                                                  DATOS
                               Datos

                                                             Servicio      1
 Aplicación                                                  Servicio      2
                                                  Servidor   …
                                                             Servicio      n

       Clientes
                            DAI - Ing. Arturo Rozas Huacho                     8
Sistemas de Base de Datos

5.2.- Servicios de BD
    Los servicios de BD pueden ser de tipo función
     o de tipo procedimiento (stored procedure)
    Son un grupo de sentencias SQL que es
     compilado una vez, y luego puede ser ejecutado
     muchas veces.
    Las funciones y los procedimientos
     almacenados se almacenan en la base de datos
     y constituyen los servicios que ofrece la base
     de datos (Cliente/Servidor).
    Las funciones y los procedimientos
     almacenados cuando se ejecutan no tienen que
     ser recompilados cada vez, este hecho hace
     que sean muy eficientes.

                      DAI - Ing. Arturo Rozas Huacho   9
Sistemas de Base de Datos

5.3.- Funciones Definidas por el Usuario
Se tienen tres tipos:
       Escalares: Retornan un tipo de los datos
        como int, money, varchar, real, etc. Pueden
        ser utilizadas dentro de sentencias SQL .

       De tabla en Linea: Retornan la salida de una
        simple declaración SELECT. La salida se
        puede utilizar dentro de composiciones o
        consultas como si fuera una tabla de
        estándar.

       De multisentencia: Dan como resultado una
        tabla, puede estar constituido por varias
        sentencias SQL, y puede llamar a otras
        funciones. La salida también se puede
        utilizar en operaciones de tabla.
                      DAI - Ing. Arturo Rozas Huacho   10
5.3.- Funciones Definidas
Sistemas de Base de Datos                      por el
Usuario…
Funciones escalares:
/* ********************************************
    Function que convierte una nota de tipo texto a número
    ********************************************* */
CREATE FUNCTION fnNota (@NotaTexto varchar(3))
RETURNS int
AS
BEGIN
   declare @Nota int;
   set @Nota = case
                 when @NotaTexto = 'NSP' then 0
                 else Cast(@NotaTexto as int)
               end;
   return(@Nota);
END




                       DAI - Ing. Arturo Rozas Huacho        11
5.3.- Funciones Definidas
Sistemas de Base de Datos                         por el
Usuario…
Funciones escalares:
/* *********************************************
    Function que convierte una nota a número
    ********************************************** */
CREATE FUNCTION fnRecuperarNota (@Semestre varchar(7),
                                  @Cod_Asignatura varchar(5),
                                  @Cod_Alumno varchar(6))
RETURNS int
AS
BEGIN
  declare @Nota int;
  select @Nota = dbo.fnNota(Nota)
     from MATRICULA
     where (Semestre = @Semestre) and
           (Cod_Asignatura = @Cod_Asignatura) and
           (Cod_Alumno = @Cod_Alumno)
  return(@Nota)
END




                          DAI - Ing. Arturo Rozas Huacho        12
5.3.- Funciones Definidas
Sistemas de Base de Datos                        por el
Usuario…
Funciones de tabla en Línea:
/* *******************************************************
   Function que devuelve las asignaturas aprobadas
   ******************************************************* */
ALTER FUNCTION fnAsignaturasAprobadas(@Cod_CP varchar(2))
RETURNS TABLE
AS
  RETURN (SELECT M.Semestre, M.Cod_CP, M.Cod_Alumno,
   M.Cod_Asignatura,
                 A.Nombre_Asignatura, A.Creditos, A.Categoria,
                 Nota = dbo.fnNota(M.Nota)
            FROM MATRICULA M inner join ASIGNATURA A
              ON (M.Cod_Asignatura = A.Cod_Asignatura) and
                 (M.Cod_CP = A.Cod_CP)
            WHERE ((M.Cod_CP = @Cod_CP) or (@Cod_Cp = '*')) and
                  (dbo.fnNota(M.Nota) > 10))




                         DAI - Ing. Arturo Rozas Huacho           13
5.3.- Funciones Definidas
Sistemas de Base de Datos               por el
Usuario…
Funciones de multisentencia:
/




                DAI - Ing. Arturo Rozas Huacho   14
5.3.- Funciones Definidas
Sistemas de Base de Datos                        por el
Usuario…
Funciones de multisentencia:
 -- Recuperar información a la tabla temporal
  insert into @taCreditosAcumulados
  select Semestre, Cod_Alumno, sum(Creditos), sum(Creditos)
    from dbo.fnAsignaturasAprobadas(@Cod_CP)
    group by Semestre, Cod_Alumno
    order by Cod_Alumno, Semestre

 -- Acumular los creditos por semestre
    -- Declarar e inicializar variables
    declare @Cod_Alumno varchar(6),
            @Creditos_Acum int;
    set @Cod_Alumno = '';
    set @Creditos_Acum = 0;




                         DAI - Ing. Arturo Rozas Huacho       15
5.3.- Funciones Definidas
Sistemas de Base de Datos                        por el
Usuario…
Funciones de multisentencia:
 -- Acumular creditos
     update @taCreditosAcumulados
       set @Creditos_Acum = Creditos_Acum = case
                                              when @Cod_Alumno <>
   Cod_Alumno then Creditos
                                              else @Creditos_Acum +
   Creditos
                                            end,
            @Cod_Alumno = Cod_Alumno;

   -- Devolver resultado
   INSERT INTO @taCreditosAcumuladosSemestre
   SELECT C.Semestre, A.Cod_Alumno, A.Paterno, A.Materno, A.Nombres,
          A.Cod_CP, C.Creditos, C.Creditos_Acum
     from @taCreditosAcumulados C inner join ALUMNO A
       ON C.Cod_Alumno = A.Cod_Alumno
   RETURN
END




                         DAI - Ing. Arturo Rozas Huacho          16
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
    Se escriben utilizando el lenguaje de
     programación de la base de Datos. Permiten
     declaración de variables, sentencias de
     asignación, estructuras selectivas y repetitivas.
    Aceptan parámetros de entrada y salida
    Pueden retornar conjunto de datos así como
     también un solo valor.
    Permiten la programación modular y puede
     hacer referencia a otros procedimientos
     almacenados, con lo que se puede simplificar
     una serie de instrucciones complejas.
    Pueden ser ejecutados desde otros
     procedimientos almacenados, vistas,
     disparadores y consultas en general.
                      DAI - Ing. Arturo Rozas Huacho   17
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…

  Sintaxis :

  CREATE PROCEDURE nombre procedimiento
                    @parametros tipo de dato [= valor],
                    @parametros_salida tipo de dato OUTPUT
  AS
      [DECLARE @Variables tipos]
  BEGIN
       sentencias sql
  END




                       DAI - Ing. Arturo Rozas Huacho        18
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
  Escribir procedimientos almacenados
         Escribir un procedimiento para determinar la
  relación de alumnos de una determinada carrera
 CREATE PROCEDURE sp_AlumnosPorCarrera
                   @Cod_Carrera varchar(2)
 AS
 BEGIN
    -- Seleccionar alumnos de la carrera indicada
    SELECT *
      FROM ALUMNO
      WHERE Cod_Carrera = @Cod_Carrera
 END

         Constituye el código fuente, se debe almacenar
  como un archivo de extensión SQL.
         Este código se debe compilar y almacenar en la
  base de datos, para que pueda ser invocado como un
  servicio.
                       DAI - Ing. Arturo Rozas Huacho     19
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…

  Ejecución de un procedimiento.
  Sintaxis :

[DECLARE @variables tipo de variable]
EXEC/EXECUTE nombre_procedimiento [@parametros], [@variables]




 Ejemplo de ejecución:

  exec sp_AlumnosPorCarrera ‘IN’




                        DAI - Ing. Arturo Rozas Huacho          20
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
  Ejercicios:
  Dadas las siguientes tablas

Comunidad( CodComunidad, Nombre )

Prestatario( CodPrestatario, Nombres, Sexo, EstadoCivil,
DocIdentidad,
               CodComunidad)

Oficial_Credito( CodOficial, Nombres, Email )

Prestamo( DocPrestamo, FechaPrestamo, Importe,
FechaVencimiento,
            CodPrestatario, CodOficial )

Amortizacion( DocCancelacion, FechaCancelacion, Importe,
                DocPrestamo)

                          DAI - Ing. Arturo Rozas Huacho   21
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 1)
Determinar la relacion de Comunidades, con los saldos de
los prestamos pertenecientes a la comunidad.
R(CodComunidad, Nombre, Saldo)
 create procedure spu_Saldo_Comunidad @CodComunidad varchar(12)
 as
 begin
    -- Determinar los montos cancelados por cada documento
    select DocPrestamo, sum(Importe) MontoCancelado
      into #Montos_Cancelados
      from Amortizacion
      group by DocPrestamo

   -- Determinar los saldos de cada Prestamo
   select P.DocPrestamo, P.CodPrestatario,
         (P.Importe - IsNull(M.MontoCancelado,0)) Saldo
     into #Saldos_Prestamos
     from Prestamo P left outer join #Montos_Cancelados M
       on P.DocPrestamo = M.DocPrestamo

                         DAI - Ing. Arturo Rozas Huacho           22
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 1 …)

  -- Determinar los saldos de cada prestatario de la comunidad
  -- especificada
   select S.CodPrestatario, sum(S.Saldo) Saldo, P.CodComunidad

     into #Saldos_Prestatario
     from #Saldos_Prestamos S, Prestatario P
     where (S.CodPrestatario = P.CodPrestatario) and
           (P.CodComunidad = @CodComunidad)
     group by S.CodPrestatario, P.CodComunidad

   -- Determinar los saldos de cada comunidad
   select S.CodComunidad, C.Nombre, sum(S.Saldo) Saldo
     from #Saldos_Prestatario S, Comunidad C
     where S.CodComunidad = C.CodComunidad
     group by S.CodComunidad, C.Nombre

 end;


                         DAI - Ing. Arturo Rozas Huacho          23
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 2)

Escribir un procedimiento almacenado que obtenga los
movimientos para un determinado prestatario, considerando los
saldos por préstamo y los saldos por prestatario. El
procedimiento debe mostrar la relación de todos los préstamos
del prestatario y para cada préstamo sus respectivas
cancelaciones, tal como se ilustra en el ejemplo siguiente:


R(FechaMov,DocPrestamo,DocCancelacion,Debe,Haber,SaldoPrestamo,SaldoTotal)
  02/02/06 PA-101                     1000                1000       1000
  31/03/06             RC-421                200           800        800
  30/04/06             RC-467                300           500        500
  15/04/06 PA-246                     1600                1600       2100
  30/04/06             RC-478                700           900       1400
  31/05/06             RC-523                900             0        500
  ...




                              DAI - Ing. Arturo Rozas Huacho                 24
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 2 …)

 create procedure sp_Prestatario_Rural_Movimientos
                   @CodPrestatario varchar(15)
 as
 begin
    -- Crear tabla vacia de movimientos
    create table #Movimientos
    (
       Fecha_Mov                DateTime,
       DocPrestamo              varchar(15),
       DocCancelacion    varchar(15),
       Debe                     numeric(15,2),
       Haber                    numeric(15,2),
       SaldoPrestamo            numeric(15,2),
       SaldoTotal               numeric(15,2)
    )




                         DAI - Ing. Arturo Rozas Huacho   25
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 2 …)
  -- Recuperar Prestamos y cancelaciones de movimientos
     -- Declarar variables utilizadas por el cursor
     declare @DocPrestamo varchar(15), @FechaPrestamo DateTime,
             @ImportePrestamo numeric(15,2),
             @SaldoPrestamo numeric(15,2),
             @SaldoTotal numeric(15,2);
     -- Inicializar saldo
     set @SaldoPrestamo = 0;
     set @SaldoTotal = 0;
     -- Declarar el cursor
     declare cursor_Prestamo cursor
     for
     select DocPrestamo, FechaPrestamo, ImportePrestamo
       from Prestamo
       where CodPrestatario = @CodPrestatario;
     -- Abrir el cursor
     open cursor_Prestamo;



                         DAI - Ing. Arturo Rozas Huacho           26
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 2 …)
  -- Activar la primera fila del cursor
     fetch next from cursor_Prestamo
     into @DocPrestamo, @FechaPrestamo, @ImportePrestamo
     -- Procesar cada fila repetitivamente
     while @@FETCH_STATUS = 0
     begin
       -- Inicializar saldo prestamo
       set @SaldoPrestamo = @ImportePrestamo;
       -- Actualizar saldo total
       set @SaldoTotal = @SaldoTotal + @ImportePrestamo;
       -- Insertar prestamo en tabla de movimientos
       insert into #Movimientos
                   values(@FechaPrestamo,@DocPrestamo,'',
                          @ImportePrestamo,0,@SaldoPrestamo,
                          @SaldoTotal)
       -- Procesar cancelaciones del prestamo
       declare @DocCancelacion varchar(15),
               @FechaCancelacion DateTime,
               @ImporteCancelacion numeric(15,2);


                         DAI - Ing. Arturo Rozas Huacho        27
Sistemas de Base de Datos

5.4- Procedimientos Almacenados…
Ejercicios (Problema 2 …)
  -- Declarar el cursor anidado
       declare cursor_Cancelacion cursor
       for
       select DocCancelacion, FechaCancelacion, ImporteCancelacion
         from Cancelacion
         where DocPrestamo = @DocPrestamo;
       -- Abrir el cursor
       open cursor_Cancelacion;
       -- Activar la primera fila del cursor
       fetch next from cursor_Cancelacion
       into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion
       -- Procesar cada fila repetitivamente
       while @@FETCH_STATUS = 0
       begin
         -- Actualizar saldos
         set @SaldoPrestamo = @SaldoPrestamo - @ImporteCancelacion;
         set @SaldoTotal = @SaldoTotal - @ImporteCancelacion;




                         DAI - Ing. Arturo Rozas Huacho          28
Sistemas de Base de Datos
5.4- Procedimientos Almacenados…
Ejercicios (Problema 2 …)
 -- Insertar prestamo en tabla de movimientos
         insert into #Movimientos
             values(@FechaCancelacion,'',@DocCancelacion, 0,
                     @ImportePrestamo, @SaldoPrestamo, @SaldoTotal)
         -- Siguiente registro
         fetch next from cursor_Cancelacion
         into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion
       end; -- while
       -- Cerrar Cursor
       close cursor_Cancelacion;
       deallocate cursor_Cancelacion;
       -- Siguiente registro de prestamo
       fetch next from cursor_Prestamo
       into @DocPrestamo, @FechaPrestamo, @ImportePrestamo
     end; -- while
     -- Cerrar Cursor
     close cursor_Prestamo;
     deallocate cursor_Prestamo;
  -- Mostrar Movimientos
  select *
     from #Movimientos
end;

                             DAI - Ing. Arturo Rozas Huacho             29

Más contenido relacionado

La actualidad más candente

metodologia de diseño de base de datos
metodologia de diseño de base de datosmetodologia de diseño de base de datos
metodologia de diseño de base de datos
emnero
 
Ejemplos de diagramas =)
Ejemplos de diagramas =)Ejemplos de diagramas =)
Ejemplos de diagramas =)
bat1820
 
Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
Giovanni Peruch
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
yoiner santiago
 

La actualidad más candente (20)

Modelo Persistente
Modelo PersistenteModelo Persistente
Modelo Persistente
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
ARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdfARQUITECTURA EN CAPAS.pdf
ARQUITECTURA EN CAPAS.pdf
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Analisis De Software
Analisis De SoftwareAnalisis De Software
Analisis De Software
 
metodologia de diseño de base de datos
metodologia de diseño de base de datosmetodologia de diseño de base de datos
metodologia de diseño de base de datos
 
Analisis de requerimiento
Analisis de requerimientoAnalisis de requerimiento
Analisis de requerimiento
 
Bases de Datos Semanticas
Bases de Datos SemanticasBases de Datos Semanticas
Bases de Datos Semanticas
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en Windows
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clases
 
Ejemplos de diagramas =)
Ejemplos de diagramas =)Ejemplos de diagramas =)
Ejemplos de diagramas =)
 
Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Modelos Lógicos Basados en Objetos
Modelos Lógicos Basados en ObjetosModelos Lógicos Basados en Objetos
Modelos Lógicos Basados en Objetos
 
Mer
MerMer
Mer
 
Modelo del dominio
Modelo del dominioModelo del dominio
Modelo del dominio
 
Servicios Web
Servicios  WebServicios  Web
Servicios Web
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 

Destacado (12)

Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Servidor de archivos y de datos
Servidor de archivos y de datosServidor de archivos y de datos
Servidor de archivos y de datos
 
A charla12 arq.3-capas
A charla12 arq.3-capasA charla12 arq.3-capas
A charla12 arq.3-capas
 
Arquitectura Cliente-Servidor
Arquitectura Cliente-ServidorArquitectura Cliente-Servidor
Arquitectura Cliente-Servidor
 
Mapa mental de base de datos
Mapa mental de base de datosMapa mental de base de datos
Mapa mental de base de datos
 
Bases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos clienteBases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos cliente
 
Unidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos DistribuidasUnidad1 Bases De Datos Distribuidas
Unidad1 Bases De Datos Distribuidas
 
Mapa mental de base de datos
Mapa mental de base de datosMapa mental de base de datos
Mapa mental de base de datos
 
Base de Datos - Modelo Entidad Relación
Base de Datos - Modelo Entidad RelaciónBase de Datos - Modelo Entidad Relación
Base de Datos - Modelo Entidad Relación
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
 
Base de datos modelo entidad relacion
Base de datos modelo entidad relacionBase de datos modelo entidad relacion
Base de datos modelo entidad relacion
 
Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidor
 

Similar a Arquitectura cliente servidor

Base de datos pg
Base de datos pgBase de datos pg
Base de datos pg
paulagome2
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con access
univ of pamplona
 

Similar a Arquitectura cliente servidor (20)

Ensayo bases de datos DAMARIS
Ensayo bases de datos DAMARISEnsayo bases de datos DAMARIS
Ensayo bases de datos DAMARIS
 
Unidad1
Unidad1Unidad1
Unidad1
 
Perspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datosPerspectiva practica de la administracion de base de datos
Perspectiva practica de la administracion de base de datos
 
Fundamentos de Bases de datos
Fundamentos de Bases de datosFundamentos de Bases de datos
Fundamentos de Bases de datos
 
Conceptos basicos
Conceptos basicosConceptos basicos
Conceptos basicos
 
Base de datos pg
Base de datos pgBase de datos pg
Base de datos pg
 
Cliente servidor1
Cliente servidor1Cliente servidor1
Cliente servidor1
 
Tema4
Tema4Tema4
Tema4
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Ciclo de vida de un sistema de informacion
Ciclo de vida de un sistema de informacionCiclo de vida de un sistema de informacion
Ciclo de vida de un sistema de informacion
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
 
Bases de Datos II: El entorno
Bases de Datos II: El entornoBases de Datos II: El entorno
Bases de Datos II: El entorno
 
Astriddd
AstridddAstriddd
Astriddd
 
Tallerdebasededatosunidad1 4
Tallerdebasededatosunidad1 4Tallerdebasededatosunidad1 4
Tallerdebasededatosunidad1 4
 
Proyecto X
Proyecto XProyecto X
Proyecto X
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Ejemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con accessEjemplo arquitectura 3 capas con access
Ejemplo arquitectura 3 capas con access
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
 

Arquitectura cliente servidor

  • 1. Sistemas de Base de Datos CAPÍTULO V ARQUITECTURA CLIENTE SERVIDOR DAI - Ing. Arturo Rozas Huacho 1
  • 2. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor TCP/IP TCP/IP BASE DE DATOS DAI - Ing. Arturo Rozas Huacho 2
  • 3. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor… Servidores • Servidores de archivos Compartir documentos, imágenes, planos de ingeniería y otros objetos de grandes dimensiones. • Servidores de bases de datos Intercambio de mensajes Solicitud/Respuesta mediante instrucciones SQL. • Servidores de transacciones El cliente invoca procedimientos remotos que residen en el servidor. Los enunciados de SQL aciertan o fallan todos como una sola unidad. (OLAP: Online Transaction Processing) DAI - Ing. Arturo Rozas Huacho 3
  • 4. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor… Servidores •Servidores de groupware DAI - Ing. Arturo Rozas Huacho 4
  • 5. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor Elementos de Construcción de Cliente/Servidor e w ar l e i dd M Cliente Servidor DAI - Ing. Arturo Rozas Huacho 5
  • 6. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor… Servidor • Espera las solicitudes de los clientes • Ejecuta muchas solicitudes al mismo tiempo • Atiende primero a los clientes VIP (very important person) • Emprende y opera actividades de tareas en segundo plano • Se mantiene ejecutándose permanentemente DAI - Ing. Arturo Rozas Huacho 6
  • 7. Sistemas de Base de Datos 5.1.- Arquitectura Cliente/Servidor… ¿Qué es middleware? Es un término vago que abarca a todo el software distribuido necesario para el soporte de interacciones entre clientes y servidores. Es el enlace que permite que un cliente obtenga un servicio de un servidor. DAI - Ing. Arturo Rozas Huacho 7
  • 8. Sistemas de Base de Datos 5.2.- Servicios de Base de Datos Los servicios de BD se almacenan en la base de datos y pueden ser funciones y procedimientos. Aplicación Solicitud Servicios (SQL) Aplicación BASE DE DATOS Datos Servicio 1 Aplicación Servicio 2 Servidor … Servicio n Clientes DAI - Ing. Arturo Rozas Huacho 8
  • 9. Sistemas de Base de Datos 5.2.- Servicios de BD  Los servicios de BD pueden ser de tipo función o de tipo procedimiento (stored procedure)  Son un grupo de sentencias SQL que es compilado una vez, y luego puede ser ejecutado muchas veces.  Las funciones y los procedimientos almacenados se almacenan en la base de datos y constituyen los servicios que ofrece la base de datos (Cliente/Servidor).  Las funciones y los procedimientos almacenados cuando se ejecutan no tienen que ser recompilados cada vez, este hecho hace que sean muy eficientes. DAI - Ing. Arturo Rozas Huacho 9
  • 10. Sistemas de Base de Datos 5.3.- Funciones Definidas por el Usuario Se tienen tres tipos:  Escalares: Retornan un tipo de los datos como int, money, varchar, real, etc. Pueden ser utilizadas dentro de sentencias SQL .  De tabla en Linea: Retornan la salida de una simple declaración SELECT. La salida se puede utilizar dentro de composiciones o consultas como si fuera una tabla de estándar.  De multisentencia: Dan como resultado una tabla, puede estar constituido por varias sentencias SQL, y puede llamar a otras funciones. La salida también se puede utilizar en operaciones de tabla. DAI - Ing. Arturo Rozas Huacho 10
  • 11. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones escalares: /* ******************************************** Function que convierte una nota de tipo texto a número ********************************************* */ CREATE FUNCTION fnNota (@NotaTexto varchar(3)) RETURNS int AS BEGIN declare @Nota int; set @Nota = case when @NotaTexto = 'NSP' then 0 else Cast(@NotaTexto as int) end; return(@Nota); END DAI - Ing. Arturo Rozas Huacho 11
  • 12. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones escalares: /* ********************************************* Function que convierte una nota a número ********************************************** */ CREATE FUNCTION fnRecuperarNota (@Semestre varchar(7), @Cod_Asignatura varchar(5), @Cod_Alumno varchar(6)) RETURNS int AS BEGIN declare @Nota int; select @Nota = dbo.fnNota(Nota) from MATRICULA where (Semestre = @Semestre) and (Cod_Asignatura = @Cod_Asignatura) and (Cod_Alumno = @Cod_Alumno) return(@Nota) END DAI - Ing. Arturo Rozas Huacho 12
  • 13. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones de tabla en Línea: /* ******************************************************* Function que devuelve las asignaturas aprobadas ******************************************************* */ ALTER FUNCTION fnAsignaturasAprobadas(@Cod_CP varchar(2)) RETURNS TABLE AS RETURN (SELECT M.Semestre, M.Cod_CP, M.Cod_Alumno, M.Cod_Asignatura, A.Nombre_Asignatura, A.Creditos, A.Categoria, Nota = dbo.fnNota(M.Nota) FROM MATRICULA M inner join ASIGNATURA A ON (M.Cod_Asignatura = A.Cod_Asignatura) and (M.Cod_CP = A.Cod_CP) WHERE ((M.Cod_CP = @Cod_CP) or (@Cod_Cp = '*')) and (dbo.fnNota(M.Nota) > 10)) DAI - Ing. Arturo Rozas Huacho 13
  • 14. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones de multisentencia: / DAI - Ing. Arturo Rozas Huacho 14
  • 15. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones de multisentencia: -- Recuperar información a la tabla temporal insert into @taCreditosAcumulados select Semestre, Cod_Alumno, sum(Creditos), sum(Creditos) from dbo.fnAsignaturasAprobadas(@Cod_CP) group by Semestre, Cod_Alumno order by Cod_Alumno, Semestre -- Acumular los creditos por semestre -- Declarar e inicializar variables declare @Cod_Alumno varchar(6), @Creditos_Acum int; set @Cod_Alumno = ''; set @Creditos_Acum = 0; DAI - Ing. Arturo Rozas Huacho 15
  • 16. 5.3.- Funciones Definidas Sistemas de Base de Datos por el Usuario… Funciones de multisentencia: -- Acumular creditos update @taCreditosAcumulados set @Creditos_Acum = Creditos_Acum = case when @Cod_Alumno <> Cod_Alumno then Creditos else @Creditos_Acum + Creditos end, @Cod_Alumno = Cod_Alumno; -- Devolver resultado INSERT INTO @taCreditosAcumuladosSemestre SELECT C.Semestre, A.Cod_Alumno, A.Paterno, A.Materno, A.Nombres, A.Cod_CP, C.Creditos, C.Creditos_Acum from @taCreditosAcumulados C inner join ALUMNO A ON C.Cod_Alumno = A.Cod_Alumno RETURN END DAI - Ing. Arturo Rozas Huacho 16
  • 17. Sistemas de Base de Datos 5.4- Procedimientos Almacenados…  Se escriben utilizando el lenguaje de programación de la base de Datos. Permiten declaración de variables, sentencias de asignación, estructuras selectivas y repetitivas.  Aceptan parámetros de entrada y salida  Pueden retornar conjunto de datos así como también un solo valor.  Permiten la programación modular y puede hacer referencia a otros procedimientos almacenados, con lo que se puede simplificar una serie de instrucciones complejas.  Pueden ser ejecutados desde otros procedimientos almacenados, vistas, disparadores y consultas en general. DAI - Ing. Arturo Rozas Huacho 17
  • 18. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Sintaxis : CREATE PROCEDURE nombre procedimiento @parametros tipo de dato [= valor], @parametros_salida tipo de dato OUTPUT AS [DECLARE @Variables tipos] BEGIN sentencias sql END DAI - Ing. Arturo Rozas Huacho 18
  • 19. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Escribir procedimientos almacenados Escribir un procedimiento para determinar la relación de alumnos de una determinada carrera CREATE PROCEDURE sp_AlumnosPorCarrera @Cod_Carrera varchar(2) AS BEGIN -- Seleccionar alumnos de la carrera indicada SELECT * FROM ALUMNO WHERE Cod_Carrera = @Cod_Carrera END Constituye el código fuente, se debe almacenar como un archivo de extensión SQL. Este código se debe compilar y almacenar en la base de datos, para que pueda ser invocado como un servicio. DAI - Ing. Arturo Rozas Huacho 19
  • 20. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejecución de un procedimiento. Sintaxis : [DECLARE @variables tipo de variable] EXEC/EXECUTE nombre_procedimiento [@parametros], [@variables] Ejemplo de ejecución: exec sp_AlumnosPorCarrera ‘IN’ DAI - Ing. Arturo Rozas Huacho 20
  • 21. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios: Dadas las siguientes tablas Comunidad( CodComunidad, Nombre ) Prestatario( CodPrestatario, Nombres, Sexo, EstadoCivil, DocIdentidad, CodComunidad) Oficial_Credito( CodOficial, Nombres, Email ) Prestamo( DocPrestamo, FechaPrestamo, Importe, FechaVencimiento, CodPrestatario, CodOficial ) Amortizacion( DocCancelacion, FechaCancelacion, Importe, DocPrestamo) DAI - Ing. Arturo Rozas Huacho 21
  • 22. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 1) Determinar la relacion de Comunidades, con los saldos de los prestamos pertenecientes a la comunidad. R(CodComunidad, Nombre, Saldo) create procedure spu_Saldo_Comunidad @CodComunidad varchar(12) as begin -- Determinar los montos cancelados por cada documento select DocPrestamo, sum(Importe) MontoCancelado into #Montos_Cancelados from Amortizacion group by DocPrestamo -- Determinar los saldos de cada Prestamo select P.DocPrestamo, P.CodPrestatario, (P.Importe - IsNull(M.MontoCancelado,0)) Saldo into #Saldos_Prestamos from Prestamo P left outer join #Montos_Cancelados M on P.DocPrestamo = M.DocPrestamo DAI - Ing. Arturo Rozas Huacho 22
  • 23. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 1 …) -- Determinar los saldos de cada prestatario de la comunidad -- especificada select S.CodPrestatario, sum(S.Saldo) Saldo, P.CodComunidad into #Saldos_Prestatario from #Saldos_Prestamos S, Prestatario P where (S.CodPrestatario = P.CodPrestatario) and (P.CodComunidad = @CodComunidad) group by S.CodPrestatario, P.CodComunidad -- Determinar los saldos de cada comunidad select S.CodComunidad, C.Nombre, sum(S.Saldo) Saldo from #Saldos_Prestatario S, Comunidad C where S.CodComunidad = C.CodComunidad group by S.CodComunidad, C.Nombre end; DAI - Ing. Arturo Rozas Huacho 23
  • 24. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2) Escribir un procedimiento almacenado que obtenga los movimientos para un determinado prestatario, considerando los saldos por préstamo y los saldos por prestatario. El procedimiento debe mostrar la relación de todos los préstamos del prestatario y para cada préstamo sus respectivas cancelaciones, tal como se ilustra en el ejemplo siguiente: R(FechaMov,DocPrestamo,DocCancelacion,Debe,Haber,SaldoPrestamo,SaldoTotal) 02/02/06 PA-101 1000 1000 1000 31/03/06 RC-421 200 800 800 30/04/06 RC-467 300 500 500 15/04/06 PA-246 1600 1600 2100 30/04/06 RC-478 700 900 1400 31/05/06 RC-523 900 0 500 ... DAI - Ing. Arturo Rozas Huacho 24
  • 25. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2 …) create procedure sp_Prestatario_Rural_Movimientos @CodPrestatario varchar(15) as begin -- Crear tabla vacia de movimientos create table #Movimientos ( Fecha_Mov DateTime, DocPrestamo varchar(15), DocCancelacion varchar(15), Debe numeric(15,2), Haber numeric(15,2), SaldoPrestamo numeric(15,2), SaldoTotal numeric(15,2) ) DAI - Ing. Arturo Rozas Huacho 25
  • 26. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2 …) -- Recuperar Prestamos y cancelaciones de movimientos -- Declarar variables utilizadas por el cursor declare @DocPrestamo varchar(15), @FechaPrestamo DateTime, @ImportePrestamo numeric(15,2), @SaldoPrestamo numeric(15,2), @SaldoTotal numeric(15,2); -- Inicializar saldo set @SaldoPrestamo = 0; set @SaldoTotal = 0; -- Declarar el cursor declare cursor_Prestamo cursor for select DocPrestamo, FechaPrestamo, ImportePrestamo from Prestamo where CodPrestatario = @CodPrestatario; -- Abrir el cursor open cursor_Prestamo; DAI - Ing. Arturo Rozas Huacho 26
  • 27. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2 …) -- Activar la primera fila del cursor fetch next from cursor_Prestamo into @DocPrestamo, @FechaPrestamo, @ImportePrestamo -- Procesar cada fila repetitivamente while @@FETCH_STATUS = 0 begin -- Inicializar saldo prestamo set @SaldoPrestamo = @ImportePrestamo; -- Actualizar saldo total set @SaldoTotal = @SaldoTotal + @ImportePrestamo; -- Insertar prestamo en tabla de movimientos insert into #Movimientos values(@FechaPrestamo,@DocPrestamo,'', @ImportePrestamo,0,@SaldoPrestamo, @SaldoTotal) -- Procesar cancelaciones del prestamo declare @DocCancelacion varchar(15), @FechaCancelacion DateTime, @ImporteCancelacion numeric(15,2); DAI - Ing. Arturo Rozas Huacho 27
  • 28. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2 …) -- Declarar el cursor anidado declare cursor_Cancelacion cursor for select DocCancelacion, FechaCancelacion, ImporteCancelacion from Cancelacion where DocPrestamo = @DocPrestamo; -- Abrir el cursor open cursor_Cancelacion; -- Activar la primera fila del cursor fetch next from cursor_Cancelacion into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion -- Procesar cada fila repetitivamente while @@FETCH_STATUS = 0 begin -- Actualizar saldos set @SaldoPrestamo = @SaldoPrestamo - @ImporteCancelacion; set @SaldoTotal = @SaldoTotal - @ImporteCancelacion; DAI - Ing. Arturo Rozas Huacho 28
  • 29. Sistemas de Base de Datos 5.4- Procedimientos Almacenados… Ejercicios (Problema 2 …) -- Insertar prestamo en tabla de movimientos insert into #Movimientos values(@FechaCancelacion,'',@DocCancelacion, 0, @ImportePrestamo, @SaldoPrestamo, @SaldoTotal) -- Siguiente registro fetch next from cursor_Cancelacion into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion end; -- while -- Cerrar Cursor close cursor_Cancelacion; deallocate cursor_Cancelacion; -- Siguiente registro de prestamo fetch next from cursor_Prestamo into @DocPrestamo, @FechaPrestamo, @ImportePrestamo end; -- while -- Cerrar Cursor close cursor_Prestamo; deallocate cursor_Prestamo; -- Mostrar Movimientos select * from #Movimientos end; DAI - Ing. Arturo Rozas Huacho 29

Notas del editor

  1. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  2. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  3. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  4. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  5. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  6. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  7. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  8. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  9. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  10. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  11. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  12. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  13. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  14. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  15. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  16. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  17. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  18. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  19. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  20. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  21. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  22. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  23. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  24. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  25. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  26. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  27. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  28. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho
  29. ALGORITMICA II - Tipos Abstractos de Datos (TAD) DAI - Ing. Arturo Rozas Huacho