lunes, 28 de septiembre de 2015

Ejercicio II Corte

La empresa Plaza de Mercado de Boyacá S.A.S. actualmente tiene su base de datos sobre MS-Access (disponible para descargar). La organización necesita principalmente:
  1. Ampliar su BD para incluir datos de compradores, con el objeto de saber quienes son sus clientes, en dónde residen, quién es el contacto directo, qué canales de comunicación podrían establecer con ellos, que vendedor los atendió y qué productos compraron. 
  2. Normalizar la BD al menos a 3N y comprobar la integridad referencial de los datos.
  3. Proyectar el crecimiento de la base de datos para el 2020.
  4. Requieren las siguientes consultas específicas:
    • Una consulta que permita ver en orden alfabético el nombre de cada vendedor, su fecha de nacimiento y su teléfono. (Campos del resultado: Nombre, Fecha de nacimiento, Teléfono) 
    • Una consulta que dé como resultado el nombre de los vendedores nacidos en Bogotá. (Campos del resultado: Nombre, Ciudad) 6. Realice una consulta que le permita determinar quiénes tienen mayor acumulado (suma) en kilos vendidos, si los vendedores con hijos o los vendedores sin hijos. (Campos del resultado: Hijos, Suma de Kilos) 
    • Una consulta que le permita determinar cuál fue el producto con más kilos vendidos durante el año 1999. (Campos del resultado: Nombre del producto, Suma de Kilos en orden) 
    • Una consulta donde se muestre el nombre y el total de kilos vendidos por cada vendedor (entre todos los productos) para el año 2002. Ordene el resultado de forma descendente, de manera que el vendedor con mayores ventas ocupe el primer lugar. (Campos del resultado: Nombre del vendedor, Suma de Kilos)
    • Una consulta que permita ver el total de ventas por vendedor y producto. El resultado debe tener las siguientes columnas (campos) : nombre del vendedor, nombre del producto, suma de Kilos (kilos vendidos para ese producto), el precio del producto y el total de ventas, correspondiente a la suma de kilos multiplicada por el precio. 
  5. Informes para las dos últimas consultas de la lista anterior con el formato adecuado: que sean agradables y fáciles de entender, y de navegar en caso de ser extensos. 

Tenga en cuenta que el licenciamiento de MS-Acces es costeado por el departamento como iniciativa gubernamental para apoyar las micro y pequeñas empresas del sector.
Se le solicita como consultor:
  • Su consejo sobre, ampliar lo que ya se tiene sobre la tecnología que poseen, o desarrollar desde cero un sistema de información a la medida. Argumente.
  • Calcular el costo de las dos alternativas (realice el cálculo sobre una el valor de hora ingeniero estimada).


SOLUCIÓN



En caso de requerirse la ampliación de un sistema de información, sobre lo que actualmente se tiene según la base de datos propuesta para el ejercicio, nos encontraríamos con una compleja modificación del sistema ya existente, además tocaría volver a plantear las reglas del negocio para desarrollar el nuevo Sistema, y se requiere que los ingenieros de software se adapten correctamente a la metodología ya propuesta. Por lo tanto es necesario tener a la mano la arquitectura del software trabajado, asi como las reglas que tiene dentro de su diseño y desarrollo para que pueda ser nuevamente estructurado, además de conocer los procesos a los cuales esta sometido, y la documentacion del software.

Ademas la base de datos Access no es tan potente como otros motores, por lo cual es necesario normalizar y parametrizar la base de datos para que tenga un crecimiento exponencial y eficiente hasta el 2020 en cuanto a las variables principales del negocio: Productos, Vendedores. ETC

Considerando lo anterior, seria mas pertinente arrancar desde cero, ya que es mejor por optimizacion de la base de datos y por manejo de recursos, además se debe cambiar el motor por otro mas potente como MYSQL, ya que access es uno de los mas limitados en cuanto a recursos, ademas es gratis, no ocupa tanto espacio en disco para almacenamiento de datos y es mas productivo y eficiente.

