Sunteți pe pagina 1din 5

create database unsaca_asistencia_2018_2;

use unsaca_asistencia_2018_2;

create table centro_trabajo


(idcentro int auto_increment,
nombcent varchar(255),
obsvcent varchar(255),
estacent tinyint,
constraint pk_idcentro
primary key(idcentro));

create table cargo


(idcargo int auto_increment,
nombcarg varchar(255),
estacarg tinyint,
constraint pk_idcargo
primary key(idcargo));

create table seguridad


(idseguridad int auto_increment,
usuasegu varchar(50),
passsegu varchar(50),
estasegu tinyint,
constraint pk_idseguridad
primary key(idseguridad));

create table persona


(idpersona int auto_increment,
nombpers varchar(255),
apatpers varchar(255),
amatpers varchar(255),
iddistrito int,
direpers varchar(100),
idcentro int,
idcargo int,
fnacpers varchar(20),
sexopers char(1),
telfpers varchar(15),
celupers varchar(15),
emailpers varchar(100),
obsvpers varchar(100),
estapers tinyint,
constraint pk_idpersona
primary key(idpersona));

create table reunion


(idreunion int auto_increment,
nombreun varchar(100),
obsvreun varchar(100),
constraint pk_idreunion
primary key(idreunion));

create table distrito


(iddistrito int auto_increment,
nombdist varchar(100),
idprovincia int,
obsvdist varchar(100),
estadist tinyint,
constraint pk_iddistrito
primary key(iddistrito));

create table reunion_persona


(idpersona int,
idreunion int,
fecha_hora varchar(30),
constraint pk_reunion_persona
primary key(idpersona,idreunion));

create table provincia


(idprovincia int auto_increment,
nombprov varchar(100),
obsvprov varchar(100),
estaprov tinyint,
constraint pk_idprovincia
primary key(idprovincia));

alter table persona


add constraint fk_idcentro foreign key(idcentro)
references centro_trabajo(idcentro);

alter table persona


add constraint fk_idcargo foreign key(idcargo)
references cargo(idcargo);

alter table persona


add constraint fk_iddistrito
foreign key(iddistrito)
references distrito(iddistrito);

alter table reunion_persona


add constraint fk_reunion_persona
foreign key(idpersona)
references persona(idpersona);

alter table reunion_persona


add constraint fk_reunion
foreign key(idreunion)
references reunion(idreunion);

alter table distrito


add constraint fk_idprovincia
foreign key(idprovincia)
references provincia(idprovincia);

delimiter//
create procedure sp_insert_cargo
(xnombcarg varchar(50))
begin
insert into cargo
values(0,xnombcarg,1);
end;

delimiter//
create procedure sp_update_cargo
(xidcargo int,
xnombcarg varchar(50))
begin
update cargo
set nombcarg=xnombcarg
where idcargo=xidcargo;
end;

delimiter//
create procedure sp_delete_cargo
(xidcargo int)
begin
update cargo
set estacarg=0
where idcargo=xidcargo;
end;

create view vcargo


as
select idcargo,nombcarg
from cargo
where estacarg=1;

delimiter//
create procedure sp_insert_persona
(xnombpers varchar(50),
xapatpers varchar(50),
xamatpers varchar(50),
xiddistrito int,
xdirepers varchar(50),
xidcentro int,
xidcargo int,
xfnacpers varchar(50),
xsexopers char(1),
xtelfpers varchar(15),
xcelupers varchar(15),
xemailpers varchar(50),
xobsvpers varchar(50))
begin
insert into persona
values
(0,xnombpers,xapatpers,xamatpers,xiddistrito,xdirepers,xidcentro,xidcargo,
xfnacpers,xsexopers,xtelfpers,xcelupers,xemailpers,xobsvpers,1)
end;

delimiter//
create procedure sp_update_persona
(xidpersona int,
xnombpers varchar(50),
xapatpers varchar(50),
xamatpers varchar(50),
xiddistrito int,
xdirepers varchar(50),
xidcentro int,
xidcargo int,
xfnacpers varchar(50),
xsexopers char(1),
xtelfpers varchar(15),
xcelupers varchar(15),
xemailpers varchar(50),
xobsvpers varchar(50))
begin
update persona
set
nombpers=xnombpers,apatpers=xapatpers,amatpers=xamatpers,iddistrito=xiddistrito,dir
epers=xdirepers,idcentro=xidcentro,idcargo=xidcargo,
fnacpers=xfnacpers,sexopers=xsexopers,telfpers=xtelfpers,celupers=xcelupers,emailpe
rs=xemailpers,obsvpers=xobsvpers
where idpersona=xidpersona;
end;

delimiter//
create procedure sp_delete_persona
(xidpersona int)
begin
update persona
set estapers=0
where idpersona=xidpersona;
end;

create view vpersona


as
select p.idpersona,
p.nombpers,
p.apatpers,
p.amatpers,
pv.nombprov,
d.nombdist,
p.direpers,
c.nombcent,
cg.nombcarg,
p.fnacpers,
p.sexopers,
p.telfpers,
p.celupers,
p.emailpers,
p.obsvpers
from cargo cg join persona p join centro_trabajo c
join distrito d join provincia pv
on cg.idcargo=p.idcargo and c.idcentro = p.idcentro
and d.iddistrito=p.iddistrito and
d.idprovincia=pv.idprovincia
where p.estapers=1
order by p.idpersona;

delimiter//
create procedure sp_insert_distrito
(xnombdist varchar(50),
xidprovincia int,
xobsvdist varchar(100))
begin
insert into distrito
values (0,xnombdist,xidprovincia,xobsvdist,1);
end;

delimiter//
create procedure sp_update_distrito
(xiddistrito int,
xnombdist varchar(50),
xidprovincia int,
xobsvdist varchar(100))
begin
update distrito
set nombdist=xnombdist,idprovincia=xidprovincia,obsvdist=xobsvdist
where iddistrito=xiddistrito;
end;

delimiter//
create procedure sp_delete_distrito
(xiddistrito int)
begin
update distrito
set estadist=0
where iddistrito=xiddistrito;
end;

create view vdistrito


as
select d.iddistrito,
d.nombdist,
p.nombprov,
d.obsvdist
from distrito d join provincia p
on d.idprovincia=p.idprovincia
where d.estadist=1
order by d.iddistrito;