Camilo Ortiz Cruz – 201821615 Sergio Arango Arango – 201921814 Iteración 1 - Proyecto Análisis y modelo conceptual Modelo Conceptual Análisis Requerimientos Nombre RF1. Registrar Roles de Usuarios Resumen Se registran los roles de usuario definidos en la descripción del negocio. Debe incluir todos los roles de usuario indicados en el enunciado. Esta operación es realizada por el administrador de datos del supermercado. Entradas Rol: Nombre del rol Resultados El rol de usuario queda registrado en el sistema y queda listo para ser asignado a los usuarios en las sucursales RNF asociados Nombre RF2. Registrar una Sucursal Resumen Debe considerar la información básica de una sucursal. Esta operación es realizada por el administrador de datos del supermercado. Entradas Sucursal: ciudad, dirección, nombre Resultados La sucursal con toda su información queda registrada en el sistema RNF asociados Nombre RF3. Registrar un usuario Resumen Los usuarios con toda la información que les corresponde. Deben quedar asociados a su sucursal respectiva. Esta operación es realizada por el administrador de datos del supermercado. Entradas Usuario: tipoDocumento, documento, nombre, correoElectronico, palabraClave El usuario debe ser asignado a una y solo una sucursal y uno y solo un rol, se debe tener la sucursal registrada en el sistema y el rol registrado en el sistema. Sucursal: nombre Rol: rol Resultados El usuario con toda su información queda registrado en el sistema y sigue el rol asignado en las sucursales respectivas. RNF asociados Nombre RF4. Registrar una bodega a una sucursal Resumen Debe considerar toda la información necesaria de una bodega para la operación completa de la sucursal. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Bodega: capacidadPeso, capacidadVolumen, tipoProducto La bodega debe ser asignada a una y solo una sucursal, la sucursal ya debe estar registrada en el sistema Sucursal: nombre Resultados La bodega queda registrada en el sistema y asociada a su sucursal. Dentro de las bodegas de la sucursal queda registrada la bodega. RNF asociados Se necesita transaccionalidad. Se necesita aislamiento ya que, si hay otras operaciones concurrentes sobre los datos pertinentes, los datos podrían resultar en un estado incoherente. Por ejemplo, si concurrentemente se registra la sucursal a la que la bodega debe quedar asociada, se debería poder registrar la sucursal y luego la bodega y su asociación si el registro de la sucursal pasa primero. En caso contrario solo debería quedar registrada la sucursal. La atomicidad es necesaria ya que se registrará una bodega y debe quedar asociada a una sucursal. La bodega no debe quedar registrada si no queda asociada a la sucursal y viceversa. Nombre RF5. Registrar una estante a una sucursal Resumen Debe considerar toda la información necesaria de una estante para la operación completa de la sucursal. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Estante: capacidadPeso, capacidadVolumen, tipoProducto El estante debe ser asignado a una y solo una sucursal, la sucursal ya debe estar registrada en el sistema Sucursal: nombre Resultados El estante queda registrado en el sistema y asociado a su sucursal. Dentro de los estantes de la sucursal queda registrado el estante. RNF asociados Se necesita transaccionalidad. Se necesita aislamiento ya que, si hay otras operaciones concurrentes sobre los datos pertinentes, los datos podrían resultar en un estado incoherente. Por ejemplo, si concurrentemente se registra la sucursal a la que el estante debe quedar asociado, se debería poder registrar la sucursal y luego el estante y su asociación si el registro de la sucursal pasa primero. En caso contrario solo debería quedar registrada la sucursal. La atomicidad es necesaria ya que se registrará un estante y debe quedar asociado a una sucursal. El estante no debe quedar registrado si no queda asociado a la sucursal y viceversa. Nombre RF6. Registrar proveedores Resumen Debe tener en cuenta los posibles proveedores con toda la información requerida en cada caso. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Proveedor: NIT, nombre, calificación(podría iniciar en cero o algún valor predeterminado) Si se desean registrar los productos que el proveedor ofrece, los productos ya deben estar registrados en el sistema Producto: codBarras, precioOfrecidoUnidad(el precio de referencia al que ese proveedor lo vende) Si se desean registrar las sucursales que el proveedor tiene asociadas, las sucursales ya deben estar registradas en el sistema Sucursal: nombre Resultados El proveedor queda registrado con toda su información. Con su oferta de productos, con precios, si esta es ingresada. Con sus sucursales asociadas si estas son ingresadas, y queda en los registros de proveedores de esas sucursales. RNF asociados Se necesita transaccionalidad en caso de ingresar productos o sucursales asociados al proveedor. La atomicidad es requerida para garantizar que el proveedor solo quede registrado si también quedan registradas las asociaciones a productos y/o sucursales y viceversa. El aislamiento es necesario al haber asociaciones ya que se necesita que la otra entidad esté registrada antes de realizar el registro de la asociación. Si la otra entidad se registra concurrentemente, el aislamiento asegura que o solo se registre la otra entidad o se registre la otra entidad junto con el proveedor y la asociación. Nombre RF7. Registrar productos Resumen Debe tener en cuenta los posibles productos con toda la información requerida en cada caso. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Producto: codBarras, nombre, marca, cantidadPresentacion, unidadMedida, especificacionEmpacado, codBarras, perecedero(si o no), tipo Si se van a registrar las sucursales en las cuales el producto es ofrecido, las sucursales ya deben estar registradas en el sistema. Sucursal: nombre, precioVenta, nivelReOrden Resultados El producto queda registrado con toda su información. Si se ingresan sucursales en las cuales es ofrecido queda registrado en la oferta de esas sucursales, junto con el precio de venta y nivel de reorden asociados. RNF asociados Se necesita transaccionalidad en caso de ingresar sucursales asociadas al producto. La atomicidad es requerida para garantizar que el producto solo quede registrado si también quedan registradas las asociaciones a sucursales y viceversa. El aislamiento es necesario al haber asociaciones con sucursales ya que se necesita que la sucursal esté registrada antes de realizar el registro de la asociación. Si la sucursal se registra concurrentemente, el aislamiento asegura que o solo se registre la sucursal o se registre la sucursal junto con el producto y la asociación. Nombre RF8. Registrar clientes Resumen Con toda la información requerida por SUPERANDES. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Vale la pena anotar que el cliente queda registrado a nivel de la cadena de supermercados. Entradas Cliente: tipoDocumento, documento, nombre, correoElectronico, palabraClave Se debe indicar si el cliente es una empresa, y en caso positivo se debe ingresar su direccion Resultados El cliente queda registrado en el sistema con toda su información. Si es empresa queda registrada junto con su dirección. Los puntos siempre inician en cero. RNF asociados Se necesita transaccionalidad en caso de ingresar sucursales asociadas al cliente. La atomicidad es requerida para garantizar que el cliente solo quede registrado si también quedan registradas las asociaciones a sucursales y viceversa. El aislamiento es necesario al haber asociaciones con sucursales ya que se necesita que la sucursal esté registrada antes de realizar el registro de la asociación. Si la sucursal se registra concurrentemente, el aislamiento asegura que o solo se registre la sucursal o se registre la sucursal junto con el cliente y la asociación. Nombre RF9. Registrar una promoción Resumen Debe considerar los diferentes tipos de promociones, indicando además cuántas unidades de productos están disponibles para la promoción. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Promoción: unidadesDisponibles, fechaInicio, fechaFin Al ingresar una promoción debe ser asignada a una y solo una sucursal, la sucursal ya debe estar registrada en el sistema. Se debe indicar si la promoción es una promoción de tipo Combo o de tipo Descuento Si es de tipo Combo: se debe indicar el conjunto de productos que conforman el combo y el precio final del combo (idealmente menor a la suma de los precios individuales) Si es de tipo Descuento: se debe indicar compreX(la cantidad mínima que debe comprar para que aplique el descuento), lleveY(la cantidad de unidades a las que se les aplicara el descuento a partir de compreX), conDescuento(el descuento aplicado a las lleveY unidades) este último es un decimal entre cero y uno (1=100%) Note que por ejemplo “pague dos lleves tres” se logra con los parametros (2,3,1), o “todas unidades tienen descuento del d%” se consigue con los parametros (1,1,d/100) Resultados La promoción queda aplicando dentro de las fechas dadas en la sucursal respectiva. La promoción se registra dentro de una factura al igual que la compra de cualquier producto. RNF asociados Se necesita transaccionalidad por las asociaciones a sucursales y productos. La atomicidad es requerida para garantizar que la promoción solo quede registrada si también quedan registradas las asociaciones a sucursales y productos y viceversa. El aislamiento es necesario al haber asociaciones con sucursales y productos ya que se necesita que la sucursal y los productos estén registrados antes de realizar el registro de la asociación. Si la sucursal y los productos se registran concurrentemente, el aislamiento asegura que o solo se registre la sucursal y los productos o se registre la sucursal y los productos junto con la promoción y la asociación. Nombre RF10. Finalizar una promoción Resumen Esta operación se hace sin interacción del usuario, sea cuando se vendieron todos los productos de la promoción o porque llegó la fecha de vigencia de la promoción. Entradas Resultados La promoción deja de aplicar cuando pasa la fechaFin o se agotan las unidades disponibles. RNF asociados Se necesita aislamiento en caso de que haya compras realizándose que incluyan esa promoción. Nombre RF11. Registrar un pedido de un producto a un proveedor Resumen Debe considerar toda la información de los pedidos. Esta operación es realizada por los gerentes de sucursal, pero sólo en la sucursal donde están asociados. Entradas Orden: fechaEsperada Una orden debe tener un y solo un proveedor, el proveedor ya debe estar registrado en el sistema. Proveedor: NIT Una orden debe tener un y solo un producto, el producto ya debe estar registrado en el sistema. Producto: codBarras Una orden debe tener una y solo una sucursal, la sucursal ya debe estar registrada en el sistema. Sucursal: nombre Resultados La queda registrada en el sistema con toda su información. Estado queda iniciado en algún valor por defecto distinto de “ENTREGADA”, y la fecha de entrega no queda registrada hasta que la orden sea recibida por la sucursal RNF asociados Aislamiento. En caso de que se registre alguna de las entidades asociada a la orden concurrentemente, el aislamiento asegura que quede registrada la orden junto con la otra entidad y la asociación o solo la otra entidad. En todo caso no puede quedar registrada la orden sin las demás entidades. Nombre RF12. Registrar la llegada de un pedido de un producto a una sucursal Resumen Incluye la actualización de inventarios y la evaluación del servicio prestado por el proveedor. Esta operación es realizada por los operadores de una sucursal, pero sólo en la sucursal donde están asociados. Entradas Orden: numeroOrden calificacionProveedor Resultados El estado de la orden cambia a “ENTREGADA” y se registra la fecha en la que fue recibida. Se actualizan los valores de cantidad del producto en bodega. Se actualiza la calificación del proveedor dada la calidad de la entrega. RNF asociados Se requiere atomicidad ya que se debe registrar la llegada de la orden si y solo si se actualizan los inventarios y se da la calificación al proveedor. Se necesita aislamiento por si existen operaciones concurrentes sobre el inventario (las bodegas) que puedan interrumpir la actualización de inventario por la orden. Nombre RF13. Aprovisionar un estante de productos Resumen Esta operación consiste en traer de bodega la cantidad necesaria de productos para que un estante quede lleno y los clientes puedan entonces comprarlo. Incluye la actualización de inventarios. Esta operación es realizada por los operadores de una sucursal, pero sólo en la sucursal donde están asociados. Ocurre normalmente al inicio de la jornada, pero en casos excepcionales de gran volumen de ventas, también puede ocurrir durante el día. Entradas Estante: id Producto: codBarras cantidad Resultados La operación se hace producto por producto y bodega por bodega. Se indica la cantidad que se va a restar de la bodega (debe ser menor a la cantidad que hay en bodega), y esta misma se sumara a la cantidad que hay en el estante (debe respetar la capacidad del estante). Quedan actualizadas las cantidades en la bodega y el estante. RNF asociados Atomicidad: se actualiza el estante si y solo si se actualizan las bodegas. Se necesita aislamiento por si existen operaciones concurrentes sobre las bodegas o estantes que puedan interrumpir la actualización de inventario por la orden. Nombre RF14. Registrar una venta de producto en una sucursal Resumen Registra la venta de n unidades de un producto a un cliente. Incluye el proceso de descarga de inventarios, facturación y eventual generación de pedido de productos o abastecimiento en sucursal. Debe considerar también el caso de las promociones. Esta operación es realizada por los cajeros de las sucursales, pero sólo en la sucursal donde están asociados. Entradas Productos: codBarras, cantidad (Unidades) Resultados Se debe revisar para cada producto que la cantidad comprada es menor a la suma de las disponibilidades en cada estante que tenga ese producto. Como el cajero no conoce de cual estante vino cada producto simplemente para cada producto encuentra el primer estante que tenga ese producto y le resta la cantidad comprada(y de esto no ser suficiente le resta al siguiente estante que tenga ese producto iterativamente). Si Algún estante llega a su nivel de Abastecimiento se llama al proceso de reAbastecimiento de estante para ese producto (RF13) con la primera bodega que se encuentre con ese producto disponible. Si el nivel de las bodegas baja del nivel de reOrden se llama al proceso de orden para ese producto con el primer proveedor de la sucursal que se encuentre con ese producto disponible. Para las promociones se realiza el mismo proceso excepto el de actualización de los estantes ya que las promociones no están en los estantes de los productos regulares. Lo que si se hace es actualizar la cantidad disponible de esa promoción. RNF asociados Atomicidad: se debe registrar la factura si y solo si se actualizan los estantes de los productos de la factura o la disponibilidad de las promociones si es que hay alguna incluida en la compra. Aislamiento: Se necesita aislamiento por si existen operaciones concurrentes sobre los estantes que puedan interrumpir la actualización de inventario por la compra. Sobre los Requerimientos no funcionales de cada Requerimiento Funcional: Todos necesitan coherencia, ya que bajo ninguna operación sobre los datos es deseable generar incoherencia. Todos los que necesiten atomicidad implican la necesidad de durabilidad ya que es una actualización apropiada y coherente sobre los datos y debe persistir una vez realizada. Diseño de la base de datos a) Producto nombre NN marca NN ciudad direccion nombre PK sucursal PK, FK.Sucursal.nombre producto PK, FK.Producto.codBarras precioVenta NN nivelReorden NN id SA, PK sucursal FK.Sucursal.nombre, NN capacidadPeso NN capacidadVol NN tipoProducto id SA, PK sucursal FK.Sucursal.nombre, NN capacidadPeso NN capacidadVol NN tipoProducto ProductoEnEstante producto PK, FK.Producto.codBarras estante PK, FK.Estante.id cantidadUnidades NN nivelAbastecimiento NN cantPresentacionMasa cantPresentacionVol NN NN unidadMedida NN Sucursal Oferta Estante Bodega especEmpacado NN codBarras PK perecedero NN tipo NN ProductoEnBodega producto PK, FK.Producto.codBarras bodega PK, FK.Bodega.id cantidadUnidades NN nombre calificacion nivelAbastecimiento NN Proveedor NIT PK OfertaProveedor proveedor PK, FK.Proveedor.NIT producto precioVentaReferencia PK, FK.Producto.codBarras Orden numeroOrden sucursal proveedor fechaEsperada SA, PK FK.Sucursal.nombre, NN FK.Proveedor.NIT, NN NN sucursal fecha FK.Sucursal.nombre, NN NN tipoDocCliente FK.Cliente.tipoDoc, NN Factura numeroFactura SA, PK ProductosEnFactura numeroFactura producto PK, PK, FK.Producto.codBarras FK.Factura.numeroFactura cantidad NN fechaEntrega documentoCliente FK.Cliente.documento, NN estado producto NN FK.Producto.codBarr as precioAcordadoUnitario cantidadOrdenada NN NN ProductosEnFactura numeroFactura producto PK, PK, FK.Producto.codBarras FK.Factura.numeroFactura PromosEnFactura numeroFactura PK, FK.Factura.numeroFactura Promocion idPromo SA, PK cantidad NN promocion cantidad PK, FK.Promocion.id NN sucursal FK.Sucursal.nombre, NN unidadesDisponibles NN PromocionCombo idPromo PK, FK.Promocion.idPromo precio NN PromocionDescuento idPromo PK, FK.Promocion.idPromo producto FK.Producto.codBarras compre NN lleve NN conDescuento NN ProductosEnPromoCombo idPromo producto PK, FK.PromocionCombo.idPro PK, FK.Producto.codBarras mo Usuario tipoDoc documento nombre correoElectronico palabraClave PK PK NN NN NN tipoDoc PK, FK.Usuario.tipoDoc documento PK, FK.Usuario.documento nombre NN correoElectronico NN puntos documento PK, FK.Cliente.documento direccion Cliente Empresa tipoDoc PK, FK.Cliente.tipoDoc Rol rol PK sucursal FK.Sucursal.nombre, NN rol FK.Rol.rol, NN b) El modelo relacional cumple con el Nivel de Normalización 1 ya que no existen tablas con atributos con posibles multivalores. El modelo cumple con el Nivel de Normalización 2 ya que no existen tablas en las que las llaves candidatas participan en dependencias parciales hacia los atributos no primos. Esto es fácil de verificar ya que la mayoría de las tablas tienen PK que consisten en máximo dos atributos. En ningún caso es alguna de las dos innecesaria o determina por separado atributos que en conjunto ambas también determinan. El modelo también cumple con Nivel de Normalización 3 ya que no hay tablas con atributos no primos que determinen a otros atributos no primos. Esto es fácil de verificar ya que todos los atributos no primos son independientes. Además, se cumple Boyce-Codd ya que ninguna tabla cuenta con llaves candidatas que se intersecan. Control de calidad del modelo