Está en la página 1de 25

UNIVERSIDAD NACIONAL DE

INGENIERÍA
FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS

CORPABER S.A.C.
CURSO:

BASE DE DATOS (ST-274)

PROFESOR:

SANCHEZ ESPINOZA, JAVIER

INTEGRANTES:
DESCRIPCIÓN DE LA EMPRESA

CORPABER SAC. Se dedica al abastecimiento de alimentos para personas y animales,


compitiendo en las licitaciones tanto públicas como privadas.

El sector privado es un mercado al que recién han ingresado el año 2016; sin embargo, en
el sector público llevan 30 años de experiencia, siendo los proveedores líderes de artículos
de primera necesidad para las Fuerzas Armadas de Perú.

La empresa está ubicada en el Jr. Contisuyo Nro. 139(Alt. 20 de Nicolás Ayllón) Ate.
Esta cuenta con 15 trabajadores dedicados a las áreas de compras, licitaciones, ventas,
entre otros.

HISTORIA DE LA EMPRESA

La empresa CORPABER SAC. Se formaliza hace 7 años, pero desarrollaba sus funciones
desde ya hace 30 años como comercializadores de carne desde el camal de yerbateros
hacia los mercados limeños, al inicio. Al transcurrir los años se fueron haciendo dueños
de una cartera de clientes cada vez mayor, y por su amplia red de contactos y dominio de
abastecimiento, decidieron escalar a un nivel mayor, participar en las licitaciones públicas
y privadas. Siendo su primer cliente una unidad del ejército peruano, Cuartel Hoyos Rubio
y así fueron en aumento hasta el día de hoy, convirtiéndose en los proveedores líderes de
artículos de primera necesidad para las Fuerzas Armadas del Perú.

Cuenta el gerente Walter Gutarra que su padre, Don Gerardo Gutarra, se dedicaba a la
comercialización de carnes. Proveniente de Huancayo, se ubicó en un puesto del camal
de Yerbateros en Ate, donde era apoyado por sus hijos, Walter y Fernando. Estos últimos,
hoy gerentes de CORPABER, supieron ver la oportunidad en el abastecimiento de
primera necesidad y decidieron también dedicarse al mismo rubro. A medida del paso del
tiempo y con un gran capital acumulado, deciden formar varias líneas, separando así lo
que es carnes y abarrotes, fundando así CHAYPE (dedicado a el abastecimiento para el
ejército peruano) y HGV(dedicado al abastecimiento para la policía peruana), luego
construyeron un establo, decidiendo hace 7 años formar la CORPORACIÓN
AGROPECUARIA BERTHA SAC. Bertha en honor a su madre.
MISION Y VISIÓN

 MISIÓN: Proveer los mejores artículos de primera necesidad para las entidades
del estado peruano, permitiéndonos contribuir con el desarrollo alimenticio de
nuestro país.
 VISIÓN: Seguir siendo la empresa líder en proveer artículos de primera
necesidad para las entidades del estado y estar dentro de las 20 primeras del sector
privado.

PRODUCTOS QUE COMERCIALIZA LA EMPRESA

 Carnes
 Mondongos
 Balanceado y pasto(caballos del ejército y policía peruana)
 Abarrotes(arroz, aceite, etc)
 Verduras
 Uniformes(desde enero del 2016 – HGV)

COMPETIDORES

CORPABER SAC tiene como competidores principales, considerando como facturación


de licitación mayor a 200 mil nuevos soles:

 COMERCIAL 3 ESTRELLAS (frutas y víveres secos)


 IMPORTACIONES EL CHOLITO(carnes, mondongos)

Empresas con las cuales compite en licitaciones menores a los 200 mil nuevos soles:

 COMERCIAL TAURO SAC


 HERMANOS SERRANO SAC
CLIENTES

Como mencionamos al inicio, sus clientes son las distintas unidades de las Fuerzas
Armadas del Perú. Detallando más por zonas, son los siguientes:

 Ayacucho (2da Brigada y 22 de Enero)


 Iquitos (5ta unidad de Refuerzo)
 Lima(COEDE, 18 BB, RMC, ALPES, Fuerte Hoyos, Pentagonito, Círculo
militar)
 Tacna (4ta Brigada)
 Puno(4ta Brigada)
 Cuzco (5ta Brigada, Unidad Quillabamba)
 Sullana(Fuerte Policial)
 Huampani( Colegio Mayor)
 Unidades de la PNP

