_________________________________________________________________________ UNIVERSIDAD DE BUENOS AIRES FACULTAD DE CIENCIAS ECONÓMICAS TECNOLOGÍA DE LA INFORMACIÓN Guía Unificada de Trabajos Prácticos para cursos regulares 4ª Cátedra. Titular: Dr: Jose Seoane Autores (por orden alfabético): Prof. González Bosque, Marcelo Prof. Mortara, Lucila Prof. Regueiro Pérez, María Alejandra Prof. Rodríguez Sebedio, Mariana UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Índice: Parte Teórica Estructura de Datos. Normalización SQL Diagramación Lógica Parte Practica Normalización Ejercicios Normalización Ejercicio 1: Caso: MuyFacil Sociedad de hecho Ejercicio 2: Caso: Pottery Dolls.com. Ejercicio 3: Expedientes Digitales Ejercicio 4: Caso: Drawings Consulting Ejercicio 5: Caso: Salsipuedes Ejercicio 6: Caso: NotadePedido Ejercicio 7: Caso: Biblioteca Ejercicio 8: Caso: Videoclub Ejercicio 9: Caso: Cotización de una ferretería Ejercicio 10: Caso: Informe de Servicio técnico Ejercicio 11: Caso: Orden de pago Ejercicio 12: Caso: Presupuesto Parte Practica Proyectos Ejercicio 13: Caso: Construcción de un sitio WEB 2 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Parte Practica SQL Ejercicio 14: Caso: Ejercicios SQL Ejercicio 15: Caso: Mas Ejercicios SQL Parte Practica Diagrama de Lógica Ejercicio 16: Caso: “Publicaciones” Ejercicio 17:Caso : “Medicina Prepaga” Ejercicio 18: Caso: “Comercialización de botas” Ejercicio 19:Caso:: “Recaudación de impuestos” Ejercicio 20:Caso: “Casa de comidas rápidas” Ejercicio 21:Caso: “ Almacenes” Ejercicio 22:Caso: “Videoclub” 3 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Estructura de Datos. Metodología para resolver los ejercicios de normalización Por Lic. Marcelo González Bosque La Normalización es una técnica que nos permite introducir los datos en las tablas y diseñar las mismas de tal manera de hacer mas eficientes las búsquedas de datos y las consultas de información. Los ejercicios pueden provenir presentados como un formulario, o como un texto. El primer paso para la resolución consiste en extraer los datos relevantes que van a formar parte de nuestra base de datos e ignorar la información irrelevantes y cálculos que no nos sirven para ser guardados. Como ejemplo de estos tenemos al nombre de la propia empresa. Generalmente debemos suponer que la empresa no guarda su propio nombre en una base de datos, o que si lo hace se trata de otro sistema aparte. Los cálculos tampoco deben ser guardados sino los datos fuente. La computadora se puede ocupar de reconstruir el valor a partir de los datos fuente. Ejemplos típicos son los "totales", "subtotales" etc. Si tenemos los datos originales, la maquina puede sumarlos Veamos el siguiente ejemplo: Ejercicio Tema: Empresa de Medicina Laboral. En el ejemplo que desarrollaremos a continuación, el campo Empresa significa la empresa Cliente, o sea que la empresa que contrata el servicio, no el nombre de la propia empresa. Veamos el siguiente formulario: 4 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Paso 1: Extracción de los datos relevantes: Los mismos son: Fecha, Empresa, Apellido, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora. Llamaremos a estos datos ARCHIVO PLANO. El archivo plano será la base para confeccionar nuestra base de datos. Paso 2. Identificar los campos codificables. Los campos codificables son aquellos en los cuales los valores que se van a colocar están acotados a una serie de respuestas finitas. Ejemplo: En una base donde aparezca el campo "Color", la respuesta podrá ser solo "blanco", "azul", "rojo", es decir nombres de colores, pero no puede ser "rugoso", "húmedo" o "1234". En otras palabras, la respuesta está acotada a los nombres de los colores y nada mas que los nombres de los colores. No podríamos codificar un campo "Comentarios", ya que las respuestas dadas serán tan dispares y no frecuentes que en la practica cada registro tendrá una respuesta diferente. Volviendo al campo codificable "Color" Podríamos tener entonces una tabla como la siguiente. El numero de registro no es el código, sino una numeración dada automáticamente por la computadora a medida que se crea un nuevo registro. Nº COLOR Registro 1 rojo 5 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. 2 rojo 3 violeta 4 Violeta 5 verde azulado 6 verde azulado 7 verde asulado 8 Escarlata 9 Escarlata Observando detenidamente, tenemos que: a) Cuando tenemos que escribir el valor completo en vez de un código, podemos cometer errores (verde asulado). Para la computadora, este error hace que el dato sea tratado como un dato diferente en vez de un error. Si le pedimos que cuente cuantos registros hay de color "verde azulado", contara solo 2, porque el registro "verde asulado" no será considerado como "verde azulado". b) Por otro lado, generalmente existen sinónimos de los datos, que en definitiva provocan el mismo error que si fuera una falta de ortografía. Por mas que rojo y escarlata son lo mismo, si le pedimos a la maquina que nos diga cuantos registros "rojos" hay nos dirá 2 en vez de cuatro. También se puede dar el caso opuesto o sea el tener homónimos (datos que parecen iguales pero son distintos). En cambio, si usamos las tablas codificadas, tendremos: Tabla Nro 1 Tabla Nro 2 Cantidades Colores Nº Registro Color Codigo Nombre 1 1 1 rojo/escarlata 2 1 2 violeta 3 2 3 verde azulado 4 2 5 3 6 3 7 3 8 1 9 1 Vemos que por el hecho de codificar los colores, obtenemos los siguientes efectos: 6 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. a) Es mucho mas difícil equivocarse. El operador puede llegar a cargar "2" en vez de "1", pero este error es mucho mas difícil de hacer que escribir el nombre del color con algún tipo de error de ortografía. b) La carga de datos es mas rápida. No es lo mismo escribir "1" que "rojo/escarlata" c) Se evita el problema de los sinónimos. "Rojo" es "1", lo mismo que "escarlata" y no se generan problemas de interpretación con los sinónimos d) La maquina no se equivoca. Si le pedimos saber cuantos registros rojos hay, responderá "4". Por ende, hay que identificar los campos codificables que existan en la lista de campos que hemos extraído del punto anterior. Aquí tenemos dos posibilidades: a. Que los campos ya estén codificados b. Que no lo estén: En este caso el analista debe crear códigos para los mismos. Volviendo al ejercicio de Medicina Laboral, tenemos que el listado de campos es: Fecha, Empresa, Apellido, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora. Vamos a trabajar con Apellido y nombre como si fueran un solo campo llamado nombre ya que no tiene sentido el tener separado al nombre del apellido. Podemos observar que los campos empresa y nombre son codificables, pero que no tienen código, por lo que hay que crearlo. Por otro lado, el formulario mismo no esta codificado. Una buena norma de control interno de circuitos administrativos, (aplicable en este caso al análisis de sistemas,) indica que los formularios o documentos deben estar prenumerados a los efectos de su mejor control. Por ende, procederemos también a prenumerar el equivalente electrónico del formulario. Nos quedan entonces: Nro de formulario, Codigo de Empresa, Nombre de Empresa, Fecha, Legajo, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora. Paso 3. Establecer claves primarias, secundarias , dependencias y dar nombre a las tablas. Si tenemos una hipotética tabla con los campos Legajo Apellido Nombre Sueldo 1 Gómez Juan $1000 2 Sánchez pedro $500 3 Rodríguez Alberto $400 4 Sánchez Juan $200 5 Sánchez Juan $300 7 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Si queremos ubicar una persona determinada, podemos buscar por apellido, pero también podemos llegar al mismo si sabemos el numero de legajo. En otras palabras, Se puede buscar los datos del Sr. Rodríguez pero también los del numero de legajo 3. Observando bien los datos vemos aquí un caso de Homónimos: Hay tres Sres. Sánchez. El Sr. Sánchez de legajo Nro 2 no es el mismo del legajo 4. Si buscamos "Sánchez" por nombre nos encontraremos con tres registros. Si buscamos "Juan Sánchez", igual nos encontramos con dos personas diferentes. Vemos aquí el caso que buscar gente por el nombre puede dar lugar a ambigüedades (encontrar mas de una persona), porque puede haber varias personas que se llamen igual. Si queremos saber cual es el sueldo de "Juan Sánchez", buscando por nombre y apellido, eso no es posible ya que no sabemos si nos referimos al de $200 o al de $300. Para la mayoría de las operaciones computacionales, es necesario el poder ubicar exactamente el registro necesario, o sea al Sr. Sánchez requerido. Para ello se necesitan determinados campos que me permitan identificar el registro (la fila de datos) sin ambigüedades. Estos campos reciben el nombre de "Claves primarias" del registro, y coinciden generalmente con alguna de los códigos acerca de los que estábamos hablando en el punto anterior. Las claves pueden ser de un campo ("Nombre"), en donde se llaman claves simples, o de varios campos ("Nombre" + "apellido"), en donde se llaman claves concatenadas. En ejemplos mas complejos, además de la clave primaria pueden aparecer otras claves, que reciben el nombre de claves secundarias o de selección. Las claves secundarias dependen de la clave primaria. Los campos que no son clave, reciben el nombre de campos "dependientes" de la clave. Es decir, si se va a buscar por numero de legajo, para averiguar el nombre, apellido y sueldo, estos campos "dependen" del numero de legajo para ser identificados. La dependencia, entonces es una propiedad que poseen todos los campos que no son clave, con respecto a la misma. En este ejemplo, ni "Nombre" ni "Apellido" ni "Nombre+apellido" son buenas claves primarias. En cambio "Legajo" es una buena clave primaria, ya que identifica a las personas sin ambigüedades. Se presupone que cada empleado tiene un único numero de legajo. Si se busca entonces el sueldo del legajo Nro 5, el resultado es $300. La clave primaria se puede denotar subrayando el campo o con un asterisco Tenemos entonces una tabla: LEGAJO,NOMBRE,APELLIDO,SUELDO, donde legajo es la clave primaria. Es conveniente dar un nombre aglutinante a los campos de las tablas. Cualquier nombre que represente la idea de lo que contiene la tabla es apropiado. El analista debe poner nombre a las tablas. Una vez que hemos nombrado a las tablas, se exponen las mismas en el siguiente formato: PERSONAL(LEGAJO,NOMBRE,APELLIDO,SUELDO) En donde PERSONAL es el nombre de la tabla, los campos están entre paréntesis y el campo subrayado es la clave primaria. Por ende, tenemos que: Legajo: Clave Primaria Nombre, apellido, sueldo: Dependen de Legajo Volviendo al ejemplo principal Medicina Laboral, tenemos que habíamos llegado a: Nro de formulario, Codigo de Empresa, Nombre de Empresa, Fecha, Legajo, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora. El único campo que me permite recuperar el registro sin ambigüedades ni repeticiones es el Nro de formulario, por lo que será nuestra clave primaria. Podemos darle un nombre a este archivo plano, en concordancia con lo antes visto, con lo que nos queda: 8 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Archivo Plano Medicina Laboral (Nro de formulario, Código de Empresa, Nombre de Empresa, Fecha, Legajo, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) El siguiente paso (opcional) es construir un cuadro, al que denominaremos "Cuadro de Dependencias General", que resuma la información antes dicha: Cuadro de Dependencias General Nro de formulario clave primaria Codigo de Empresa clave secundaria Nombre de Empresa depende de Codigo de Empresa Fecha depende de Nro de formulario Legajo clave secundaria Nombre depende de Codigo de Empresa + Legajo Atendidoen depende de Nro de formulario Hora depende de Nro de formulario Informe depende de Nro de formulario Deambula, depende de Nro de formulario Trabaja depende de Nro de formulario Trabajadia depende de Nro de formulario Citadodia depende de Nro de formulario citadohora depende de Nro de formulario Paso 4. Aplicar las Formas Normales. El archivo plano todavía no esta optimizado. La Normalización es una técnica que se usa para optimizar el tamaño y rendimiento de los archivos. Para hacerlo se aplican las llamadas "Formas normales" elaboradas por los autores Boyce y Codd en ladécada de los 1970’s Identificación de las Formas normales según el método de Boyce y Codd Se parte de un archivo plano (por definición no normalizado) con sus claves identificadas y sus relaciones de dependencia discriminadas. En nuestro caso el archivo plano lo tenemos al final del punto anterior. Los autores identifican varios efectos, pero en la practica de usan los tres primeros, a los que se llaman Primera, segunda y tercera forma normal. (1FN, 2FN y 3FN) La primera forma normal requiere identificar grupos repetitivos y separarlos del archivo plano. 9 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Ejemplo de grupo repetitivo : En la tabla: Legajo Nombre Apellido Nombre Hijos 1 Juan Gomez Carlos 2 Pedro Suazo Piero 3 Perico Juarez Alicia 4 Silvia Quiroga Juan 4 Silvia Quiroga Pedro 4 Silvia Quiroga Lucho 4 Silvia Quiroga Pucho 4 Silvia Quiroga Cucho Vemos que el legajo 4 tiene 5 hijos, lo que obliga a crear registros en blanco solo para poner el nombre de los hijos. Esto esta visto por la teoría como un efecto indeseable en una tabla que debe ser optimizado ya que hace mas lentos a los procesos de la tabla y genera problemas para buscar/recuperar los datos. Un grupo repetitivo es un campo que puede tener varios valores para un mismo registro. (una persona tiene un legajo, un nombre y apellido, pero puede tener varios hijos) Entonces la 1FN nos dice que partiendo del archivo plano: PERSONAL(LEGAJO,NOMBRE,APELLIDO,NOMBRE HIJOS), lo dividamos en: PERSONAL(LEGAJO,NOMBRE,APELLIDO) HIJOS(LEGAJO,NOMBRE HIJOS) En forma conceptual: Si tenemos una tabla: TABLA(1,2,3,4), donde 1 es la clave primaria y 4 es un campo que puede tener varias ocurrencias por cada una de los demás campos, se separa el grupo repetitivo de los demás campos. Nos queda: TABLA(1,2,3) TABLA2(1,4) Nótese que ambas tablas comparten el campo “1”, el cual es la clave primaria de la primera tabla, y forma parte de la clave primaria concatenada de la segunda. En este punto, las tablas están en Primera forma Normal 1FN 10 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. TABLA(1,2,3,4)= Archivo Plano no normalizado TABLA(1,2,3) TABLA2(1,4)= Tablas luego de aplicar 1FN Volviendo al ejemplo de Medicina Laboral, no se encuentran grupos repetitivos, por lo que por el momento no hay que hacer nada. Esto es así porque cada formulario esta hecho para un solo paciente. Si el formulario pudiera abarcar a mas de un paciente tendríamos grupos repetitivos. Un archivo plano que no tiene grupos repetitivos pasa automáticamente a estar en 1FN, y deja de llamarse archivo plano, para llamarse "Tabla". Medicina Laboral(Nro de formulario, Código de Empresa, Nombre de Empresa, Fecha, Legajo, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.)= Esta en 1FN La segunda forma normal se da en casos en que exista una clave primaria concatenada (ver definición en los párrafos precedentes) y requiere identificar campos que no dependan totalmente de la clave concatenada y separarlos de las tablas. La segunda forma normal nos pide identificar y separar los campos que completamente de la clave primaria concatenada y los que no dependan. dependan En este ejemplo, al no haber una clave primaria concatenada, podemos decir que la tabla está en segunda forma normal 2FN. Para ampliar la explicación veamos un ejemplo conceptual: Supongamos una tabla de asignación de tareas por día. A cada legajo se le asigna solo una tarea diferente por cada día. Tareasxdia(Legajo, dia, nombre_empleado, tarea) Dado que cada tarea varia cada día, no es suficiente con el legajo solo para ubicar a la tarea especifica, sino que es la tarea que un legajo tiene en un día determinado. La clave primaria es "Legajo+dia". “Tarea” depende de la clave primaria Legajo+dia. Hasta aquí no hay problema. Sin embargo, "nombre_empleado" solo depende del numero de legajo, no tiene nada que ver con día. Tenemos entonces que se separa el campo nombre y queda: Tareasxdia(Legajo, día, tarea) Legajos(Legajo, nombre_empleado) 11 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. En forma conceptual: Si tenemos una tabla: TABLA(1,2,3,4), donde 1+2 es la clave primaria y 4 es un campo que no depende totalmente de ella, (depende solo de 1) se separa el campo de la tabla. TABLA(1,2,3) TABLA2(1,4) Nótese que ambas tablas tienen distinta clave primaria, aunque comparten el campo común “1” en ambas claves. En este punto, las tablas están en Segunda forma Normal 2FN TABLA(1,2,3) TABLA2(1,4) = Tablas luego de aplicar 2FN La tercera forma normal se da en casos en que existan claves secundarias (ver definición en los párrafos precedentes) y campos que dependan de estas claves secundarias. La operatoria requiere identificar los campos que dependan de las claves secundarias y separarlos de la/s tabla/s. Las claves secundarias pueden ser simples o concatenadas. En otras palabras, la/s tabla/s se dividen de tal manera de extraer los campos que dependen de las claves secundarias. Partiendo de : Medicina Laboral(Nro de formulario, Codigo de Empresa, Nombre de Empresa, Fecha, Legajo, Nombre, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) En donde: Nro de formulario: clave primaria Codigo de Empresa: clave secundaria Nombre de Empresa: depende de Codigo de Empresa Fecha: depende de Nro de formulario 12 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Legajo: clave secundaria Nombre: depende de Codigo de Empresa + Legajo Atendidoen: depende de Nro de formulario Hora :depende de Nro de formulario Informe: depende de Nro de formulario Deambula: depende de Nro de formulario Trabaja: depende de Nro de formulario Trabajadia: depende de Nro de formulario Citadodia: depende de Nro de formulario Citadohora: depende de Nro de formulario Tenemos que "Nombre" depende de "Código de Empresa + Legajo" como clave secundaria concatenada, pero esta clave depende de "Nro de formulario" que es la clave primaria. Aplicamos tercera forma normal y nos queda: Empleados x Empresa(Codigo de Empresa, Legajo, Nombre) Medicina Laboral(Nro de formulario, Codigo de Empresa, Nombre de Empresa, Fecha, Legajo, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) Tenemos también el campo Nombre de Empresa que depende de Codigo de Empresa, que es una clave secundaria simple que a su vez depende de la clave primaria. Aplicando la tercera forma normal para este caso, nos queda: Empleados x Empresa(Codigo de Empresa, Legajo, Nombre) Medicina Laboral(Nro de formulario, Codigo de Empresa, Fecha, Legajo, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) 13 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Empresas Clientes( Codigo de Empresa, Nombre de Empresa) Como no encontramos mas campos que normalizar, podemos decir que las tablas están normalizadas. Nuestra solución del ejercicio es entonces: 1. Empleados x Empresa(Codigo de Empresa, Legajo, Nombre) 2. Medicina Laboral(Nro de formulario, Codigo de Empresa, Fecha, Legajo, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) 3. Empresas Clientes( Codigo de Empresa, Nombre de Empresa) Estas tres tablas constituyen nuestra base de datos del sistema. En forma conceptual: Partiendo de TABLA(1,2,3,4), donde 1 es la clave primaria, 3 una clave secundaria y 4 es un campo que depende de la clave secundaria 3, se separan los campos que dependen de la clave secundaria de la tabla principal TABLA(1,2,3,) TABLA2(3,4) Nótese que si bien ambas tablas comparten el campo “3”, el mismo no forma parte de la clave primaria de la primer tabla, a diferencia de la 1FN en la que las tablas tienen en sus claves primarias un campo en común. En este punto, las tablas están en Tercera forma Normal 3FN 14 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. TABLA(1,2,3,4)= Tabla antes de 3FN TABLA(1,2,3) TABLA2(3,4)= Tablas luego de aplicar 3FN. Tablas normalizadas Paso 5: Diagrama de Entidad Relación. (DER). Mapa de Relaciones. Una vez obtenidas las tablas normalizadas, resta realizar el diagrama de entidad relación. (DER), originado en la metodología del autor Yourdon. Vamos a explicar aquí la modalidad conocida como Mapa de Relaciones. La misma parte de la base de que las tablas las tablas normalizadas. Volviendo al ejemplo nos quedaban tres tablas. Aquí las llamaremos Entidades: Por ende, la primera parte que es identificar las entidades ya la tenemos resuelta al tener las tablas normalizadas. Empleados x Empresa Medicina Laboral Empresas Clientes La segunda parte consiste en identificar las relaciones entre las tablas. Esto también se obtiene de las tablas normalizadas. Las tablas que tengan una clave o campo en común, serán las que tengan relaciones. De la observación de los campos de las tablas se manifiesta que: Empleados x Empresa se relaciona con Medicina Laboral por medio de su clave codigo de empresa +legajo con los campos equivalentes de Medicina Laboral. Empresas Clientes se relaciona con Medicina Laboral por medio de su clave codigo de empresa con el campos equivalente de Medicina Laboral. Nuestro mapa de relaciones hasta el momento es el siguiente: 15 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Empleados x Empresa Medicina Laboral Empresas Clientes El DER requiere además que se especifique el tipo de relación entre las entidades. Las relaciones validas entre dos entidades pueden ser: • De 1 a 1 • De 1 a muchos (o muchos a 1) Desde el punto de vista teórico, si una relación es de muchos a muchos, delata que la normalización no se ha hecho correctamente. La misma debe ser reconsiderada como dos relaciones, una de uno a muchos y otra de muchos a uno. Ejemplo de nomenclatura de relación 1 a 1 Entidad 1 ||----------|| Entidad 2 Ejemplo de nomenclatura de relación 1 a muchos (Entidad 1 con Entidad 2) y muchos a 1 (Entidad 2 con Entidad 3) Entidad 1 ||----|< Entidad 2 >|----|| Entidad 3 Las relaciones (1 a 1) o (1 a muchos) dependen de las características de cada sistema y son relativas al comportamiento de los registros de las tablas. En el caso de la relación 1 a 1 significa que un registro de la tabla 1 estará relacionado con sólo 1 registro de la tabla 2. En el caso de la relación 1 a muchos, significa que un registro de la tabla 1 podrá estar relacionado con mas de un registro de la tabla 2. 16 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Volviendo al ejercicio de Medicina Laboral, tenemos que: Cada formulario tiene espacio para una sola persona. No se pueden poner datos de mas de una persona por formulario. Esto implica que cada registro de la tabla Medicina Laboral, que contiene los datos del formulario solo podrá estar relacionado con un registro de la tabla Empleados x Empresa, pero cada empleado puede haber estado enfermo varias veces, por lo que cada registro puede estar relacionado con muchos registros de Medicina Laboral. Si suponemos que cada empleado trabaja en una sola empresa a la vez (lo que seria lo mas lógico), cada registro de la tabla Medicina Laboral, que contiene los datos del formulario sólo podrá estar relacionado con un registro de la tabla Empresas Clientes o sea la empresa en que trabaja el paciente de cada formulario, pero una empresa seguramente va a tener varios empleados enfermos a lo largo del tiempo, por lo que cada registro de Empresas Clientes puede estar relacionado con muchos registros de Medicina Laboral, Se vuelve a hacer hincapié que el tipo de relación varía de sistema en sistema y debe ser averiguado por medio del relevamiento en campo y del uso del sentido común. En este ejemplo entonces nos queda que: Empresas Clientes ||----|< Medicina Laboral >|----|| Empleados x Empresa 17 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Introducción al SQL. Instrucciones usuales Por Lic. Marcelo González Bosque El SQL (siglas en ingles de Structured Query Language - Lenguaje de Consultas Estructurado) es un medio estandarizado de realizar operaciones en las bases de datos, ya que esta soportado (implementado) en la mayoría de los programas modernos. Como ejemplo, todos los programas de la plataforma Microsoft(*) como Access, SQL Server, Visual Basic, ASP etc. lo han incorporado, por lo que su difusión es global y masiva. Esto quiere decir que simplemente teniendo acceso a alguno de estos programas, tendremos la oportunidad de poder utilizar este lenguaje. Características: A los efectos de este trabajo, se tomará como base el programa Microsoft Access, pero esto no implica en modo alguno que su utilización sea mejor a otros software de compañías diferentes. Existen dos maneras de introducir el código SQL. 1) De modo directo 2) Utilizando un programa generador de codigo El Access nos permite elegir entre ambas modalidades. ___________________________________________________________________________ Introduciendo Instrucciones SQL mediante un generador de Código Partiendo de una base de datos, compuesta por varias tablas normalizadas, nosotros podemos efectuar consultas de la siguiente manera: 18 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Paso 1: Entrar al programa Access. La pantalla que aparecerá será similar a la expuesta a continuación. La misma cambia según la versión que tengamos, pero mantiene los componentes principales. Dentro de esta pantalla, se deberá seleccionar la opción "Consultas" aquí señalada como un texto recuadrado en el menú de la izquierda. Una vez en ese lugar observamos que en el menú de arriba existen dos opciones, una llamada "Nuevo" para efectuar nuevas consultas y una llamada "diseño" para modificar las ya hechas. Paso 2: Al presionar el menú "Nuevo", aparece la siguiente pantalla. Seleccionamos la opción "Vista diseño" y aparece la siguiente pantalla: 19 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. La misma nos pide seleccionar las tablas (que deben haber sido creadas anteriormente). Por ejemplo, seleccionamos una de las tablas llamada "payroll", que contiene los campos: Payroll(ID,orden,legajo,nombre,sit_revista) La pantalla se convierte en: Esta es una pantalla generadora de código, es decir que ayuda al operador a generar automáticamente el código SQL respectivo. Todo lo que debemos hacer es poner el nombre de los campos que queramos consultar en la fila llamada "Campos" y el nombre de la tabla en la segunda fila. En este ejemplo le estamos 20 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. pidiendo al Access que haga una consulta SQL del cuil, el nombre y la situación de revista de la tabla "payroll" Una vez llena la tabla con los datos nos queda lago similar a: La tercera fila llamada "Orden" sirve para ordenar el listado resultante cualquiera de los campos podemos ingresar las palabras "Ascendente" o "Descendente". Por ejemplo, si ingresáramos la palabra "Descendente" en la columna nombre obtendríamos como resultado el listado ordenado inversamente de la Z a la A. LA cuarta fila "Mostrar" sirve para identificar que campos se quiere ver y cuales no en el resultado. En el ejemplo se ve que en realidad se pide que solo se visualice el cuit y el nombre pero no la situación de revista. LA ultima fila "Criterios" sirve para establecer un filtro al listado. Vemos entonces que justamente el campo "situación de revista" no se muestra pero es utilizado para establecer un filtro. En este caso el filtro es "Todos los registros que incluyan el texto "92/95". Haciendo un resumen general, el programa generara la orden SQL que me permita hacer un listado de los campos cuil y nombre de la tabla payroll, sin orden en especial, pero solamente aquellos registros que incluyan el texto "92/95" en el campo Sit_revista. Para activar (ejecutar) esta consulta hay que presionar el icono del signo de admiración. En la imagen siguiente el mismo aparece en el menú de la parte superior. Es el penúltimo icono de la fila. 21 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Una vez ejecutada la consulta obtendremos similar a una hoja "Excel" con dos columnas, cuit y nombre, con los datos anteriormente descriptos. ___________________________________________________________________________ Introduciendo Código SQL mediante teclado (tipeo manual) No todos los programas tienen un generador de código como el anteriormente descrito. En estos casos debemos utilizar la segunda opción que es la introducción manual del código SQL. Si observamos la imagen anterior, veremos que el primer icono, dice simplemente "SQL". El mismo sirve justamente para cambiar el modo de introducir el código, ya sea con ayuda del generador como sin el mismo. Si lo presionamos obtendremos lo siguiente: He aquí el código SQL que el generador ha creado para nosotros. ## Cuit de Organismo: Consulta de Selección Select payroll.CUITCUIL, payroll.NOMBRE FROM payroll WHERE (((payroll.SIT_REVISTA) Like “*92/95*”)); La instrucción de la imagen superior es equivalente a la consulta realizada usando el generador. Examinemos los componentes detenidamente: Una consulta SQL comienza con la instrucción "SELECT", seguida por los nombre de los campos. Es opcional escribir solamente el campo o ingresarlo en el formato [tabla.campo] cuando hay una sola tabla. En opciones mas avanzadas, es obligatorio el uso de este segundo formato. En otras palabras: Select CUITCUIL, NOMBRE es igual a poner: Select payroll.cuitcuil, payroll.nombre A continuación de los campos, la sintaxis SQL prosigue con la sentencia "FROM" y el nombre de la tabla. 22 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Tenemos entonces hasta aquí que la orden para obtener un listado del cuit y en nombre de la tabla payroll es: SELECT Cuitcuil, nombre from payroll Esta es una orden SQL completa y funciona perfectamente. Para establecer el filtro, debemos añadir la orden "WHERE" seguida del nombre de un campo y una condición. Para pedirle a la computadora un listado del cuit y nombre de la tabla payroll solamente de aquellos registros que tengan el texto "92/95" en el campo sit_revista, deberemos ingresar: SELECT Cuitcuil, nombre from payroll WHERE sit_revista LIKE "*92/95*" Esta es la orden SQL final, la cual es equivalente a haberla ingresado con el generador de código. ___________________________________________________________________________ OPERACIONES BASICAS: CONSULTAS: VARIANTES PARA ESTABLECER CONSULTAS: Si quisiéramos que el listado hubiese estado ordenado por nombre, en orden alfabético, deberíamos incluir la orden SQL "ORDER BY" y el campo. La instrucción quedaría entonces como: SELECT Cuitcuil, nombre from payroll WHERE sit_revista LIKE "*92/95*" ORDER BY nombre También podríamos haber utilizado el operador igual en vez de LIKE. La orden quedaría como: 23 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. SELECT Cuitcuil, nombre from payroll WHERE sit_revista = "92/95" ORDER BY nombre Notese que cuando usamos LIKE encerramos el texto entre asteriscos y cuando usamos " = " no. La diferencia entre LIKE e = es que LIKE busca todas las ocurrencia en donde el texto se encuentre en el campo, aunque haya mas texto, mientras que igual solo busca las concurrencias en donde el texto coincida exactamente. Ejemplos: • El Texto: 92/95 será verdadero (será encontrado) tanto para LIKE como para = • El texto: ABC 92/95 será encontrado por LIKE pero no por =, ya que este requiere una coincidencia exacta entre lo buscado y el dato del campo. • El texto: 092/950 será encontrado por LIKE pero no por =, ya que este requiere una coincidencia exacta entre lo buscado y el dato del campo. Si quisiéramos filtrar por todos los registros que NO tengan el texto "92/95", podemos usar el operador "distinto" que se escribe <> La orden quedaría entonces como: SELECT Cuitcuil, nombre from payroll WHERE sit_revista <> "92/95" ORDER BY nombre Finalmente, si quisiéramos que el orden fuera revertido, es decir que sea de Z a A, deberíamos escribir: SELECT Cuitcuil, nombre from payroll WHERE sit_revista <> "92/95" ORDER BY nombre DESC 24 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. FILTROS POR MAS DE UN CAMPO: Si quisiéramos filtrar por mas de un campo a la vez debemos incluir el operador AND ("Y" lógico) o el operador OR ("O" lógico). Ejemplo: Si quisiéramos filtrar todos los registros que NO tengan el texto "92/95" y con nombre igual a "Gomes",la orden quedaría como: SELECT Cuitcuil, nombre from payroll WHERE sit_revista <> "92/95" AND nombre="GOMES" ORDER BY nombre. En este caso se deben dar ambas condiciones a la vez. La situación de revista no debe contener el texto 92/95 y en nombre debe ser igual a Gómez. Finalmente, si quisiéramos que me diera cualquiera de los dos, es decir todos los que se llamen Gómez o se llamen Rodríguez, ordenado por nombre, deberíamos escribir: SELECT Cuitcuil, nombre from payroll WHERE nombre="GOMEZ" OR nombre="RODRIGUEZ" ORDER BY nombre RELACIONES ENTRE TABLAS: Dos o mas tablas pueden relacionarse en una base de datos (relacional) siempre que tengan algún campo en común. De esta manera, se puede establecer una consulta que abarque datos de ambas tablas a la vez. Supongamos que tenemos tres tablas, una con datos de las empresas, otra con la codificación de los países y otra con un listado de los países en que cada empresa tiene sucursales. 1. Empresas(Código, Nombre, dirección, teléfono) 25 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. 2. Países (Código, Nombre) 3. Sucursales( Código empresa, Código país) Si quisiéramos tener un listado de: Código de empresa, nombre de la empresa y código de país en que tienen sucursales debemos establecer una relación entre las tablas "Empresas" y "Sucursales". La Orden SQL "Inner Join" se encarga de realizar esta operación. La sintaxis general es: SELECT campo,campo2 FROM tabla1 INNER JOIN tabla2 ON campo en comun de tabla 1 = campo en comun de tabla 2; Nuestro ejemplo nos queda entonces como: SELECT Empresas.Codigo, Empresas.Nombre, Sucursales.CodigoPais FROM Empresas INNER JOIN Sucursales ON Empresas.codigo = Sucursales.CodigoEmpresa; Nótese que solo podemos consultar el código de país porque el nombre se encuentra en la tabla "países". Si quisiéramos tener un listado de: Código de empresa, código de país y el nombre del país en que tienen sucursales debemos establecer una relación entre las tablas "Países" y "Sucursales". Nuestro ejemplo nos queda entonces como: SELECT Paises.Codigo, Paises.Nombre, Sucursales.CodigoEmpresa FROM Paises INNER JOIN Sucursales ON Paises.codigo = Sucursales.CodigoPais; Nótese que solo podemos consultar el código de empresa porque el nombre se encuentra en la tabla "empresas". Finalmente podríamos querer algo mas complejo: Una relación entre las tres tablas, para obtener: Código de empresa, nombre de la empresa, código de país, nombre del país. Debemos establecer una relación entre las tablas "Empresas", "Países" y "Sucursales". En este caso debemos usar dos cláusulas INNER JOIN. La primera la encerramos entre paréntesis para mayor claridad. SELECT Empresas.codigo, Empresas.nombre, Paises.codigo, paises.nombre FROM (Empresas INNER JOIN Sucursales ON Empresas.codigo = Sucursales.CodigoEmpresa) INNER JOIN Paises ON Sucursales.CodigoPais = Paises.Codigo; 26 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Nótese que no es posible establecer una relación directa entre Empresas y Países ya que no tienen ningún campo en común. Por ende, se necesita hacer una triangulación utilizando la tabla Sucursales como medio de unión entre ambas. INSERCION DE DATOS EN LOTE (MODO BATCH): Supongamos que tenemos una tabla de clientes. Súbitamente nos llega en una nueva tabla un listado de nuevos clientes a los que hay que anexar a nuestra tabla. Tendremos entonces: a) Clientes(Codigo, Nombre, direccion, telefono) b) NuevosClientes(Codigo, Nombre, direccion, telefono) Nuestra Orden SQL para esta tarea es : INSERT INTO Tabla (campo de la tabla en la que se inserta) SELECT (campo a insertar) FROM Tabla2 (la tabla desde la cual se inserta) Nos quedaria: INSERT INTO Clientes (Codigo, nombre, direccion,telefono) SELECT NuevosClientes.Codigo, NuevosClientes.nombre,NuevosCLientes.direccion, NuevosCLientes.telefono FROM NuevosCLientes BORRAR DATOS EN LOTE (MODO BATCH): Volviendo a nuestro ejemplo anterior: a) Empresas(Codigo, Nombre, direccion, telefono) b) Paises (Codigo, Nombre) 27 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. c) Sucursales( CodigoEmpresa, CodigoPais) Si quisieramos borrar todas las empresas que pertenezcan al pais codigo "XX" debemos usar la orden SQL "DELETE". Recordemos que el uso del asterisco * implica todos los campos de una operacion SQL. Si utilizamos el asterisco aqui estamos significando que queremos borrar todos los campos de la tabla La sintaxis es la siguiente: DELETE Tabla.* FROM Tabla INNER JOIN Tabla2 ON (campo en comun1) = (campo en comun 2) WHERE campo="valor"; Para nuestro ejemplo: DELETE Empresas.* FROM Empresas INNER JOIN Sucursales ON Empresas.Codigo = Sucursales.CodigoEmpresa WHERE Sucursales.CodigoPais="XX"; Este ejemplo borra solo los registros de la tabla empresas, pero no los de la tabla sucursales. Si quisieramos borrar al mismo tiempo los registros relacionados de ambas tablas, estariamos en el caso de un borrado en cascada (llamado tambien borrado con respeto a la integridad referencial) La orden seria entonces: DELETE Empresas.*, Sucursales.* FROM Empresas INNER JOIN Sucursales ON Empresas.Codigo = Sucursales.CodigoEmpresa WHERE Sucursales.CodigoPais="XX"; ACTUALIZAR DATOS EN LOTE (MODO BATCH): Volviendo a nuestro ejemplo de clientes, supongamos ahora que tenemos nuestra tabla de clientes y nos mandan una nueva tabla con las direcciones modificadas. Lo que se pretende es modificar (actualizar) las direcciones de los clientes que se encuentram en la tabla nuevas direcciones: 28 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. a) Clientes(Codigo, Nombre, direccion, telefono) b) NuevasdireccionesClientes(Codigo, direccion) Nuestra Orden SQL para esta tarea es : UPDATE tabla INNER JOIN tabla2 ON (campo en comun 1) = (campo en comun 2) SET (campo a actualizar) = (campo con los datos nuevos); Para nuestro ejemplo: UPDATE clientes INNER JOIN NuevasdireccionesClientes ON clientes.codigo = NuevasdireccionesClientes.direccion SET clientes.direccion = NuevasdireccionesClientes.direccion; (*) Todas las marcas que aparecen en este trabajo ej:Microsoft, Excell, Access, Visual Basic, etc. son marcas registradas de sus respectivas empresas. 29 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Diagramación Lógica Por Prof. Lucila Mortara Sabemos que el computador es incapaz de procesar nada por sí solo; es una necesidad indicarle en forma completa, p recisa y secuencial la totalidad de lo que debe hacer. Es por esto que cuando se desea hacer uso de un computador se debe planificar detalladamente lo que se pretende que sea procesado. El trazado de un Diagrama de Lógica facilitará captar el problema en una simple observación y la definición del procedimiento para el computador. Un Diagrama de Lógica es un diagrama de flujo detallado que representa el comienzo y el fin del tratamiento de un proceso, las operaciones, las decisiones y la secuencia específi ca en que estás se deben cumplir. Todos los procesos pueden reducirse a unas pocas funciones básicas (mover datos, realizar operaciones aritméticas básicas, realizar operaciones de lectura y salida, realizar comparaciones) que son las que se representarán en el diagrama. Para realizar el proceso puede resultar necesario almacenar datos temporariamente en la memoria de la máquina. Para representar la información contenida en la memoria se utilizan variables, que son espacios de la memoria a los que se les da un nombre para poder trabajar más facilmente, sin referirse a las posiciones numéricas de la memoria. Las variables pueden contener cualquier tipo de datos: letras, números, caracteres. Dentro de las variables numéricas existen dos tipos particulares d e variables: los acumuladores y los contadores. Los acumuladores permiten almacenar una serie de datos que se incrementan en forma variable. Por ejemplo, si se quiere calcular un promedio de una serie de valores, se deberán sumar todas las cantidades. Esta suma es variable, ya que no se incrementa uniformemente por cada registro analizado. En cambio a la cantidad de registros utilizada como divisor para el cálculo del promedio siempre se le adiciona un valor fijo (1), por lo que la variable utilizada para almacenar este dato se denomina contador. acumulador + valor à acumulador contador + 1 à contador Para facilitar el armado del diagrama se recomienda utilizar nombres de variables cortos y que permitan identificar claramente lo que van a contener. SIMB OLOGÍA Símbolo Concepto representado Comienzo o fin del procedimiento detallado en el diagrama Ingreso de datos o salida de información Implica un proceso que realiza el computador, como una operación aritmética básica o una transferencia (carga de valor a una variable) Implica una comparación lógica, que será siempre dicotómica (SI o NO; = o < ; = o > ; =o ?) Ejemplos COMIENZO FIN LEER TARJETA 0 à SUMA 0 à CONTADOR IMPRIMIR SALDO SUMA à PROMEDIO CONTADOR COD : 1 = ? 30 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. A+B àC Determina la secuencia de las operaciones IMPRIMIR C Se usa al solo efecto de la diagramación, permitiendo conectar el diagrama cuando se usa más de una hoja Cuando se requiere especificar con mayor detalle el soporte de datos se utilizan símbolos especiales para cada uno, entre los que se encuentran los detallados en la tabla siguiente. SÍMBOLOS ESPECIALES DE INGRESO Y SALIDA DE DATOS IMPRIMIR SALDO Implica una salida por medio de un formulario impreso Implica una operación de lectura o grabación en una tarjeta perforada LEER TARJET Implica una lectura o grabación en una cinta magnética LEER CINTA Implica una lectura o grabación en discos magnéticos, tambores magnéticos, tarjetas magnéticas GUARDAR SALDO Para asegurar la comprensión del di agrama se complementa con un diagrama de sistema, la definición de la estructura de registro y la especificación de la condición de fin del proceso. Diagrama de sistema: es un diagrama que representa el proceso en un nivel menos detallado que el diagrama de lógica. Dentro del mismo se incluye solamente la especificación de la/s entrada/s al proceso y de la salida o salidas del mismo con sus correspondientes formatos. Ejemplo: si se cuenta con un proceso que lee un archivo de existencias de productos de u na cinta magnética, calcula la suma de las existencias totales y la guarda en un archivo e imprime un reporte con ese dato, el diagrama de sistema sería el expuesto a continuación. LEER CINTA PROCESO IMPRIMIR SUMA GUARDAR SUMA Estructura de registro del soporte de datos: Especificación de los campos en que se dividen los registros que están almacenados en el soporte de datos de entrada, y de los datos que contienen. Los nombres expuestos en la estructura de registro serán los que se utilizarán en el diagrama de lógica para referirse a la información contenida en los mismos dentro de cada soporte de entrada y posteriormente a la operación de lectura del mismo, por lo que se recomienda utilizar nombres cortos y aclarar en detalle en la definición de la estructura de registro los datos que contienen. 31 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Ejemplo: el registro de la cinta magnética dentro del ejemplo anterior debería contener al menos los siguientes campos: ESTRUCTURA DE REGISTRO CODPROD: codigo del producto CANTEX: cantidad de unidades del producto en existencia Condición de fin del proceso: Especificación de la condición que en el caso de cumplirse determinará el final del proceso en cuestión. Ejemplo: en el ejemplo de la suma de existencias, la cinta magnética podría tener almacenado un codigo de producto 0 en el ultimo registro almacenado. CONDICION DE FIN: CODPROD = 0 Operaciones realizables Tipo de operación Sintaxis LEER soporte_de_datos Entrada y salida IMPRIMIR variable GUARDAR variable Transferencia Aritméticas Comparaciones valor à variable +-*/ variable/campo : valor ES BLANCO / ES FIN Función Lee el soporte de datos especificado Imprime el contenido de las variables especificadas Guarda en el soporte de datos el contenido de las variables especificadas Asigna valor a la variable especificada Suma, resta, multiplicación, división Compara el contenido del campo o la variable contra el valor especificado Analiza si el registro está en blanco o se llegó al fin del archivo Ejemplo LEER tarjeta IMPRIMIR promedio GUARDAR saldo 0 à suma suma + valor à suma suma : 0 ES FIN? Ejemplo completo: Imprimir el promedio de edades de alumnos contenidas en una tarjeta magnética. La ultima tarjeta tiene un cero en la edad. Estructura de registro EDAD: contiene la edad del alumno Condición de fin: EDAD = 0 Diagrama de sistema LEER TARJETA PROCESO IMPRIMIR PROMEDIO 32 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. DIAGRAMA DE LÓGICA INICIO 0 à suma 0 à cant 0à promedio LEER TARJETA EDAD : 0 suma + EDAD à suma cant + 1à cant suma/cant à promedio IMPRIMIR PROMEDIO FIN 33 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Ejercicios Prácticos: 34 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Muy fácil, Sociedad de Hecho Luego de ser despedidos de la fabrica más grande de caramelos del país, debido a la recesión imperante, los ex empleados Juan Gómez y José García se asocian y ponen un quiosquito de venta de cigarrillos para subsistir llamado ”Muy fácil”. José tiene una computadora laptop que compró en épocas mejores y plantea el poder usarla para administrar el quiosco. Ellos compran cigarrillos y golosinas a los proveedores, así que se les ocurre hacer un listado de proveedores con sus nombres, direcciones, teléfono, y los artículos que le compran a cada uno. Juan asume la responsabilidad administrativa así que se encarga de cargar todos los datos. También quieren tener una lista de precios de cada proveedor por artículo , y la lista de venta al publico, así como saber el inventario que tienen de cada cosa. José asume la responsabilidad comercial quiere poder consultar las listas de proveedores, la lista de precios del quiosco y las direcciones de los proveedores. Se pide: a) Identificar los campos pertinentes b) crear el archivo plano c) normalizar 35 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso Pottery Dolls .com La empresa Pottery Dolls se dedica a la comercialización de muñecas antiguas de cerámica y porcelana y marfil, especialmente muñecas chinas antiguas, y occidentales del siglo XIX y de las primeras décadas del siglo XX. Sus clientes son en su mayoría c oleccionistas, museos, instituciones y aficionados que abonan generosamente por la posesión de una antigüedad de este tipo. Hay coleccionistas que compra -venden piezas (es decir que tanto compran como venden). Los museos solamente compran, pero no venden. Últimamente la empresa ha decidido instalar un sitio WEB, llamado www.Pottery Dolls.com con objeto de tener un STORE ON -LINE (punto de venta en línea). También desean facilitar su operatoria comercial con clientes y proveedores de esta manera. La empresa posee un inventario de artículos, en el que tienen cargado: Código de Artículo, Descripción, Año aproximado de confección, código de país de procedencia, nombre del país de procedencia, material de confección (cerámica, porcelana, marfil, etc.), precio u nitario de venta. También posee varias fotos digitalizadas de cada pieza, las cuales se piensa publicar en la pagina. Al ser artículos de colección, se van llevando registros de bitácoras (logs) de los nombres de los coleccionistas (los dueños) anteriore s de los objetos, y las fechas de las sucesivas ventas a fin de tener catalogada la historia de cada pieza, lo cual contribuye a los fines de verificar la antigüedad y legitimidad de las mismas. (La lista transparente de anteriores dueños garantiza que las piezas no han sido robadas, por ejemplo) La empresa desea que estos datos puedan ser visibles en la pagina de INTERNET para que los visitantes puedan consultar las existencias y los precios de venta. El responsable de introducir los datos es el empleado administrativo del Ente. Por otro lado, la empresa recibe constantemente ofertas de compra y de venta de piezas por parte de coleccionistas de todo el mundo. Solamente se compran los artículos que se consideran "gangas", es decir, cuyo precio de venta es bajo. Finalmente, la empresa desea instalar un formulario en la pagina, en donde los clientes que deseen comprar algún artículo del inventario on -line puedan dejen sus datos personales y los de la pieza, a los fines de poder mandarles la misma por deliv ery (entrega a domicilio). Para ello, los datos del formulario se incorporaran en una tabla que contendrá: Nombre del comprador, domicilio, localidad, país, código postal, teléfono, e -mail, código de pieza por la que esta interesado. (OJO: un comprador pu ede estar interesado en mas de una pieza). Se pide: a) Identificar los campos pertinentes b) crear el archivo plano c) normalizar 36 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso Expedientes Digitales El estudio jurídico XX ha implantado un sistema computarizado para la ejecución de las tar eas. Se pretend que los profesionales puedan resolver los casos utilizando la computadora, sin necesidad de estar continuamente moviendo papeles. Los clientes acuden al estudio planteando sus casos. El estudio les toma los datos y e empleado administrat ivo los anexa a una tabla de clientes donde consta el nombre, la dirección, el teléfono, el mail y la causa que plantea. También carga los datos del expediente. Cada nuevo caso genera un expediente, el cual se pretende que se maneje en forma computadoriz ada. Cada expediente consta de varias notas. Un cliente puede tener varios casos en proceso, por lo que puede haber varios expedientes de un mismo cliente Ejemplo de Expediente: Nro.. Expediente Causa 1100-000-1101 Gomez Fernandez Gomez Fernandez Gomez Fernandez Gomez Fernandez Gimenez Hernandez Gimenez Hernandez Gimenez Hernandez Gimenez Hernandez 1100-000-1101 1100-000-1101 1100-000-1101 2200-200-2201 2200-200-2201 2200-200-2201 2200-200-2201 Cliente Direccion Nro.. nota Abogado vs Pepe Gomez rivadavia 1234 1100/1 Ramirez Expte Iniciado el 11/2/99 vs Pepe Gomez rivadavia 1234 1100/2 Ramirez 11/2/99 vs Pepe Gomez rivadavia 1234 1100/3 Ramirez 11/2/99 vs Pepe Gomez rivadavia 1234 1100/4 Ramirez 11/2/99 vs Juan Gimenez honduras 2345 2200/1 Bermudez 12/3/99 vs Juan Gimenez honduras 2345 2200/2 Bermudez 12/3/99 vs Juan Gimenez honduras 2345 2200/3 Bermudez 12/3/99 vs Juan Gimenez honduras 2345 2200/4 Bermudez 12/3/99 A su vez las causas (cada causa es un expediente) se le asignan a un abogado particular. Un abogado puede tener mas de una causa. La secretaria tiene un registro de sus abogados, en donde consta su nombre, direccion, teléfono y mail. Las notas se acumulan en una tabla. Ejemplo de la tabla de notas : Numero Nota 1100/1 de Descripcion 1100/2 1100/3 Actuación Inicial Pericia psicológica Gómez Prueba testimonial Texto Expediente Aquí va el texto 1100-000-1101 de la nota Aquí va el texto 1100-000-1101 de de la nota Aqui va el texto 1100-000-1101 de la nota Fecha de Observaciones la nota 14/3/99 no hay 15/3/99 se necesita opinión 14/4/99 Hay audiencia martes otra el Las causas pueden cambiar de profesional a cargo, lo que se denomina "pases". Una causa puede pasarse a uno o varios profesionales, pero solo la tiene en su poder uno p or vez. El primer pase es el abogado original a cargo. Los pases los realiza el jefe administrativo. Ejemplo de pases: Nro.. Expediente 1100-000-1101 1100-000-1101 Causa Gomez Fernandez Gomez Fernandez Cliente Fecha del Pase vs Pepe Gomez 11/3/99 Pasado al Abogado Ramirez vs Pepe Gomez 20/5/99 Hernandez 37 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. 1100-000-1101 1100-000-1101 Gomez Fernandez Gomez Fernandez vs Pepe Gomez 18/7/99 Ramirez vs Pepe Gomez 21/8/99 Bermudez Cualquier empleado del estudio puede consultar el estado de los clientes, las los pases. (Nota: Tratar esta consulta como si fuera una sola consulta unificada) causas, los expedientes o Se pide: • Identificar los campos y exponer las tablas normalizadas 38 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso Salsipuedes Analice el siguiente Remito y lleve a cabo los pasos necesarios para obtener la Base de Datos en 3ra. forma normal. X SALSIPUEDES S.A. REMITO N° 65875 Av. De los Corrales 1354 (5687) Cap. Fed. Fecha: 19/06/02 CUIT: 30-25489433-8 Ing. Brutos: 101-456896-4 Sres: Marcelo Scoccia Av. San Juan 1235 Villa Tecnología Guía de Transporte N°: Empresa de Transporte: Chofer: Zona de Entrega: Artículo 4856 3685 5698 Nro de Cuenta: 54698 456 33 - Transportes La Academia 96 - Hugo Toss 78 - Avellaneda Descripción Camisetas de Fútbol Banderas Albicelestes Pelotas de Fútbol Nro. 5 Cantidad Precio [$] Volumen [m 3] 11500 4000 1500 65 8 18 450 200 80 806500 730 TOTALES Capacidad máxima del Transporte: Capacidad Ocupada: Capacidad Ociosa: De 0 a 25 % De 26 a 50 % Imprenta: "El Cilindro" 3000 m3 730 m3 2270 m3 100 % 24.33 % 75.67 % Recargo por capacidad ociosa $150 De 51 a 75 % $200 De 76 a 100 % CUIT: 30 -23546871-2 $250 $300 Fecha de impresión: 4/3/98 39 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Nota de pedido Nº pedido 15 Fecha pedido 20/10/02 Cod Proveedor 150 Nombre Proveedor Molino PP Domicilio Proveedor La Habana 540 Cod artículo 3 15 20/10/02 150 Molino PP La Habana 540 5 15 20/10/02 150 Molino PP La Habana 540 8 16 21/10/02 16 Molino JCJ Arcos 3654 5 Descripción artículo Harina de Trigo 0 Harina de Trigo 000 Harina de Trigo 00 Harina de Trigo 000 Cant 10 Precio Unitario 0.75 Precio Total 7.50 150 0.85 127.50 50 0.80 40.00 200 0.65 130 Normalice esta estructura de Base de Datos de forma tal que cumpla con las condiciones de Tercera Forma Normal Caso: Catálogo de préstamos de Biblioteca Una ficha del catálogo de préstamos de una biblioteca registra los siguientes datos Codigo de libro: Código unico que identifica a cada libro Numero de ejemplar: Número que identifica el ejemplar en los casos en que haya más de uno por libro, dato que se debe almacenar. Título: Título del libro Autor: Autor del libro Tema: Tema general dado al libro para su categorización, en base a una lista ya armada Año: año de la primera edición del libro Codigo de socio: codigo que identifica a cada socio Nombre Socio: nombre y apellido del socio Fecha préstamo: fecha en la que el ejemplar fue prestado Fecha devolución: fecha en la que el ejemplar fue devuelto A los efectos de informatizar esta registración, se le solicita el armado de una estructura de Base de Datos en Tercera Forma Normal que le permita optimizar al máximo el almacenamiento, reduciendo la redundancia. *Un socio no puede retirar más de un ejemplar del mismo libro en el mismo día. Caso: Movimientos de un videoclub num mov 1 2 3 4 Fecha 03/01/02 05/01/02 05/01/02 06/01/02 tipo operacion A D D D cod tipo producto V D V V Tipo producto Video DVD Video Video cod_prod Título Género 100 895 100 150 El Rey León Shreck El Rey León Martes 13 Infantil Infantil Infantil Terror código socio 10 15 10 10 nombre socio Juan Perez Cristina Juan Perez Juan Perez Diseñe la estructura de datos en tercera forma normal que sirva como base para la automatización de los movimientos (A: alquiler, D: devolución) del videoclub, teniendo en cuenta que se debe almacenar el director y el año de cada película y el domicilio y uno o más teléfonos de cada socio. 40 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Cotización de una ferretería Analice el siguiente formulario de Cotización y lleve a cabo los pasos necesarios para obtener la Base de Datos en 3ra Forma Normal, teniendo en cuenta los siguientes datos: - Los datos referidos a cada cotización enviada a un cliente deberán ser guardados en la Base de Datos con la mayor eficiencia posible y de modo que permitan realizar búsquedas por cliente, fecha, forma de pago, localidad, y plazo de entrega. - Las formas de pago posibles son: 1 Efectivo 2 Cheque medios de pago 3 Tarjeta 4 Cuenta Corriente 5 Otros - Cada cotización podrá ser pagada mediante UNA de estas formas de pago, y llegará al cliente por UN solo medio. - Los plazos de entrega son: 7 días, 10 días, 15 días o 30 días. - Los plazos de validez de las ofertas se miden en cantidad de semanas a partir de la fecha de cotización. - Los precios de los productos se asumen fijos en el tiempo, teniendo cada producto asociado un porcentaje de descuento que se aplica solo a los clientes de tipo 1. FECHA COTIZACION: 25/10/2002 COTIZACION Nº: 45687 EMPRESA: Ferretería RA TIPO CLIENTE: 1- Grande DIRECCION: Av. Pueyrredon 1000 LOCALIDAD: Capital Federal C.P.: 1650 NUMERO/S FAX: 4312-1515 COD CANT 1234 2000 4321 5 DESCRIPCION PRECIO UNIT ($) DESCUENTO (%) TOTAL ($) Clavos Fischer 0.10 15 170.00 Soldadoras 45.00 2 220.50 TOTAL: 390.50 Estos Precios no incluyen IVA Forma de Pago: 1 Efectivo Plazo de Entrega: 10 días Validez de la oferta: 2 semanas Esta cotización llegará al cliente por medio de: 1 - Cadete 2Vendedor X 3Correo 4Retira 5Fax 41 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Informe de Servicio Técnico Analice el siguiente formulario de Cotización y lleve a cabo los pasos necesarios para obtener la Base de Datos en 3ra Forma Normal HIGH TECH Consulting S.R.L. HT INFORME DE SERVICIO TECNICO AL CLIENTE N°: 0015534 Av. Carabobo 1327 Cap. Fed. (A2871GXY) Tel/Fax. 4905 -6418/5220 N° CLIENTE: 128 NOMBRE: FECHA VISITA TECNICA : Autoservicio El trébol de Parque Patricios DOMICILIO: Rondeau 931 LOCALIDAD: Cap. Fed. C.P.: C6358AMX SOLICITANTE: Ricardo Nogueira. TAREAS SOLICITADAS: TÉCNICO: T.E.: 4328-1715 / 2054 18/02/2003 TIPO CLIENTE: ___ Abonado con repuestos _X_ Abonado sin repuestos ___ No abonado SECTOR: Administración Reparación de Equipo Terminal. Chequeo integral de la red. Fernando Uriarte. HORA: LLEGADA: ___:_____ SALIDA: ___:_____ TAREAS REALIZADAS: REPUESTOS UTILIZADOS: CONFORME CLIENTE: ___________________ ACLARACIÓN: FIRMA TÉCNICO: COD. REP. DESCRIPCIÓN CANTIDAD ___________________ ___________________ Todo el software utilizado en el presente servicio fue proporcionado por el cliente, salvo aclaración en contrario. En caso de quejas o dudas con el servicio efectuado, comunicarse con el departamento de atención al cliente. 42 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Orden de Pago Analice el siguiente formulario y lleve a cabo los pasos necesarios para obtener la Base de Datos en 3ra Forma Normal LIBER PLAST S.R.L. ORDEN DE PAGO N°: 00973 FECHA : 23-02-03 127 IMPRENTA RAWSON de Sívori Hnos. Alberdi 2868 – Cap. Fed. 4327-5172/5173/5114 Cuenta N° : Proveedor : Detalle de imputaciones : Tipo A Comprobante Número 0002-00000483 Fecha Vencimiento 12-12-02 12-01-03 Importe $1771,13 Subtotal Imputaciones : Valores : Tipo Número valor interno TERCEROS 139 DIFERIDO Número valor 09944751 259 1180324129 Banco GALICIA Cuenta 122789029/1 BANKBOSTON 0971281315 $1771,13 Fecha 15/03/03 Importe $500 25/02/03 $1271,13 Subtotal Valores : $1771,13 Total Orden de Pago : $1771,13 43 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Presupuesto Analice el siguiente formulario de Presupuesto y lleve a cabo los pasos necesarios para obtener la Base de Datos en 3ra Fo rma Normal, teniendo en cuenta las siguientes aclaraciones: - Las formas de pago posibles son: 1 - Efectivo 2 - Cheque 3 -Tarjeta 4-Cta. Cte. 5- Otros medios - Cada cotización podrá ser pagada mediante UNA de estas formas de pago, y llegará al cliente por UN solo medio. - Los precios de los productos se asumen fijos en el tiempo y cada cliente tiene asociado un porcentaje de descuento. DISTRIBUIDORA EL CRISOL S.A. Ruta 8 Km 22,5 Pilar (A2871GXY) Tel/Fax. 02322 -490564 CUIT: INGRESOS BRUTOS: INICIO DE ACTIVIDADES: 30 -2879166-7 91523421 -8 05/08/1997 X DOCUMENTO NO VALIDO COMO FACTURA FECHA : 22/04/2003 PRESUPUESTO Nº: 45687 CLIENTE: Ferretería “El triunfo” COD. CLIE NTE: 355 DOMICILIO: Av. Santa Fé 2327 TIPO CLIENTE: 1- Mayorista LOCALIDAD: Cap. Fed. C.P.: C6358AMX TELEFONO(S) : 4328-1715 / 2054 COD. ART. CANT UNID. DESCRIPCION PRECIO UNIT ($) DESCUENTO TOTAL ($) 12348 3000 Tuercas 0.10 10 % 270.00 74321 5 Taladros 45.00 10 % 202.50 TOTAL: 472.50 Estos Precios no incluyen IVA Plazo de Entrega : 10 días Forma de Pago : 1- Efectivo Esta cotización llegará al cliente por medio de: 1– Cadete 2 – Ej. d e Cta. X 3– Correo 4– E-mail 5– Fax Este presupuesto tiene una vigencia de 30 días a partir de su fecha de emisión. Transcurrido este plazo los precios y las condiciones de pago pueden sufrir modificaciones. 44 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso tema : Proyectos : “Construcción de un sitio we b” La empresa XX ha contratado sus servicios para implementar un sitio web con información institucional de la empresa, y además permita consultar un catálogo en línea. Como líder del proyecto, usted debe administrar el tiempo, el costo y los recursos, sabiendo que debe llevar a cabo las tareas que se detallan a continuación, y la duración de las mismas. N° 1 2 3 4 5 6 7 8 9 10 11 Tarea Comienzo del proyecto Relevamiento de la información Análisis Diseño conceptual del sitio Diseño detallado Programación del módulo institucional Contratación del servicio de hosting Registración del dominio Pruebas Implementación del sitio Fin del proyecto Duración (días) 0 2 2 4 5 7 3 2 1 2 - Antecesor 1 2 3 4 5 1 7 8 7-8-9 1–9 A su vez usted cuenta con los siguientes recursos: N° Recurso 1 2 3 4 5 6 Descripción Analista Programador – Diseñador Gráfico Data entry Líder de Proyecto PC (del programador) PC (del data entry) Capacidad de Trabajo 8 hs. diarias 8 hs. diarias 8 hs. diarias 8 hs. diarias Total Total Se pide: 1. Crear un diagrama de Gantt 2. Crear un diagrama Pert. 45 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Ejercicios SQL 1. Dadas las siguientes tablas, sacadas del ejercicio de “Medicina Laboral”, explicado en este apunte: 1. Empleados x Empresa(Codigo de Empresa, Legajo, Nombre) 2. Medicina Laboral(Nro de formulario, Codigo de Empresa, Fecha, Legajo, Atendidoen, Hora, Informe, Deambula, Trabaja, Trabajadia, Citadodia, citadohora.) 3. Empresas Clientes( Codigo de Empresa, Nombre de Empresa) Establecer las ordenes SQL para: *Hacer una consulta de todas las empresas clientes, ordenado por código de empresa *Hacer un listado de todos los empleados de la empresa “pitufo SA” que recibieron nuestros servicios *De que empleado hace mención el formulario “341”? *Que dia fue citado el empleado “Jun Gomez”, legajo “222” de la empresa “papapitufo SRL”? *En donde se atendieron los empleados de la empresa “gargamel SA”? 46 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Caso: Mas Ejercicios SQL 1. Dadas las siguientes tablas, sacadas del eje rcicio de “Drawings Consulting” explicado en este apunte, establezca las siguientes instrucciones SQL: 1) 2) 3) 4) 5) 6) Clientes( código, nombre, dirección, teléfono, e -mail, código localidad) Personal ( numero de legajo, nombre y apellido, fecha de nacimiento, TE, cód igo categoría laboral. ) Categorías Laborales( código, nombre, facturación por hora ) Localidades (Código, nombre) Presupuestos1( numero de presupuesto, Código de cliente, código de tarea, fecha de inicio presupuestada ) Presupuestos2 (numero de presupuesto, leg ajo, horas programadas, desde fecha, hasta fecha) *Hacer una consulta de todos los clientes , ordenado alfabéticamente *Listado de personal, ordenado por numero de legajo *Cuanto factura por hora la categoría “junior”? *Cuando se inicia el presupuesto “2 00”? *Listado de los presupuestos del cliente “Gomez, Jorge” 47 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Diagramación Lógica: Caso “Publicaciones” Una empresa dedicada a la comercialización de publicaciones desea conocer cual fue la participación en los volúmenes de ventas de las líneas textos y revistas, así como las zonas en las que se realizaron las ventas. Para ello se ingresan los comprobantes de ventas, que presentan, entre otros, los siguientes conceptos: § § § Importe Zona (1 - bonaerense / 2 - resto del país) Línea (t =texto r = revista) El listado deberá presentar la siguiente información: • • • • Monto total de ventas zona bonaerense: 999999999 Monto total de ventas resto del país: 99999999 % de participación textos: 99 % de participación revistas: 99 Se pide: confeccionar el diagrama de lóg ica que contemple la salida detallada precedentemente, y que verifique que el ingreso de la zona de venta y de la línea sean correctos. Caso : “Medicina Prepaga” En una empresa de Medicina Prepaga, cada afiliado que concurre al servicio tiene una T arjeta Magnética, con los siguientes datos: • • • • • • • • Número de Afiliado Plan de Asistencia Medica, con los códigos A y C Apellido y Nombre Grupo Familiar Sexo: con los códigos M y V Año de ingreso o afiliación: fecha de alta Ultimo mes pago. Fecha de Nacimiento. Para ser atendido necesita estar al día con los pagos. En Recepción existe una PC en Red con un lectograbador de Tarjetas Magnéticas. Se solicita la siguiente información, por el proceso diario. A) • • • • • Cantidad de Afiliados que concurrieron para atención medi ca Cantidad de Afiliados rechazados por mora Cantidad de Afiliados atendidos por tipo de PLAN, sea A o C Cantidad de afiliados atendidos, Menores de 21 años, y Mayores Cantidad de Mujeres Atendidas B) 48 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. • • • • Cantidad de Afiliados que concurrieron para atención medica Cantidad de Afiliados rechazados por mora Cantidad de Afiliados atendidos con altas anteriores al 2000, y posteriores Cantidad de afiliados menores de 21 años que sean mujeres Se pide: realizar separadamente, los diagramas de lógica que permitan obtener la información solicitada en cada caso, y el correspondiente diagrama de sistemas. Caso: “Comercialización de botas” En “CLEO” un local dedicado a la venta de botas, diariamente se requiere obtener entre otros los siguientes informes: • • • • • Monto total de ventas. Cantidad total de botas bajas vendidas en efectivo. Cantidad total de botas bajas vendidas con tarjeta de crédito. Cantidad total de botas bajas vendidas. Porcentaje que representa el monto total facturado a extranjeros sobre el monto total facturado. Las transacciones del día se registran en un archivo que almacena entre otros los siguientes datos: § § § § § § Nº de factura. Código medio de pago. (E: efectivo, T: tarjeta de crédito). Código nacionalidad del cliente (1: argentino, 2: extranjero). Código de tipo de producto (B: botas bajas, A: botas altas). Precio unitario del producto. Cantidad de producto. Supuestos: § § Cada venta posee un solo tipo de producto. Cada venta es abonada con un solo medio de pago. Condición de fin: § Fin de archivo. Realice: 1. Estructura de registro. 2. Diagrama de lógica. Caso:: “Recaudación de impuestos” El Ente Recaudador de Impuestos desea implementar un sistema que realice una verificación mensual de aquellos contribuyentes que presentaron sus declaraciones juradas f uera de término, y que imprima 49 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. automáticamente el reclamo correspondiente que será enviado por correo a dichos contribuyentes. Para ello ha contratado sus servicios profesionales para diseñar el nuevo programa. El programa deberá controlar un archivo, que almacena, entre otros, los siguientes datos: § § § Número de cuit del contribuyente. Fecha de vencimiento de la presentación de la declaración jurada. Fecha de presentación de la declaración jurada. Si la declaración jurada está presentada después del vencimiento indicado, se deberá imprimir automáticamente una intimación al contribuyente. A su vez, deberá imprimir un informe que contenga: • • • la cantidad de reclamos realizados. el porcentaje de contribuyentes que recibieron reclamos. el monto de las multas que el Ente Recaudador está en condiciones de cobrar, si a cada cliente que recibe un reclamo se le cobran $100. Se pide: 1. Indicar la estructura del registro que el programa debe procesar. 2. Seleccionar una condición de fin. Realizar el diagrama de lógica que satisfaga el requerimiento detallado. Caso: “Casa de comidas rápidas” En “Mc Burger”, un local de comidas rápidas, luego de las transacciones diarias, se requiere un informe impreso que contenga: a) b) c) d) e) El monto total facturado. La cantidad de unidades vendidas del menú N°1 El porcentaje sobre el monto total facturado, que representa el monto de ventas del menú N°2. La cantidad de facturas pagadas en efectivo. El promedio de ventas efectuadas con vales de almuerzo. y además, un archivo en el que se guarden los registros erróneos. Se consideran erróneos aquellos registros donde el importe facturado es negativo o mayor a $999. -. El resto de los campos ya ha sido validado en un proceso anterior. Del archivo de facturación diario se conoce: a) b) c) d) N° de Ticket Código de medio de pago: (“E” - Efectivo / “V” - Vales de almuerzo / “D” – Tarjeta de débito) Código de Productos: (“M1”- Menú 1 / “M2”- Menú 2) Importe facturado Supuestos: § En cada factura se vende un solo tipo de menú, una sola unidad del mismo y es ab onada con un solo medio de pago. 50 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. Realice: 1. Estructura de registro, indicando condición de fin. 2. Diagrama de lógica. 3. Tabla de pruebas. Caso: “ Almacenes” En una empresa comercial, el sistema de manejo de inventario de sus dos almacenes, realiza una verificación sobre el archivo de actualizaciones diarias, para informar si en este se encuentran errores. El archivo de actualización diaria contiene los siguientes datos: § § § § Código de artículo Código de movimiento: “E” si es una entrada (casos de compra s, devoluciones de clientes, etc.) o “S” si son salidas. Cantidad de artículos involucrados en el movimiento. Número que identifica al almacén de origen o destino (1 o 2 según corresponda) El final del archivo de actualizaciones se indica con un 0 en el n úmero de almacén. Durante el proceso de verificación se debe generar un archivo magnético de errores con los movimientos en los que la cantidad sea inválida (es decir, que sea una cantidad negativa). El resto de los datos se verificaron y corrigieron en un proceso anterior. Al finalizar el proceso se debe generar un listado impreso que contenga los siguientes datos: • • • cantidad de movimientos con errores, cantidad de artículos entrados al almacén 1 promedio del total de salidas desde los dos almacenes. Se solicita: 1) Definir la estructura de registro del archivo de actualizaciones diarias, y la condición de fin del proceso 2) Realizar el diagrama de sistema del proceso de verificación 3) Realizar el diagrama de lógica del proceso de verificación 4) Caso: “Video Club” Una cadena de video clubs dedicada a la venta y alquiler de películas en video y DVD, desea que cada gerente de sucursal obtenga al final de cada día, un listado impreso con la siguiente información sobre la operatoria diaria de su local: • • • • Cantidad de facturas emitidas Monto total facturado.(películas en video y DVD vendidas y alquiladas) Cantidad de películas en video alquiladas. Cantidad de películas en DVD alquiladas. 51 UBA FCE Tecnología de la Información. Guía de trabajos prácticos. • • Monto total en pesos de las películas en DVD vendidas. Porcentaje sobre el monto total de facturado que representan las ventas de DVD. Partiendo de los datos almacenados en el archivo de facturación del día, que contiene entre otros, los siguientes: § Número de factura § Código de tipo de producto: § Código de tipo de operación: § Importe (de cada ítem) 1. VIDEO 2. DVD A. ALQUILER V. VENTA Se pide confeccionar: 1. Diagrama de sistemas 2. Diagrama de lógica. Observaciones. El proceso finaliza cuando se llega al fin de archivo, indicado por el número de factura “0” . 52