Access no es el motor que deberiamos usar para construir la base de datos, debido a que no es lo suficientemente poderoso como para manejar conexiones multiusuarios, ademas tiene menos capacidad para escalabilidad de la base de datos, requiere licenciamiento para ser utilizado y presenta errores para el manejo de consultas densas.

En caso de realizar migraciones efectivas a los datos dentro de la base de datos, es pertinente realizarlo con MYSQL, ya que tiene herramientas destinadas para ello como workbench, que permiten migrar de otro motor a MYSQL y ademas realiza la conversion de datos eficientemente. Logicamente el costo al desarrollarlo desde cero aumenta, pero permite en gran medida el mantenimiento, actualizacion, integridad y escalabilidad de la base de datos.


Si analizamos los costos posibles a nivel ingenieril de los dos casos

Modificacion de la BD existente

Realizacion de Nueva BD con Oracle.



Modelo Entidad Relación


Consultas Realizadas para la Base de Datos Plaza de Boyaca S.A.S


·         Una consulta que permita ver en orden alfabético el nombre de cada vendedor, su fecha de nacimiento y su teléfono. (Campos del resultado: Nombre, Fecha de nacimiento, Teléfono) 
SELECT nom_ven, fech_nac, tel_ven FROM tbl_vendedores, tbl_telefono_vendedor WHERE tbl_vendedores.id_ven=tbl_telefono_vendedor.id_ven ORDER BY nom_ven ASC
·         Una consulta que dé como resultado el nombre de los vendedores nacidos en Bogotá. (Campos del resultado: Nombre, Ciudad)
SELECT nom_ven, nom_ciudad FROM tbl_vendedores, tbl_ciudades WHERE tbl_vendedores.id_ciu=tbl_ciudades.id_ciu AND nom_ciudad='Bogota'
·         Realice una consulta que le permita determinar quiénes tienen mayor acumulado (suma) en kilos vendidos, si los vendedores con hijos o los vendedores sin hijos. (Campos del resultado: Hijos, Suma de Kilos) 
SELECT cantidad_hijos,SUM(kilo_venta) AS [Total Kilos] FROM tbl_hijos,tbl_ventas WHERE tbl_ventas.id_ven=tbl_hijos.id_ven GROUP BY cantidad_hijos ORDER BY SUM(kilo_venta)
·         Una consulta que le permita determinar cuál fue el producto con más kilos vendidos durante el año 1999. (Campos del resultado: Nombre del producto, Suma de Kilos en orden) 
SELECT nom_prod,SUM(kilo) FROM tbl_productos,tbl_ventas WHERE tbl_ventas.id_prod=tbl_productos.id_prod AND fech_vendido like '1999%' GROUP BY nom_prod ORDER BY sum(kilo) ASC
·         Una consulta donde se muestre el nombre y el total de kilos vendidos por cada vendedor (entre todos los productos) para el año 2002. Ordene el resultado de forma descendente, de manera que el vendedor con mayores ventas ocupe el primer lugar. (Campos del resultado: Nombre del vendedor, Suma de Kilos)

SELECT nom_vend AS nombre, sum(kilo) AS kilos FROM tbl_ventas, tbl_vendedores WHERE tbl_ventas.id_ven=tbl_vendedores.id_ven and fech_vendido like '2002%' GROUP BY nom_ven ORDER BY sum(kilo) DESC
·         Una consulta que permita ver el total de ventas por vendedor y producto. El resultado debe tener las siguientes columnas (campos) : nombre del vendedor, nombre del producto, suma de Kilos (kilos vendidos para ese producto), el precio del producto y el total de ventas, correspondiente a la suma de kilos multiplicada por el precio. 


SELECT nom_ven AS vendedor, nom_prod AS Producto, sum(kilo) AS [Kilos Vendidos], precio, ((sum(kilo))*(total)) AS Total FROM tbl_vendedores, tbl_productos, tbl_ventas WHERE tbl_vendedores.id_ven=tbl_ventas.id_ven AND tbl_ventas.id_prod=tbl_productos.id_prod GROUP BY nom_ven, nom_prod


Este Blog se realizo con colaboracion de 
Jorge Lopez Parra
David  Esteban Rodriguez
Julian Eduardo Rincon