clases entidades y base de datos

26/04/2005 - 23:44 por andy O | Informe spam
Hola a todos.

Tengo dos clases entidades, una es continentes y otra paises(Por tomar un
ejemplo)

La relacion es de uno a muchos. En la OOP, la relacion se modelaria como por
ejemplo con Colecciones de paises en la clase continentes y con un objeto de
la clase continente en la clase paises..

Es decir en mi capa de acceso a datos en uno de los metodos , por ejemplo
getDepartamentos devuelve un ArrayList con los objetos departamentos. En
cada iteracion del SqlDataReader creo un nuevo objeto departamento lleno los
campos.
y luego lo añado al arraylist
¿Qué sucede con el campo que es del tipo continente? ¿Cómo lo lleno?
Es correcto que llame a otro método de acceso a datos por ejemplo
getContinente(int id) el cual me devuelve una ocurrencia de los continentes.
y luego lo coloco en el campo continente.

En el caso de la relacción inversa ¿Cómo implementarla?
Espero que me ayuden
Gracias.
 

Leer las respuestas

#1 Alfredo Novoa
27/04/2005 - 00:30 | Informe spam
On Tue, 26 Apr 2005 14:44:01 -0700, andy O
wrote:

Hola

Tengo dos clases entidades, una es continentes y otra paises(Por tomar un
ejemplo)



Normalmente se llaman tipos de entidad.

La relacion es de uno a muchos. En la OOP, la relacion se modelaria como por
ejemplo con Colecciones de paises en la clase continentes y con un objeto de
la clase continente en la clase paises..



Lo que intentas modelar es una base de datos y la OOP no tiene nada
que ver con el diseño de bases de datos. A lo que tu explicas se le
llama modelo de red y los modelos de red están obsoletos desde hace
décadas.

Es decir en mi capa de acceso a datos en uno de los metodos , por ejemplo
getDepartamentos devuelve un ArrayList con los objetos departamentos. En
cada iteracion del SqlDataReader creo un nuevo objeto departamento lleno los
campos.



Parece que estás montando un procesador de archivos encima del SGBD.

y luego lo añado al arraylist
¿Qué sucede con el campo que es del tipo continente? ¿Cómo lo lleno?
Es correcto que llame a otro método de acceso a datos por ejemplo
getContinente(int id) el cual me devuelve una ocurrencia de los continentes.
y luego lo coloco en el campo continente.



No lo es. Deberías modelar los tipos de entidad como tablas de una
base de datos y utilizar SQL para gestionar las tablas o dejar que
ADO.NET cree las sentencias SQL por ti.

En el caso de la relacción inversa ¿Cómo implementarla?



En SQL es trivial.

create table Continentes (Continente VarChar(...) primary key);
create table Paises (Pais VarChar(...) primary key, Continente
Varchar(...) foreign key references Continentes (Continente) on update
cascade on delete cascade);

Con ADO.NET puedes crear un "DataSet" que corresponda con esta base de
datos y manipular el dataset desde tu aplicación de forma que los
cambios se transmitan al SGBD automáticamente. Por ejemplo podrías
enlazar los dos "datatables" a un par de grids creando una relación
"maestro-detalle".

Para crear un formulario que permita gestionar esas dos tablas no
necesitas teclear una sola línea de código.


Saludos

Preguntas similares