domingo, 17 de abril de 2011

Soluciones T07

T07.001- Crea las siguientes tablas:
TA (a int, b int) CP(a) create table TA (a int, b int, primary key (a)) engine=innodb 
TB (c int, d int) CP(c) CAj(d) >> TA (borrados: propagar, modificaciones: propagar)
create table TB (c int, d int, primary key (c), foreign key (d) references TA (a) on delete cascade on update cascade ) engine=innodb
TC (e int, f int) CP(e) CAj(f) >> TB (borrados: propagar, modificaciones: propagar)
create table TC (e int, f int, primary key (e), foreign key (f) references TB (c) on delete cascade on update cascade)engine=innodb

T07.002- Inserta los siguientes datos
TA(1,10) insert into TA value ('1','10') 
TA(2,20) insert into TA value ('2','20')
TA(3,30) insert into TA value ('3','30')
TB(100,1) insert into TB value ('100','1')
TB(200,1) insert into TB value ('200','1')
TB(300,2) insert into TB value ('300','2')
TB(400,NULL) insert into TB value ('400',NULL)
TC(1000,100) insert into TC value ('1000','100')
TC(2000,100) insert into TC value ('2000','100')
TC(3000,NULL) insert into TC value ('3000',NULL)

T07.003- Borra TA(2,20) y comprueba los cambios que se han producido en las 3 tablas.
delete from TA where a=2 and b=20

T07.004- Modifica TA(1,10) a TA(15,10) y comprueba los cambios que se han producido en las 3 tablas.
update TA set a=15 where a=1
               
T07.005- Borra TC(2000,100) y comprueba los cambios que se han producido en las 3 tablas.
delete from TC where e=2000 and f=100

T07.006- Borra TA(3,30) y comprueba los cambios que se han producido en las 3 tablas.
delete from TA where a=3 and b=30

T07.007- Borra TB(100,15) y comprueba los cambios que se han producido en las 3 tablas.
delete from TB where c=100 and d=15

T07.008- Borra TC(3000,NULL) y comprueba los cambios que se han producido en las 3 tablas.
delete from TC where e=3000

T07.009- Borra TB(400,NULL) y comprueba los cambios que se han producido en las 3 tablas.
delete from TB where c=400

T07.010- Borra TA(15,10) y comprueba los cambios que se han producido en las 3 tablas: ¿Están vacias? Si, lo están.
delete from TA where a=15 and b=10

T07.011- Vuelve a crear las tablas:
TA (a int, b int) CP(a)
TB (c int, d int) CP(c) CAj(d) >> TA 
(borrados: anular, modificaciones: anular)
TC (e int, f int) CP(f) CAj(f) >> TB 
(borrados: anular, modificaciones: anular)
drop table TC
drop table TB
drop table TA
create table TA(a int, b int, primary key (a)) engine=innodb
create table TB(c int, d int, primary key (c), foreign key (d) references TA(a) on delete set null on update set null) engine=innodb
create table TC(e int, f int, primary key(e), foreign key (f) references TB(c) on delete set null on update set null) engine=innodb

T07.012- Vuelve a rellenar las tablas:
TA(1,10) insert into TA value ('1', '10')
TA(2,20) insert into TA value ('2', '20')
TA(3,30) insert into TA value ('3', '30')
TB(100,1) insert into TB value ('100', '1')
TB(200,1) insert into TB value ('200', '1')
TB(300,2) insert into TB value ('300', '2')
TB(400,NULL) insert into TB value ('400',NULL)
TC(1000,100) insert into TC value ('1000', ‘100’)
TC(2000,100) insert into TC value ('2000', ‘100’)
TC(3000,NULL) insert into TC value ('3000', NULL)

T07.013- Ejecuta las siguientes órdenes:
Borra TA(2,20)
delete from TA where a=2 and b=20
Modifica TA(1,10) a TA(15,10)
 update TA set a=15, b=10 where a=1 and b=10
Modifica TB(100,NULL) a TB(150,NULL)
update TB set c=150 where c=100
¿Queda algún valor de clave ajena distinto de NULL?
d y f.

T07.014- Vuelve a crear las tablas:
TA (a int, b int) CP(a)
TB (c int, d int) CP(c) CAj(d) >> TA (borrados: propagar)
TC (e int, f int) CP(f) CAj(f) >> TB (modificaciones: anular)
drop table TC
drop table TB
drop table TA
create table TA(a int, b int, primary key (a)) engine=innodb
create table TB(c int, d int, primary key (c), foreign key (d) references TA(a) on delete cascade) engine=innodb
create table TC(e int, f int, primary key (e) , foreign key (f) references TB(c) on update set null) engine=innodb 
TA(1,10) insert into TA value ('1', '10')
TA(2,20) insert into TA value ('2', '20')
TA(3,30) insert into TA value ('3', '30')
TB(100,1) insert into TB value ('100', '1')
TB(200,1) insert into TB value ('200', '1')
TB(300,2) insert into TB value ('300', '2')
TB(400,NULL) insert into TB value ('400',NULL)
TC(1000,100) insert into TC value ('1000', ‘100’)
TC(2000,100) insert into TC value ('2000', ‘100’)
TC(3000,NULL) insert into TC value ('3000', NULL)

T07.015- Borra TA(1,10): ¿qué ha pasado? No se borra porque a es una clave ajena de la tabla TB y tiene elementos que están relacionados con TA(1,10).
delete from TA where a=1 and b=10

T07.016- Borra TA(2,20): ¿qué ha pasado? No se borra porque a es una clave ajena de la tabla TB y tiene elementos que están relacionados con TA(2,20)
delete from TA where a=2 and b=20

T07.017- Modifica TA(1,10) a TA(17,10): ¿qué ha pasado? No se modifica porque a es una clave ajena de la que depende b, y b no tiene asignado que pasaría si borrara algo de lo que depende, por tanto, rechaza.
update TA set a=17, b=10 where a=1 and b=10

T07.018- Vuelve a intentar borrar TA(1,10): ¿por qué ahora sí?
delete from TA where a=1 and b=10

No hay comentarios:

Publicar un comentario