Composición a Nivel de Datos
Hablando de la composición, Martin Fowler en su libro UML gota a gota, expone lo siguiente: "... el objeto parte puede pertenecer a un todo único; es más, se espera, por lo general, que las partes vivan y mueran con el todo. Cualquier borrado del todo se extiende en cascada a las partes". Pero en la práctica, ¿Cómo logramos este borrado en cascada?. Si estuviéramos hablando de información almacenada en una base de datos, ¿Borramos los registros en la Tabla Hijo y luego en Padre? ¿Existe alguna otra manera que se acerque más a lo expresado por Fowler?.
Vamos a tomar un ejemplo simple.
- Primero creamos la tabla Padre.
En Oracle:
create table Padre (
id_padre number primary key,
name_padre varchar2(10)
)
En PostgreSQL:
create table Padre (
id_padre numeric primary key,
nombre_padre VARCHAR(10)
);
Luego creamos la tabla Hijo:
En Oracle:
create table Hijo (
id number primary key,
name varchar(10),
id_padre number references Padre (id_padre) on delete cascade
)
En PostgreSQL:
create table Hijo (
id_hijo numeric primary key,
nombre_hijo varchar(10),
id_padre numeric references Padre(id_padre) on delete cascade
)
Ya estamos listos. Si insertamos datos en ambas tablas y luego borramos un registro de Padre, por ejemplo,
delete from Padre
where id_padre = 1;
where id_padre = 1;
automáticamente se borrarán todos los registros Hijo asociados a ese Padre.
Espero que les sea útil.
Etiquetas: Base de Datos, Oracle, SQL
0 Comentarios:
Publicar un comentario
<< Home