ENUNCIADO DEL PROBLEMA

Se desea informatizar la gestión de la empresa. La gestión diaria de este tipo de empresas


se basa en la atención a una serie de pedidos de clientes fijos para intervalos de tiempo
definidos.

La falta de segmentación y orden en los datos, trae como consecuencia la ineficiencia en


la administración de la información en los procesos de ventas y demora en los tiempos
para la toma de decisiones.

SUPUESTO 1: De cada empresa que hace pedidos interesa conocer: un número de


identificación asignado a la misma, su dirección completa y la información
correspondiente a sus propietarios.

SUPUESTO 2: Una empresa solicitante puede tener uno o varios propietarios que pueden
ser los mismos o no, que los responsables en la recepción de los pedidos.

SUPUESTO 3: De un pedido se es necesario conocer las características específicas, que


cumplan con las necesidades del que las adquiera, así como las fechas de entrega y la
sucursal de la empresa que recibirá el pedido.
SUPUESTO 4: La empresa cuenta con un conjunto de productos en su almacén. De estos
productos interesa conocer: su identificación, tipo de producto, precio de coste, precio
de venta y unidades disponibles. La empresa controlará la entrada de productos en
almacén, así que se sugiere que los productos puedan identificarse de tal forma que
este hardware pueda ser utilizado correctamente.

SUPUESTO 5: Será necesario que el software que se desarrolle, basándose en la


información existente en cada producto (unidades en existencia, ritmo de ventas,
etc.), que determine la necesidad de realizar compras del mismo.

SUPUESTO 6: Existe un personal capacitado para las licitaciones, las compras para el
almacén y la distribución conforme a los pedidos requeridos.

SUPUESTO 7: Cada pedido puede tener precios de venta diferentes para los mismos
productos y, además el plazo de entrega del pedido también puede ser diferente.

SUPUESTO 8: Será necesario además que el software se desarrolle, basándose en la


información concerniente a los empleados, las horas que laboran, los gastos que
incurren en el proceso de distribución y los pedidos a los que está a cargo.

SUPUESTO 9: En un pedido pueden comprarse uno o varios productos y, de cada


producto, una o varias unidades.

SUPUESTO 10: Por último, es interesante conocer que los productos se agrupan en tipos
de productos y que cada producto tiene usuario promedio para el.

ORIENTACIÓN PARA SU RESOLUCIÓN

Las Bases de Datos tienen una gran relevancia a nivel personal, pero más si cabe, a nivel
empresarial, y se consideran una de las mayores aportaciones que ha dado la informática
a las empresas. En la actualidad, cualquier organización que se precie, por pequeña que
sea, debe contar con una Base de Datos, pero para que sea todo lo efectiva que debe, no
basta con tenerla: hay que saber cómo gestionarlas.

En el caso de que en nuestra compañía no contemos con una persona que se encargue de
esta labor, existe la posibilidad de contratar a una empresa externa que se encargue.
Las principales utilidades que ofrece una base de datos a la empresa son las siguientes:

 Agrupar y almacenar todos los datos de la empresa en un único lugar.


 Facilitar que se compartan los datos entre los diferentes miembros de la empresa.
 Evitar la redundancia y mejorar la organización de la agenda.
 Realizar una interlocución adecuada con los clientes.

Si una Base de Datos se gestiona adecuadamente, la organización obtendrá diferentes


ventajas. Aumentará su eficacia, habrá trabajos que se realicen con mayor rapidez y
agilidad debido a la simplificación de los mismos, podremos mejorar la seguridad de los
datos que almacenamos, y con todos estos factores, maximizaremos los tiempos y por
tanto, se producirá una mejora en la productividad.

