Story Transcript
Introducción La era de la tecnología y la información, en la cual nos encontramos inmersos, obliga a las empresas a sacar el mayor provecho de sus recursos tecnológicos. En este sentido, el diseño y modelaje de Bases de Datos cumple un papel muy importante en la tarea del manejo de información, brindándole a los usuarios y dueños de la información la capacidad de tener buena información en el momento preciso para la toma de decisiones. Este trabajo, tiene como objetivo, tal y como se verá durante su desarrollo, recabar la información necesaria para elaborar un modelo de base de datos relacional que le permita a la fábrica de muebles DeCar manejar los datos relacionados con clientes, compras, materiales y artículos de manera confiable. Para ello, se realizará un análisis de requerimientos de información, el cual servirá como base para el desarrollo de un modelo conceptual. Este modelo será llevado al proceso de Normalización para pasar luego a un modelo lógico que servirá como materia prima para la posterior implementación del modelo físico de datos, todo esto apegado a las necesidades de la empresa en cuanto a manejo de información y los datos. Objetivo General • Crear un modelo de una base de datos relacional para la mueblería DeCar con el fin de aportar una solución viable los problemas de control sobre el inventario, proveedores y clientes que tienen en la actualidad Objetivos Específicos • Aplicar los conocimientos adquiridos en el curso de bases de datos uno con el fin crear un modelo de bases de datos relacional eficiente y acorde con la necesidades de la mueblería DeCar. • Proporcionar a la mueblería DeCar una solución viable al problema de control de datos que tienen actualmente. • Identificar los requerimientos para el manejo de la información (entidades) de la fábrica de muebles DeCar. • Cumplir con los requerimientos establecidos por el profesor para la elaboración competente de este trabajo Metodología aplicada: Para el desarrollo de este trabajo se implementarán tres técnicas de análisis de información las cuales nos permitirán establecer cuales son los requerimientos, las mismas se detallan a continuación: • Entrevista (anexo Nº 1) • Observación directa sobre los procesos objetos de estudio. • Análisis de documentación de la empresa (anexo Nº 2) • Análisis de la información y elaboración del modelo de datos. Descripción de la empresa
1
La compañía DeCar está dedica a la fabricación de muebles de oficina, comedor, cocina, entre otros. Esta fabrica se encuentra localizada en Heredia, específicamente en el sector de San Rafael, actualmente cuenta con 14 colaboradores; esta es una empresa pequeña que tiene escasamente 2 años de hacer sido fundada, sin embargo durante ese tiempo a logrado incrementar sus ventas y hacerse de una basta cantidad de clientes como por ejemplo el Banco de Costa Rica. En la actualidad la fábrica DeCar desea abrir nuevos talleres que le permitan cumplir de mejor manera la demanda de muebles que realizan los clientes Misión de la compañía La misión de la compañía es el crear muebles de gran calidad y únicos de una manera lucrativa y segura para la ecología. Filosofía al Cliente La satisfacción del cliente es crítico para nuestro éxito, así que vamos a ofrecer una garantía incondicional de regreso de dinero a cualquiera que no este satisfecho con sus muebles. Esta garantía de retorno va a demostrar nuestro compromiso de ofrecer una calidad excelente y al mismo tiempo asegurar la satisfacción del cliente. Metas a largo Plazo En tres años DeCar espera tener 36 empleados y ventas anuales de 100 millones de colones. Planes van a estar en marcha para hacer la fabricación en nuestras instalaciones y para agregar un departamento de ventas por catalogo. Nosotros pensamos seguir fabricando San Rafael de Heredia pero talvez agreguemos instalaciones satélites de fabricación y ventas si es necesario. Descripción del problema Por ser una compañía pequeña y recientemente fundada su dueño se permitía llevar los datos de la empresa en cuadernos y hojas de cálculo de Excel, sin embargo al ver el aumento en las ventas (sobre todo desde que logró hacerse contratista del Banco de Costa Rica), estos recursos no le han sido suficientes y últimamente han propiciado una serie de desordenes que han dado al traste con la entrega oportuna de muebles. La mueblería necesita implantar un sistema que le permita ejercer un mayor control sobre clientes, materia prima en bodega para la elaboración de los muebles, compras, proveedores y artículos que les son comprados. Es por este motivo que se hace viable la creación de un sistema de información que permitiría ejercer el control que el dueño requiere. Fundamentalmente se debe mantener actualizada la información de la cual hoy se carece control en la mueblería, y permitiere al dueño comparar las compras con la materia prima existente en la bodega y la fecha de entrega del producto para asegurarse de que es posible cumplir con el plazo establecido previamente con el cliente. Solución propuesta Creación de un modelo de base de datos relacional que gestione los aspectos de los cuales se carece control en la empresa. Este sistema debe proporcionar los medios para el manejo de la información de 2
la fábrica de manera se almacena de manera correcta y ordenada. Descripción de requerimientos La fábrica de muebles DeCar necesita implantar un sistema que le permita ejercer un mayor control sobre clientes, materia prima en bodega para la elaboración de los muebles, compras y artículos que se ofrecen; todo lo anterior orientado al área de producción de la misma. Con el análisis de los datos suministrado por los instrumentos de recopilación utilizados para el estudio de los procesos realizados en el área de producción de la compañía fue posible establecer cuales son las fuentes de información necesarias que deben ser cubiertas por este modelo. La mueblería realiza negocios con varios clientes los cuales pueden ser particulares o empresas el proceso de contratación y pago de los muebles (contabilidad) es realizado en forma independiente por el dueño de la empresa por medio de un sistema que tiene un rendimiento aceptable en este momento y son ajenos a este modelo de datos. Los clientes de la mueblería realizan la cantidad de pedidos que deseen, los límites de tiempo con respecto a la entrega son impuestos por el tipo de pedido y la cantidad de trabajo existente en el taller. DeCar maneja las compras de muebles por medio de pedidos, ya que por el tipo de clientes que maneja estos comúnmente compran mas de un mueble a la vez, cada pedido cuenta con un detalle de los artículos que lo conforman. Los pedidos hechos a la empresa pueden contar con muebles de diferentes tipos y en diferente cantidad. La información de los pedidos cuenta con la siguiente información • Numero de pedido. • Fecha en la que fue concretado el contrato. • Fecha en que deben estar confeccionados y entregados los muebles del pedido. • Detalle del pedido, aquí se establece cuales son los muebles que deben ser confeccionados. Los materiales necesarios para realizar los muebles se compran a proveedores específicos, sin embargo en caso de que el proveedor no cuente con el artículo deseado se procede a la compra de un producto similar con alguno de los demás proveedores con los que la empresa trabaja. Con los proveedores se tienen previos arreglos de pago por ejemplo 30 días de plazo; también le son ofrecidos a la compañía descuentos según los volúmenes de compra. Supuestos Supuesto #1 La fábrica de muebles DeCar maneja viarios clientes los cuales pueden comprar el número de artículos que deseen realizando el pedido respectivo. Para el control de clientes la compañía almacena la cédula, el nombre, la dirección y el teléfono donde se pueda localizar al cliente en caso de ser necesario. Supuesto #2 El proceso de compra se establece el numero de pedido, la fecha en la que fue realizado el contrato y la fecha en que el mismo debe ser entregado Supuesto #3
3
Los pedidos cuentan con un detalle de cuales son los artículos que lo conforman, la empresa cataloga los artículos con un código, nombre, precio y descripción de los mismos. Supuesto #4 DeCar se abastece de materiales según la demanda de muebles que tenga. Para esto es necesario establecer la cantidad de X material utilizado por cada artículo. Supuesto #5 Para confeccionar los artículos (muebles) se necesitan ciertos materiales los cuales son suministrados por proveedores específicos, en caso de ser solicitado un material que el proveedor no tiene en ese momento se procede a la compra de otro material de similares características a otro proveedor. Para los materiales se almacena el código del material, el nombre, el precio y la descripción del mismo. Supuesto #6 Para registrar a los proveedores la compañía almacena el código del proveedor, el nombre, la dirección y el teléfono Supuesto #7 Con cada proveedor se tienen previos arreglos de pago los cuales pueden poner cierto enteres al total de la compra y descuentos los cuales son cuantificados según la cantidad de mercadería comprada por la fábrica. Detalle de entidades, atributos y relaciones Entidad
Atributos Cedula*
Relacionada con
Nombre Pedido
Cliente Teléfono Dirección Código _Artículo* Nombre
Material
Precio
Pedido
Articulo
Descripción Numero_Pedido* Fecha_Pedido Cliente Pedido
Fecha_Entrega Artículo Descripción Dirección 4
Código _Material* Nombre
Proveedor
Precio
Artículo
Material
Descripción Código_ Proveedor* Descuento Nombre Formas de pago
Proveedor Dirección
Material Teléfono Código _Descuento* Proveedor
Descuento Cantidad Código _Forma* Forma de pago
Tiempo
Proveedor
Interés * = Atributo Indentificador Principal Modelo lógico El modelo lógico contempla el siguiente diccionario de datos: Diccionario de Datos Modelo Lógico Relación Cliente Nombre Campo cedula nombre primer_apellido segundo_apellido telefono direccion
Tipo de dato numeric(9, 0) varchar(10) varchar(10) varchar(10) numeric(8, 0) varchar(20)
Nulos NOT NULL NOT NULL NOT NULL NULL NOT NULL NULL
PK Y N N N N N
Tipo de dato numeric(7, 0) Date Date varchar(10 varchar(20)
Nulos NOT NULL NOT NULL NOT NULL NULL NULL
PK Y N N N N
Relación Pedido Nombre Campo numero_pedido fecha_pedido fecha_entrega descripcion direccion
5
Relación Artículo Nombre Campo codigo_articulo nombre precio descripcion
Tipo de dato numeric(5, 0) varchar(10) numeric(6, 2) varchar(10
Nulos NOT NULL NOT NULL NOT NULL NULL
PK Y N N N
Tipo de dato numeric(5, 0) varchar(10) numeric(6, 2) varchar(10
Nulos NOT NULL NOT NULL NOT NULL NULL
PK Y N N N
Tipo de dato numeric(5, 0) varchar(3) numeric(5, 0)
Nulos NOT NULL NOT NULL NOT NULL
PK Y N N
Tipo de dato numeric(5, 0) varchar(10) varchar(20) numeric(8, 0)
Nulos NOT NULL NOT NULL NULL NOT NULL
PK Y N N N
Tipo de dato numeric(5, 0) numeric(3, 2)
Nulos NOT NULL NOT NULL
PK Y N
Tipo de dato numeric(5, 0) numeric(3, 0) numeric(3, 2)
Nulos NOT NULL NOT NULL NULL
PK Y N N
Tipo de dato
Nulos
PK
Relación Material Nombre Campo codigo_material nombre precio descripcion Relación Suministra Nombre Campo codigo_proveedor cantidad codigo_material Relación Proveedor Nombre Campo codigo_proveedor nombre direccion telefono Relación Descuento Nombre Campo codigo_descuento cantidad Relación Forma de pago Nombre Campo codigo_forma tiempo interes Relación Ofrece Nombre Campo
6
codigo_proveedor codigo_descuento
numeric(5, 0) numeric(5, 0)
NOT NULL NOT NULL
Y Y
Tipo de dato numeric(5, 0) numeric(5, 0)
Nulos NOT NULL NOT NULL
PK Y Y
Tipo de dato numeric(5, 0) numeric(5, 0) numeric(3, 0)
Nulos NOT NULL NOT NULL NULL
PK Y Y N
Tipo de dato numeric(9, 0) numeric(7, 0)
Nulos NOT NULL NOT NULL
PK Y Y
Tipo de dato numeric(7, 0) numeric(5, 0)
Nulos NOT NULL NOT NULL
PK Y Y
Relación Permite Nombre Campo codigo_proveedor codigo_forma Relación Necesita Nombre Campo codigo_articulo codigo_material cantidad Relación Realiza_ Pedido Nombre Campo cedula numero_pedido Relación Detalla_ Pedido Nombre Campo numero_pedido codigo_articulo Modelo Físico de Datos A continuación se presenta el código scripts que dará origen al modelo físico en el Sistema de Gestión de Base de Datos: % % ER/1 1.14 SQL Code Generation % % % Date Created: Friday, August 23 2002 at 07:50 PM % Target DBMS : Sybase SQL Anywhere % %
7
% TABLE: CLIENTE % DROP TABLE CLIENTE; CREATE TABLE CLIENTE( cedula numeric(9, 0) NOT NULL, nombre varchar(10) NOT NULL, primer_apellido varchar(10) NOT NULL, segundo_apellido varchar(10) , telefono numeric(8, 0) NOT NULL, direccion varchar(20) , PRIMARY KEY (cedula) ); % % TABLE: PEDIDO % DROP TABLE PEDIDO; CREATE TABLE PEDIDO( numero_pedido numeric(7, 0) NOT NULL, fecha_pedido date NOT NULL, fecha_entrega date NOT NULL, descripcion varchar(20) , direccion varchar(10) , PRIMARY KEY (numero_pedido) ); % % TABLE: ARTICULO
8
% DROP TABLE ARTICULO; CREATE TABLE ARTICULO( codigo_articulo numeric(5, 0) NOT NULL, nombre varchar(10) NOT NULL, precio numeric(6, 2) NOT NULL, descripcion varchar(10) , PRIMARY KEY (codigo_articulo) ); % % TABLE: MATERIAL % DROP TABLE MATERIAL; CREATE TABLE MATERIAL( codigo_material numeric(5, 0) NOT NULL, nombre varchar(10) NOT NULL, precio numeric(6, 2) NOT NULL, descripcion varchar(10) , PRIMARY KEY (codigo_material) ); % % TABLE: SUMINISTRA % DROP TABLE SUMINISTRA; CREATE TABLE SUMINISTRA( codigo_proveedor numeric(5, 0) NOT NULL,
9
cantidad varchar(3) NOT NULL, codigo_material numeric(5, 0) NOT NULL, PRIMARY KEY (codigo_proveedor), FOREIGN KEY(codigo_proveedor) REFERENCES PROVEEDOR(codigo_proveedor), FOREIGN KEY(codigo_material) REFERENCES MATERIAL(codigo_material) ); % % TABLE: PROVEEDOR % DROP TABLE PROVEEDOR; CREATE TABLE PROVEEDOR( codigo_proveedor numeric(5, 0) NOT NULL, nombre varchar(10) NOT NULL, direccion varchar(20) , telefono numeric(8, 0) NOT NULL, PRIMARY KEY (codigo_proveedor) ); % % TABLE: DESCUENTO % DROP TABLE DESCUENTO; CREATE TABLE DESCUENTO( codigo_descuento numeric(5, 0) NOT NULL, cantidad numeric(3, 2) NOT NULL,
10
PRIMARY KEY (codigo_descuento) ); % % TABLE: FORMA_DE_PAGO % DROP TABLE FORMA_DE_PAGO; CREATE TABLE FORMA_DE_PAGO( codigo_forma numeric(5, 0) NOT NULL, tiempo numeric(3, 0) NOT NULL, interes numeric(3, 2) , PRIMARY KEY (codigo_forma) ); % % TABLE: OFRECE % DROP TABLE OFRECE; CREATE TABLE OFRECE( codigo_proveedor numeric(5, 0) NOT NULL, codigo_descuento numeric(5, 0) NOT NULL, PRIMARY KEY (codigo_proveedor,codigo_descuento), FOREIGN KEY(codigo_proveedor) REFERENCES PROVEEDOR(codigo_proveedor), FOREIGN KEY(codigo_descuento) REFERENCES DESCUENTO(codigo_descuento) ); %
11
% TABLE: PERMITE % DROP TABLE PERMITE; CREATE TABLE PERMITE( codigo_proveedor numeric(5, 0) NOT NULL, codigo_forma numeric(5, 0) NOT NULL, PRIMARY KEY (codigo_proveedor,codigo_forma), FOREIGN KEY(codigo_proveedor) REFERENCES PROVEEDOR(codigo_proveedor), FOREIGN KEY(codigo_forma) REFERENCES FORMA_DE_PAGO(codigo_forma) ); % % TABLE: NECESITA % DROP TABLE NECESITA; CREATE TABLE NECESITA( codigo_articulo numeric(5, 0) NOT NULL, codigo_material numeric(5, 0) NOT NULL, cantidad numeric(3, 0) , PRIMARY KEY (codigo_articulo,codigo_material), FOREIGN KEY(codigo_articulo) REFERENCES ARTICULO(codigo_articulo), FOREIGN KEY(codigo_material) REFERENCES MATERIAL(codigo_material) );
12
% % TABLE: REALIZA_PEDIDO % DROP TABLE REALIZA_PEDIDO; CREATE TABLE REALIZA_PEDIDO( cedula numeric(9, 0) NOT NULL, numero_pedido numeric(7, 0) NOT NULL, PRIMARY KEY (cedula,numero_pedido), FOREIGN KEY(cedula) REFERENCES CLIENTE(cedula), FOREIGN KEY(numero_pedido) REFERENCES PEDIDO(numero_pedido) ); % % TABLE: DETALLA_PEDIDO % DROP TABLE DETALLA_PEDIDO; CREATE TABLE DETALLA_PEDIDO( numero_pedido numeric(7, 0) NOT NULL, codigo_articulo numeric(5, 0) NOT NULL, PRIMARY KEY (numero_pedido,codigo_articulo), FOREIGN KEY(numero_pedido) REFERENCES PEDIDO(numero_pedido), FOREIGN KEY(codigo_articulo) REFERENCES ARTICULO(codigo_articulo) );
13
Anexos 8
14