Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Y URBANISMO
INGENIERIA DE SISTEMAS
Autores:
DIANA KATHERINE GARCIA CHOZO
Docente:
DÍAZ VIDARTE, MIGUEL ORLANDO
RAZÓN SOCIAL DE LA ORGANIZACIÓN
DESCRIPCION DE LA EMPRESA
Induamerica es socio estratégico del agricultor nacional y también nos preocupamos por el
cuidado del medio ambiente, invirtiendo en tecnología que minimice la contaminación ambiental.
VISION
MISIÓN
TABLAS
Columnas Definición
Asignacion Son las asignaciones de los empleados a los proyectos
Departamento Departamentos o áreas en que está organizada la empresa
Dependiente Personas que dependen de los empleados de la empresa
Distrito Distritos de las provincias de la región Lambayeque
Empleado Empleados de la empresa
Hora Horas desde las 7:00am hasta las 8:00pm, con intervalos de una
hora, y que son consideradas las horas en que pueden comenzar una
jornada de trabajo diaria dedicada a un proyecto
LineaHorario Los días y horas en que los integrantes se reúnen para trabajar en el
proyecto
Provincia Provincias de la región Lambayeque
Proyecto Proyectos que ha realizado o está realizando la empresa
Número de Dependiente en
numero_Depe tinyint NOT NULL Yes No función al empleado
- Vacaciones (V)
codigo Dis tinyint NOT NULL No Yes Código del distrito donde vive el
empleado
Codigo_ Hor tinyint NOT NULL Yes No Código con que se identifica la hora
Codigo_ Prov tinyint NOT NULL Yes No Código que identifica a una provincia
---------------------------------------------------------------------------------------------------
AS
BEGIN
FROM Empleado
END
execute pa_NombEmpleado
select*from Empleado
-----------------------------------------------------------------------------------------------------
--2. crear un procedimiento para mostrar la cantidad de empleados por año y mes de nacimiento
AS
BEGIN
SET LANGUAGE Spanish;
COUNT(*) AS EMPLEADOS
FROM Empleado
END
EXECUTE pa_listarEmpleadosPorAñoMesDeNacimiento
select*from Empleado
--------------------------------------------------------------------------------------------------------
as
begin
count(*)as Empleados
from Empleado
order by Año
end
execute pa_listarEmpleadosAñoMesDeNacimiento
--------------------------------------------------------------------------------------------------------
--4. Listar número de departamento en específico 5 de finanzas
as
where dep.numero_Dep='5'
exec pa_deparespec
----------------------------------------------------------------------------------------------------------------------------
AS
BEGIN
from Dependiente
end
execute pa_NacidEnUnAñoDet
select*from Dependiente
select*from Empleado
-------------------------------------------------------------------------------------------------------------------
-- 6. Listar el número de seguro social y el nombre completo de los empleados que trabajan en
un proyecto en especifico
ALTER PROCEDURE pa_listaEmpPorProy
@num smallint
AS
BEGIN
end
execute pa_listaEmpPorProy 10
select*from Asignacion
---------------------------------------------------------------------------------------------------
AS
BEGIN
from Proyecto
end
execute Pa_Proyecto_presu
------------------------------------------------------------------------------------------------------------------------------
-- 8. Listar los datos de los dependientes de un empleado, dado su número de seguro social
@nss char(9)
as
begin
from Dependiente
where nss_Emp=@nss
end
select*from Dependiente
------------------------------------------------------------------------------------------------
--9. Mostrar los 3 proyectos que tienen más empleados asignados, con sus debidos presupuestos
y su fecha de inicio del proyecto
as
begin
fechaFin_Pro, numero_Dep
end
execute pa_ProyConMasEmp
-----------------------------------------------------------------------------------------------
--10. Mostrar los n proyectos que tienen más empleados asignados, con sus respectivos
presupuestos
@num int
as
begin
end
execute pa_proyMasEmpAsig 5
-------------------------------------------------------------------------------------------
--11. Dado un estado específico, listar los proyectos que se encuentran en ese estado y
considerar el nombre del departamento al que pertenecen
alter procedure pa_proyectoPorEstado
@estado char(1)
as
begin
m.numero_Dep, estado_Pro
where estado_Pro=@estado
end
-----------------------------------------------------------------------------------------------
--12. Dado el número de un mes mostrar el número de empleados. por medio de un parámetro
de salida, que han ingresado en ese mes sin importar el año al que corresponde.
as
begin
from Empleado
end
--------------------------------------------------------------------------------------------
as
begin
from Dependiente
end
execute pa_CantDepRanEdad
-----------------------------------------------------------------------------------------------------
--14. Dado un número de seguro social, mostrar nombre completo del empleado, nombre
completo y parentesco de sus dependientes
@nss char(9)
as
begin
from Empleado
where nss_Emp=@nss
select apellidoPat_Depe, apellidoMat_Depe, nombres_Depe, parentesco_Depe
from Dependiente
where nss_Emp=@nss
end
------------------------------------------------------------------------------------------
@nss char(9)
as
begin
from Empleado
where nss_Emp=@nss
from Dependiente
where nss_Emp=@nss
else
END
----------------------------------------------------------------------------------------------------
--16. Numero de apellidos paternos y maternos que se repitan de acuerdo al texto ingresado
as
begin
select @n1=count(*)
from Empleado
select @n2=count(*)
from Empleado
end
------------------------------------------------------------------------------------------------------------------
--17. Dado una fecha de inicio y una de fin, mostrar los empleados que nacieron dentro de ese
rango de fechas
as
begin
from Empleado
where fechaNac_Emp between @fechaIn and @fechaFin
end
---------------------------------------------------------------------------------------------------------------
as
begin
where codigo_Prov=1
end
execute pa_nomProy
---------------------------------------------------------------------------------------------------
--19.- crear un PA que muestre los proyectos y los días por las horas trabajadas
@horas int= 0
as
begin
if not exists (select * from LineaHorario LH where LH.horas_LiH = @horas )
else
where lih.horas_LiH=@horas
end
select*from LineaHorario
select*from Proyecto
-----------------------------------------------------------------------------------------------
--20. Dado un código de provincia, mostrar la cantidad de empleados que viven en cada distrito
de esa provincia.
@prov varchar(20)
as
begin
group by p.nombre_Prov
end
select*from Provincia
select*from Distrito
select*from Empleado
FUNCIONES
--1. crea una función que muestre los nombres del proyecto en mayúscula
as
begin
end
-------------------------------------------------------------------------------------------------------
--2. crea una función que obtenga el salario final de cada empleado
AS
BEGIN
set @salario=@sala-120
return @salario
END
-------------------------------------------------------------------------------------------------------------------
AS
BEGIN
return @pre
END
------------------------------------------------------------------------------------------------------
as
begin
return @nom
end
select*from Empleado
--------------------------------------------------------------------------------------------------
--5. CREAR UNA FUNCION QUE BRINDANDO LOS NOMBRES, APELLIDOS Y TELEFONO GENERE UN
CODIGO CON LA SIGUIENTE ESTRUCTURA
-- (ABCD-123)
CREATE FUNCTION gene_codigo (@nombre varchar (50), @apellido varchar (50), @telefono
varchar (15)) RETURNS varchar (15)
AS
BEGIN
END
--6. CREAR UNA FUNCION QUE Muestre el nombre DE DEPARTAMENTOS el resultado debe estar
ordenado por el nombre de manera ascendente
as
begin
return @nombre
end
select*from Empleado
select*from Departamento
-----------------------------------------------------------------------------------------------------------------------
--7. crear una función que en basa a los nombres se genere un correo personalizado para cada
empleado
as
begin
return @correo
end
---------------------------------------------------------------------------------------------------------
returns integer
as
begin
end;
----------------------------------------------------------------------------------------------------------------
--9. CREAR UNA FUNCION QUE DADA UNA FECHA EN ESPECIFICO RETORNE EL NOMBRE DEL MES
Y EL NOMBRE DEL DIA EN INGLES
BEGIN
END
------------------------------------------------------------------------------------------------------------------------
--10. crear una función que según el tipo de dato muestre los nombres y apellidos de la persona
genero
AS
BEGIN
END
--11. Crear una función que devuelva el nombre completo de los empleados que pertenecen a un
determinado distrito (ID_DISTRITO).
AS
BEGIN
RETURN
END
-----------------------------------------------------------------------------------------------------------------
--12. Mostrar el máximo presupuesto y el mínimo presupuesto de los proyectos que están
ubicados en el distrito de Chiclayo
as
begin
declare @maxpresu int = (SELECT TOP 1 P.presupuesto_Pro FROM Proyecto P INNER JOIN Distrito
D on
P.codigo_Dis = D.codigo_Dis where D.nombre_Dis = @distrito ORDER BY P.presupuesto_Pro
DESC)
declare @minpresu int = (SELECT TOP 1 P.presupuesto_Pro FROM Proyecto P INNER JOIN Distrito
D on
end
----------------------------------------------------------------------------------------------------------------------
AS
BEGIN
END
select*from Dependiente
--14. Crear una función que ingrese “E” (empleado), "P" (Proyecto) y
"D", (departamento) y muestre el Nombre Completo.
-- 15. Función que devuelve la dirección del Dependiente pasándole el codigo del mismo
as
begin
end
VISTAS
-- 1. Crear una vista que permita dar por cada distrito, el número de proyectos
-- que se tienen.
select*from proyectos_por_distrito
select*from Proyecto
select*from Distrito
----------------------------------------------------------------------------------------------
-- 2. creamos una vista que muestre los datos de un dependiente y su parentesco del empleado
------------------------------------------------------------------------------------------------------------
-- 3. crear una vista que solo contenga el nombre del proyecto, la fecha de inicio y fin del
proyecto de un distrito determinado
-------------------------------------------------------------------------------------------------------------------------------
-- 4. crea una vista que muestre el total de las horas por proyecto
--------------------------------------------------------------------------------------------------------------
-- 5. crear una vista que muestre la fecha de nacimiento de los empleados que nacieron en 1980
al 1990 del distrito de chongoyape
--------------------------------------------------------------------------------------------------------------------------------
-- 6. crea una vista que muestre el departamento con su respectivo proyecto del dia lunes cuyo
presupuesto sea menor a 5000
----------------------------------------------------------------------------------------------------------------------------
select*from Empleados
---------------------------------------------------------------------------------------
select*from Empleados_Mod
-------------------------------------------------------------------------------------------
-- 9. crear una vista que concatene los campos de nombres, apellidos de la tabla dependientes y
mostrar en una lista, únicamente
-- de los que pertenecen al distrito Chiclayo
select*from Distrito_Dep
select*from Dependiente
-----------------------------------------------------------------------------------------------------------------------------------
-- 10. Mostrar el codigo del seguro social de los empleados que estan de vacaciones
select*from Empl_Vacaciones
select*from Asignacion
select*from Empleado
-----------------------------------------------------------------------------------------------------------------------------------
-
-- 11. ---crear una vista donde me muestre de que distrito pertenecen los proyectos y el tiempo o
años de duración
---------------------------------------------------------------------------------------------------------
--12. crear una vista que nos muestre los presupuestos de los proyectos
-- que se encuentran perteneciendo al día lunes, además incluir el nombre
-- de los proyectos
--13. CREAR UNA VISTA QUE MUESTRE LA LISTA DE EMPLEADOS QUE PERTENECEN AL
DEPARTAMENTO DE MARKETING,
--ADEMAS INCLUIR EL NOMBRE DEL DISTRITO QUE TIENE COMO LUGAR DE RESIDENCIA
--14. CREAR UNA VISTA QUE SE MUESTRE SEGUN EL AÑO DETALLES COMO, DNI, NUMERO DE
PROYECTO.
--15. CREAR UNA VISTA QUE MUESTRE LOS NOMBRES DE LOS PROYECTOS, PROVINCIA Y
PRESUPUESTO
--SEGUN LA BUSQUEDA DE COINCIDENCIA, DONDE LOS NOMBRES EMPIEZEN CON LA PALABRA
'PROYECTO'.
CREATE VIEW PROYECT
AS
SELECT nombre_Pro NOMBRE_PROYECTO, Pr.nombre_Prov PROVINCIA, P.presupuesto_Pro
PRESUPUESTO FROM Proyecto P inner join Distrito D on P.codigo_Dis = D.codigo_Dis
inner join Provincia Pr on D.codigo_Prov = Pr.codigo_Prov where nombre_Pro Like
'Producto%'
TRIGGER
--4--Trigger que almacena en una tabla ALTO_SUELDO, a los clientes que sean registrados con un
sueldo superior a 3500
--5--Trigger que restringe que el valor del presupuesto de un proyecto no sea mayor a 70000
ROLLBACK TRANSACTION
PRINT 'YA NO SE LES PERMITE DESFILFARRAR EL DINERO EN PROYECTOS MUY
COSTOSOS LOS CUALES INCLUSO HACEN MAL'
END
INSERT INTO
Proyecto(numero_Pro,nombre_Pro,estado_Pro,numero_Dep,presupuesto_Pro,fechaIni_Pro,fechaF
in_Pro,codigo_Dis) VALUES (22,'Capacitación a gerentes de
departamento','T',6,122000,'19/05/2013','15/12/2013',26)
--8-- crear un trigger que permita actualizar la tabla HOra ingresando un nuevo registro,
on Hora
for INSERT
as
begin
end
--10-- TRIGGER QUE ALMACENA LOS DATOS DEL NUEVO EMPLEADO EN TABLA TRABAJADOR
NUEVO
--LA TABLA DEBERA CONTENER EL NOMBRE COMPLETO, DNI, SEXO
AS
BEGIN
declare @nombre varchar (50)
select @nombre = usuario from inserted
declare @operacion varchar (100)
select @operacion = operacion from inserted
print 'CAMBIO REALIZADO POR '+@nombre+' operacion '+@operacion
END
--14--. Crear un trigger que dentro de una tabla edad almacene el nombre, apellido y edad de un
nuevo empleado registrado
INDICES
SET STATISTICS IO ON
2
CREATE NONCLUSTERED INDEX FECH_GER ON Departamento (fechaIniGer_Dep)
3
CREATE INDEX NOM_DEPE ON Dependiente (nombres_Depe)
4
CREATE INDEX fecha_nac ON Dependiente (fechaNac_Depe)
5
CREATE NONCLUSTERED INDEX ape_pat ON Dependiente (apellidoPat_Depe)
6
CREATE NONCLUSTERED INDEX ape_mat ON Dependiente (apellidoMat_Depe)
7
CREATE UNIQUE INDEX NOM_DIS ON Distrito (nombre_Dis)
8
CREATE INDEX DNI_EMP ON Empleado (dni_Emp)
9
CREATE NONCLUSTERED INDEX Telefono ON Empleado (direccion_Emp)
10
CREATE NONCLUSTERED INDEX Direccion ON Empleado (direccion_Emp)
11
CREATE INDEX Hora ON Hora (nombre_Hor)
12
CREATE NONCLUSTERED INDEX Dia ON LineaHorario (dia_LiH)
13
CREATE UNIQUE INDEX Nom_pro ON Provincia (nombre_Prov)
15
CREATE NONCLUSTERED INDEX presupuesto ON Proyecto (presupuesto_Pro)
16
CREATE INDEX Horas ON Asignacion (horasSem_Asi)
-----
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS
CURSORES
1. CURSOR QUE MUESTRA LOS DATOS DEL DEPENDIENTE TAL COMO NUNERO DE SEGURO
SOCIAL, NOMBRE, PARENTESCO
open Depe
fetch next from Depe into @nss_Emp, @nomDep, @parent
PRINT '--------------------------------------------------------------------------------------------'
PRINT 'N° SEGURO SOCIAL'+SPACE(5)+'NOMBRE DEPENDIENTE'+ SPACE(12)+ 'PARENTESCO'+
SPACE(15)
PRINT '--------------------------------------------------------------------------------------------'
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @nss_Emp+space(15)+ @nomDep+ space(2)+ @parent
fetch next from Depe into @nss_Emp, @nomDep, @parent
END
CLOSE Depe
DEALLOCATE Depe
-----------------------------------------------------------------------------------------------------------------------------------
-----------
OPEN CUR_PROPRE
DECLARE @NOMBRE CHAR(50), @PRE CHAR(20), @TOTAL INT =0
FETCH NEXT FROM CUR_PROPRE INTO @NOMBRE, @PRE
WHILE @@FETCH_STATUS=0
BEGIN
SET @TOTAL+=1
PRINT @NOMBRE+SPACE(20)+str (@PRE)
FETCH NEXT FROM CUR_PROPRE INTO @NOMBRE, @PRE
END
PRINT '-------------------------------------------------------------------------------------------'
PRINT 'TOTAL DE PROYECTOS ES: ' + CAST(@TOTAL AS CHAR(10))
CLOSE CUR_PROPRE
DEALLOCATE CUR_PROPRE
------------------------------------------------------------------------------------------------------------
---3. CURSOR QUE MUESTRE LOS PROYECTOS POR DEPARTAMENTO DENTRO DE UN RANGO DEL
AÑO 2013 AL 2014
open CUR_POYECTO
DECLARE @NOM_PROY char (20)
fetch next from CUR_POYECTO INTO @NOM_PROY
WHILE @@FETCH_STATUS=0
begin
print @DEPA + SPACE(20)+ @NOM_PROY
FETCH NEXT FROM CUR_POYECTO INTO @NOM_PROY
end
close CUR_POYECTO
deallocate CUR_POYECTO
FETCH NEXT FROM CUR_DEPA INTO @DEPA, @IDDEPA
END
CLOSE CUR_DEPA
DEALLOCATE CUR_DEPA
--------------------------------------------------------------------------------------------------------------------------------
--4. CURSOR QUE MUESTRE EL DISTRITO CON SU RESPECTIVA PROVINCIA
open DISTPRO
FETCH NEXT FROM DISTPRO INTO @nombDis, @nomProv
PRINT '*******************'
PRINT 'DISTRITO'+ SPACE(23) + 'PROVINCIA'
PRINT '*******************'
WHILE @@FETCH_STATUS=0
BEGIN
CLOSE DISTPRO
DEALLOCATE DISTPRO
SELECT*FROM Distrito
----------------------------------------------------------------------------------------------------------------------------
--5. CURSOR QUE MUESTRE DISTRITOS POR PROVINCIA CON UN CURSOR ANIDADO
OPEN PROVINCIA
DECLARE @PROV CHAR(20), @COD INT
FETCH NEXT FROM PROVINCIA INTO @PROV, @COD
WHILE @@FETCH_STATUS=0
BEGIN
PRINT '-----------------------------------------------------'
PRINT UPPER(@PROV)
PRINT '-----------------------------------------------------'
OPEN DISTRITO
DECLARE @DIST CHAR(40)
FETCH NEXT FROM DISTRITO INTO @DIST
WHILE @@FETCH_STATUS=0
BEGIN
PRINT SPACE(3)+@DIST
FETCH NEXT FROM DISTRITO INTO @DIST
END
CLOSE DISTRITO
DEALLOCATE DISTRITO
END
CLOSE PROVINCIA
DEALLOCATE PROVINCIA
-----------------------------------------------------------------------------------------------------------------------------
--6. CURSOR QUE MUESTRE EL TOTAL DE HORAS QUE MUESTRE EL TOTAL DE HORAS DE
ASIGNACIÓN TRABAJADAS EN LOS PROYECTOS POR EMPLEADO
WHILE @@FETCH_STATUS=0
BEGIN
SET @ETOTAL +=1
PRINT @IDEMP + SPACE(15) + @NOMBEMP + SPACE(5) + @ASIG
PRINT '--------------------------------------------------------------------------------------------------------'
PRINT 'TOTAL DE HORAS POR ASIGNACION ES: ' + CAST(@ETOTAL AS CHAR(4)) + SPACE(30) +
'TOTAL DE HORAS:' + SPACE(2) +
CAST(@SUMATOTAL AS CHAR(10))
CLOSE CUR_SUELDO
DEALLOCATE CUR_SUELDO
------------------------------------------------------------------------------------------------------------------------------
--7. CURSOR QUE MUESTRE LA CANTIDAD DE LOS EMPLEADOS NOMBRADOS Y CONTRATADOS
EN EL DISTRITO DE
OPEN CUR_SITUACIONEMPLEADO
DECLARE @CODIGOEMP CHAR (5), @NOMB CHAR(30), @DISTRITO CHAR (30), @SITU
CHAR (10), @SITUEMPLE CHAR (10),@SIEM CHAR (10),
@CONT INT =0,@TOTA INT =0 , @CONTN INT=0
PRINT REPLICATE('-',80)
PRINT 'SITUACION:'+ SPACE(25)+ @SIEM
PRINT REPLICATE(' ',80)
WHILE @@FETCH_STATUS=0
BEGIN
SET @TOTA +=1
IF @SITUEMPLE=@SIEM
BEGIN
PRINT @CODIGOEMP+SPACE(12)+@NOMB+
SPACE(1)+@DISTRITO+SPACE(1) +@SITU
SET @CONT+=1
END
ELSE
BEGIN
PRINT REPLICATE('-',80)
PRINT 'TOTAL DE EMPLEADO CON SITUACION '+ @SIEM +'ES: '+
CAST(@CONT AS CHAR(5))
PRINT REPLICATE('-',80)
PRINT 'SITUACION: '+ + SPACE(25) + @SITUEMPLE
PRINT ''
PRINT 'CODIGO'+
SPACE(13)+'NOMBRE'+SPACE(23)+'DISTRITO'+SPACE(15)+'SITUACION'
PRINT REPLICATE('-',80)
SET @SIEM =@SITUEMPLE
SET @TOTA =@CONT
SET @CONT=0
END
FETCH CUR_SITUACIONEMPLEADO INTO @CODIGOEMP , @NOMB , @DISTRITO ,
@SITU ,@SITUEMPLE
END
PRINT REPLICATE('-',80)
PRINT 'TOTAL DE EMPLEADO CON SITUACION ' + @SIEM+ ' ES '+SPACE(5) + CAST(@CONT AS
CHAR(5))
PRINT REPLICATE('-',80)
PRINT ''
PRINT 'TOTAL DE EMPLEADOS CONTRATADOS Y NOMBRADOS: ' + CAST(@TOTA AS CHAR(5))
CLOSE CUR_SITUACIONEMPLEADO
DEALLOCATE CUR_SITUACIONEMPLEADO
--------------------------------------------------------------------------------------------------------------------------------
--8. CURSOR QUE MUESTRE LA DIRECCIÓN DEL EMPLEADO CON SU RESPECTIVO SEGURO SOCIAL
Y NUMERO DE DNI
OPEN DIR_EMP
DECLARE @SEGSOC CHAR(9), @DIR CHAR(50), @DNI CHAR(8)
BEGIN
PRINT
'================================================================================
======'
PRINT 'SEGURO SOCIAL' + SPACE(15) + 'DIRECCIÓN DEL EMPLEADO' + SPACE(25) + 'N°
DNI'
PRINT
'================================================================================
======'
END
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @SEGSOC + SPACE(15) + @DIR + SPACE(2) + @DNI
FETCH NEXT FROM DIR_EMP INTO @SEGSOC, @DIR, @DNI
END
CLOSE DIR_EMP
DEALLOCATE DIR_EMP
ANEXOS
1.- PROCEDIMIENTOS ALMACENADOS
2.- FUNCIONES