Estas funcionalidades aportarán un valor añadido a la empresa, ya que con una base de
datos formulada correctamente, conseguiremos que la información y el conocimiento
sean los mayores activos de la compañía, lograremos sacar el máximo rendimiento a las
competencias de nuestros colaboradores, así como averiguar datos de nuestros clientes
potenciales. Por último, puesto que la información es poder, cuantos más datos tengamos,
mayor será la competitividad de la compañía.

OBJETIVOS

 Plantear una mejor forma de organización de la información de Comercial


 Mejorar el manejo de los datos de las ventas para obtener información rápida y
veraz.
 Mediante este sistema de control de la base de datos se tendrá una administración
organizada y clara ante las ventas de sus artículos, como artículos más vendidos,
controlar su stock, etc.
 Disminuir redundancias e inconsistencias de los datos
 Reducir la dificultad para tener acceso a los datos
 Evitar el aislamiento de los datos
 Disminuir los problemas de seguridad
 Disminuir los problemas de integridad
TABLAS

 Clientes:

Esta tabla contiene información importante de los clientes, como la identidad del
cliente, el cual es un código para cada cliente, el nombre de la empresa, el nombre del
contacto con quien se negocia, su cargo, etc.

 Pedidos:

En esta tabla se detallan los datos de los pedidos como identidad del pedido, el cliente,
fecha del pedido, fecha de despacho, destinatario, etc.

 Empleados:

En esta tabla se detallan los datos de los empleados como su identidad, que su código
de identificación, sus nombres y apellidos, su cargo, su dirección, etc.

 Detalles de Pedido:

En esta tabla se detallan los detalles más específicos de los pedidos, como por ejemplo
el ID del pedido, ID del producto, precio unitario, cantidad, y descuento.

 Productos:

En esta tabla se detallan los datos de los productos con los que cuenta la empresa,
como su ID, su nombre, sus stocks, entre otros.
Diagrama entidad relación
TABLAS EN SQL SERVER

Las tablas fueron elaboradas de forma manual, colocando lo primary key y foreing key.
Además presentamos el script de algunas tablas:

- Cliente

- Pedidos
- Compañías de envió

- Empleados

- Detalles de pedidos
- Productos

- Proveedores

- Categorías
create table cliente
(
idCliente varchar(5) primary key,
NombreCompañia varchar(100) not null,
NombreContacto varchar(100),
CargoContacto varchar(100),
Direccion varchar(100),
Ciudad varchar(100),
Region varchar(100),
CodPostal varchar(100),
Pais varchar(100),
Telefono varchar(30),
Fax varchar(30)
);
--------------------------------

create table Pedidos


(
IdPedido int primary key,
IdCliente varchar(5) not null,
IdEmpleado int not null,
FechaPedido date,
FechaEntrega date,
FechaEnvio date,
FormaEnvio int,
Cargo decimal(18,2),
Destinatario varchar(60),
DireccionDestinatario varchar(60),
CiudadDestinatario varchar(60),
RegionDestinatario varchar(60),
CodPostalDestinatario varchar(60),
PaisDestinatario varchar(60)
);
-------------------------------------

create table compañiasdeenvios


(
idCompañiaEnvios int primary key,
nombreCompañia varchar(40) not null,
telefono varchar(24)
);
-------------------------------------

create table Empleado


(
IdEmpleado int primary key,
Apellidos varchar(20),
Nombre varchar(20),
cargo varchar(40),
Tratamiento varchar(40),
FechaNacimiento date,
FechaContratacion date,
direccion varchar(60),
ciudad varchar(15),
region varchar(15),
codPostal varchar(10),
pais varchar(15),
TelDomicilio varchar(24),
Extension varchar(4),
notas text,
Jefe int,
sueldoBasico decimal(18,2)
);
-------------------------------------

create table detallesdepedidos


(
idpedido int,
idproducto int,
preciounidad decimal(18,2) not null,
cantidad int not null,
descuento decimal(18,2) not null
);
--------------------------------------

create table producto


(
idproducto int primary key,
nombreProducto varchar(40),
idProveedor int null,
idCategoria int null,
cantidadPorUnidad varchar(20) null,
precioUnidad decimal null,
unidadesEnExistencia smallint null,
unidadesEnPedido smallint null,
nivelNuevoPedido smallint null,
suspendido smallint,
categoriaProducto varchar(20) null
);

