Sei sulla pagina 1di 5

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

Potrebbero piacerti anche