DESARROLLO DE LAS 11 TECNICAS DE DESNORMALIZACION EN SQL
TECNICAS DE DESNORMALIZACION EN SQL
Primero vamos a crear nuestra Base de Datos en SQL. La base de datos se va llamar Crditos y Cobranza. En seguida tambin crearemos las tablas de la BD.
DESARROLLO DE LAS 11 TECNICAS DE DESNORMALIZACION EN SQL
Tablas de la Base de Datos Crditos y Cobranza.
DESARROLLO DE LAS 11 TECNICAS DE DESNORMALIZACION EN SQL
IMPLEMENTACION DE LAS TECNICAS
EN SQL 1. CAMPO TOTALDLADESNORMALIZACION REDUNDANTE create trigger d_ticket on DTiket for update,insert,delete as declare @cod varchar(10),@total int,@imp int select @cod=id_ticket from inserted select @total=sum(cantidad),@imp=sum(importe) from DTiket where id_ticket=@cod update ticket set total_prod=@total update ticket set importe_tot=@imp
2.- ATRIBUTOS REDUNDANTE EN LA FILA DE UNA TABLA
alter table clientes add clavedir varchar(30) Implementacin de trigger create trigger clave_dir on Clientes for update,insert as declare @cod varchar(10) declare @dig varchar(1),@i int declare @cad varchar(30),@dir varchar(30) select @cod=id_cli from inserted select @dir=upper(dir_cli) from inserted where id_cli=@cod set @cad='' set @dig='a' set @i=1 while (@dig<>' ') begin set @dig=substring(@dir,@i,1) set @cad=@cad+@dig set @i=@i+1 end if @cad='JIRON' set @cad='JR' if @cad='CALLE' SET @CAD='CL' if @cad='AVENIDA' SET @CAD='AV' if @cad='CAMPAMENTO' SET @CAD='CM' set @dir=substring(@dir,@i,len(@dir)) set @cad=@cad+@dir update Clientes set clavedir=replace(@cad,' ','') where id_cli=@cod insert into clientes(id_cli,id_dis,nom_cli,dir_cli) values('4','6','juan','Calle proceres 123')
DESARROLLO DE LAS 11 TECNICAS DE DESNORMALIZACION EN SQL
3.- CAMPO TOTAL REDUNDANTE
alter table Boletas add total_pro int create trigger d_boleta on DBoleta for update,insert,delete as declare @cod varchar(10),@total int,@imp int select @cod=id_bol from inserted select @total=sum(cantidad),@imp=sum(importe) from DBoleta where id_bol=@cod update boletas set total_pro=@total update boletas set importe_tot=@imp
4.- COLUMNAS REDUNDANTE PARA UN HISTORICO
create table Historico_cli( id_cli varchar(10)foreign key references Clientes(id_cli), id_pro varchar(10) foreign key references Productos(id_pro) nomcli varchar(30), nompro varchar(30) )create trigger historico on DBoleta for insert as declare @cod varchar(10),@codbol varchar(10),@codcli varchar(10) declare @ncli varchar(30),@npro varchar(30) select @cod=id_bol from inserted select @codbol=id_pro from Inserted where id_bol=@cod select @codcli=id_cli from Boletas where id_bol=@cod select @ncli=nom_cli from clientes where id_cli=@codcli select @npro=nom_pro from Productos where id_pro=@codbol insert into Historico_cli values(@codcli,@codbol,@ncli,@npro)create table Historico_cli( id_cli varchar(10)foreign key references Clientes(id_cli), id_pro varchar(10) foreign key references Productos(id_pro) nomcli varchar(30), nompro varchar(30) )create trigger historico on DBoleta for insert as declare @cod varchar(10),@codbol varchar(10),@codcli varchar(10) declare @ncli varchar(30),@npro varchar(30) select @cod=id_bol from inserted select @codbol=id_pro from Inserted where id_bol=@cod select @codcli=id_cli from Boletas where id_bol=@cod select @ncli=nom_cli from clientes where id_cli=@codcli select @npro=nom_pro from Productos where id_pro=@codbol insert into Historico_cli values(@codcli,@codbol,@ncli,@npro)
5. - COLUMNAS MULTIVALUADAS alter trigger codigo on Distritos for insert
DESARROLLO DE LAS 11 TECNICAS DE DESNORMALIZACION EN SQL
as declare @cod varchar(10),@n varchar(3) declare @c varchar(10) select @c=id_reg from inserted select @cod=id_reg,@n=substring(nom_reg,1,3) from regiones where id_reg=@c set @cod=@cod+upper(@n) declare @num int select @num=count(id_reg) from Distritos where id_reg=@c set @cod=@cod+cast(@num as varchar(6)) --Insert into distritos Select id_dis,nom_dis,id_reg From Deleted update Distritos set id_dis=@cod from inserted where Distritos.id_dis=inserted.id_dis print @cod insert into Distritos values('00','prueb','10') select * from distritos where id_REG='10'
7.- COLUMNAS SOBRECARGADAS
create procedure ingreso_cli @cod varchar(10),@cdis varchar(10),@nomcli varchar(30),@dircli varchar(30),@tper varchar(15),@tel varchar(11),@doc varchar(11) as insert into clientes(id_cli,id_dis,nom_cli,dir_cli,tel_cli,tipo_persona,DNI) values (@cod,@cdis,@nomcli,@dircli,@tel,@tper,@doc) create trigger insert_cliente on clientes for insert,update as declare @t varchar(15),@cod varchar(10) declare @te varchar(11),@ruc varchar(30) select @cod=id_cli,@t=tipo_persona from inserted print(@t) if (@t='juridica') begin select @te=cel_cli,@ruc=DNI from inserted update clientes set cel_cli='0' where id_cli=@cod update clientes set DNI='0' where id_cli=@cod update clientes set tel_cli=@te where id_cli=@cod update clientes set RUC=@ruc where id_cli=@cod end