------------------------------------
create table proveedores
(
idProveedor int primary key,
nombreCompañia varchar(40) not null,
nombrecontacto varchar(30),
cargocontacto varchar(30),
direccion varchar(60),
ciudad varchar(15),
region varchar(15),
codPostal varchar(10),
pais varchar(15),
telefono varchar(24),
fax varchar(24),
paginaprincipal text
);
--------------------------

alter table detallesdepedidos


add constraint fk_1
foreign key (idpedido)
references pedidos (idpedido);

alter table detallesdepedidos


add constraint fk_2
foreign key (idproducto)
references producto (idproducto);

-------------------------
create table categorias
(
idcategoria int primary key,
nombrecategoria varchar(100) not null,
descripcion text
);

------------------------
alter table producto
add constraint fk_3
foreign key (idproveedor)
references proveedores (idproveedor);

--------------------------
alter table pedidos
add constraint fk_4
foreign key (formaenvio)
references compañiasdeenvios (idcompañiaenvios);
-------------------------
alter table pedidos
add constraint fk_5
foreign key (idcliente)
references cliente (idcliente);
------------------------
alter table pedidos
add constraint fk_6
foreign key (idempleado)
references empleado (idempleado);
----------------------
alter table producto
add constraint fk_7
foreign key (idcategoria)
references categorias (idcategoria);

/*
INSERCIONES COMPAÑIAS DE ENVIO
*/

INSERT INTO compañiasdeenvios(idCompañiaEnvios,nombreCompañia,telefono)


values(1,'Speedy Express','(503) 555-9831');
INSERT INTO compañiasdeenvios(idCompañiaEnvios,nombreCompañia,telefono)
values(2,'United Package','(503) 555-3199');
INSERT INTO compañiasdeenvios(idCompañiaEnvios,nombreCompañia,telefono)
values(3,'Federal Shipping','(503) 555-9931');
CONSULTAS SQL

JOIN
Sirve para solicitar datos procedentes de dos o más tablas en la base de datos. Las
tablas se relacionan por intermedio de columnas análogas.
---Se muestra en una sola tabla el idpedido, el empleado que solicito el pedido,
la fecha en que se realizo el pedido, el producto que se ha pedido, el nombre del
producto, su precio y su cantidad; extrayendo los datos de tres tablas diferentes
( tabla pedido, producto, detallesdepedidos)---

select * from pedidos


select * from productos
select * from detallesdepedidos

select pedidos.idpedido,idempleado, fechapedido,productos.idproducto,


nombreproducto, detallesdepedidos.preciounidad, cantidad
from pedidos,productos, detallesdepedidos
where pedidos.idpedido = detallesdepedidos.idpedido
and detallesdepedidos.idproducto = productos.idproducto

RESULTADO
SUBCONSULTAS

select *from detallesdepedidos

---- mostrar los productos cuyo precio unitario sea mayor a 100 soles

select idproducto, preciounidad, cantidad from detallesdepedidos


where preciounidad > 100

ORIGINAL
RESULTADO

--- Mostrar el nombre de los productos que esten en la categoria C---

select *from productos

select nombreproducto from productos


where categoriaproducto = 'categoria c'
ORIGINAL

RESULTADO

TRANSACT

-- Se ingresa una Compañía de envío

Begin tran

insert into compañiasdeenvios(idCompañiaEnvios,nombreCompañia,telefono)


values(4,'Express','(503) 545-9721');
select * from compañiasdeenvios

rollback
VERSION ORIGINAL

VERSION NUEVA

---Se cambia el nombre de una compañía de envíos---

Begin tran

Update compañiasdeenvios set nombreCompañia = 'Express'


where nombreCompañia = 'Speedy Express'

select * from compañiasdeenvios

rollback

VERSION ORIGINAL
VERSION NUEVA

---Eliminar los sueldos iguales a 1000---

Begin tran

delete empleado where sueldoBasico = 1000

select * from empleado

rollback

VERSION ORIGINAL

