Trabajos Prácticos - Facultad de Ciencias Económicas

Anuncio
_________________________________________________________________________
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
Descargar