VERSION NUEVA
Vistas
SELECT * FROM detallesdepedidos
CREATE VIEW BuenasGanancias as
SELECT idpedido, idproducto, CANTIDAD FROM detallesdepedidos
where cantidad > 4
SELECT * FROM BuenasGanancias

Funciones
DELETE FROM Pedidos
WHERE exists (SELECT * FROM Pedidos
WHERE datename(DAY,'1994-08-08') <datediff (day,'2014-09-11',getdate())
and datepart (quarter,getdate())>10)
Procedures

Se muestra un procedimiento para agregar nuevos proveedores en la tabla respectiva, pero


con la validación debida:
 Valida la existencia del idproveedor
 Valida la existencia del nombre del proveedor
 Valida el idproveedor que le corresponde
Finalmente luego de validar estos campos se agrega el nuevo proveedor

BEGIN TRAN

SELECT IDPROVEEDOR, NOMBRECOMPAÑIA, CIUDAD FROM PROVEEDORES

CREATE PROCEDURE NUEVOPROVEEDOR (@P1 INT, @P2 VARCHAR(20), @P3 VARCHAR(20))


AS
DECLARE @P4 INT
IF EXISTS (SELECT * FROM PROVEEDORES WHERE (IDPROVEEDOR = @P1) OR
(NOMBRECOMPAÑIA = @P2) )
BEGIN
PRINT 'PROVEEDOR YA EXISTE'
SELECT IDPROVEEDOR, NOMBRECOMPAÑIA, CIUDAD FROM PROVEEDORES
WHERE (IDPROVEEDOR=@P1) OR (NOMBRECOMPAÑIA =@P2)
END
ELSE
BEGIN
SELECT @P4=((SELECT COUNT(IDPROVEEDOR) FROM PROVEEDORES)+1)
IF (@P1 <> @P4 )
BEGIN
PRINT 'IDPROVEEDOR ERRADO'
SELECT @P4 AS IDPROVEEDRO_SIGUIENTE
END
ELSE
BEGIN
INSERT INTO PROVEEDORES (IDPROVEEDOR, NOMBRECOMPAÑIA,
CIUDAD)
VALUES (@P1, @P2, @P3)
PRINT 'NUEVO PROVEEDOR AGREGADO CORRECTAMENTE'
SELECT IDPROVEEDOR, NOMBRECOMPAÑIA, CIUDAD FROM
PROVEEDORES
END
END

NUEVOPROVEEDOR 1,'LEKA TRADING','LIMA'


NUEVOPROVEEDOR 250,'FASHION','LIMA'

NUEVOPROVEEDOR 30,'FASHION','LIMA'
ROLLBACK

DROP PROCEDURE NUEVOPROVEEDOR


Triggers
Se ha creado un trigger que cada vez que se agregue un nuevo proveedor, el trigger
automáticamente agregara los datos del proveedor a una tabla de nuevos proveedores
previamente creada.

DROP TABLE PROVEEDORES

CREATE TABLE PROVEEDORES(


IDPROVEEDOR INT,
NOMBRECOMPAÑIA VARCHAR(40),
CIUDAD VARCHAR(15),
);

INSERT INTO proveedores values(22,'Zaanse Snoepfabriek','Zaandam')


INSERT INTO proveedores values(23,'Karkki Oy','Lappeenranta')
INSERT INTO proveedores values(24,'G''day, Mate','Sydney')
INSERT INTO proveedores values(25,'Ma Maison','Montréal')
INSERT INTO proveedores values(26,'Pasta Buttini s.r.l.','Salerno')
INSERT INTO proveedores values(27,'Escargots Nouveaux','Montceau')

CREATE TABLE NUEV_PROVE


(ID INT,
NOM VARCHAR(20),
CIUDAD VARCHAR(20));

CREATE TRIGGER NEW_PROVE


ON PROVEEDORES AFTER INSERT AS
BEGIN
INSERT INTO NUEV_PROVE
SELECT * FROM INSERTED
PRINT 'SE AGREGO NUEVO PROVEEDOR'
END

INSERT INTO proveedores values(54,'Escgots Nouveaux','Moceau')

SELECT * FROM PROVEEDORES

SELECT * FROM NUEV_PROVE

También podría gustarte