Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2015
Lechu Lechu is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
Lechu Va por buen camino
Relación entre objetos y bases de datos relacionales

Hola. Muy buen día a todos.

Quiero hacer una consulta que quizás resulte algo compleja y difícil de contestar por este medio. Pero bueno, al menos, es posible que me puedan orientar un poco. Les cuento:

Mi duda, básicamente, radica en lo siguiente: ¿cuál es la forma "óptima" o más adecuada de usar la programación orientada a objetos con una base de datos relacional como SQL Server?

Sucede lo siguiente: estoy casi a punto de terminar mis estudios superiores y, para mis trabajos, siempre usé la programación estructurada con bases de datos hechas en SQL Server. Hasta ahí, ningún problema. El tema surge cuando tengo que hacer un trabajo para la materia POO (programación orientada a objetos).

Voy a poner un ejemplo de mi duda/problema:

Tengo dos clases asociadas. Una es TProducto y la otra es TProveedor. Todo producto tiene un único proveedor asociado. Supongamos que estas son mis clases (todo esto es un ejemplo):

Código Delphi [-]
TProveedor = Class
Private
  ID: Integer;
  Descripcion: String[50];
Public
  Constructor CrearProveedor();
  Procedure EstablecerID(I: Integer);
  Procedure EstablecerDescripcion(D: String);
  Function ObtenerID(): Integer;
  Function ObtenerDescripcion(): String;
End;

TProducto = Class
Private
  ID: Integer;
  Descripcion: String[50];
  Proveedor: TProveedor;
Public
  Constructor CrearProducto();
  Procedure EstablecerID(I: Integer);
  Procedure EstablecerDescripcion(D: String);
  Procedure EstablecerProveedor(P: TProveedor);
  Function ObtenerID(): Integer;
  Function ObtenerDescripcion(): String;
  Function ObtenerProveedor(): TProveedor;
End;

Ahora bien. Durante mis estudios, se me enseñó a guardar todo esto en un arreglo (clase TArreglo con todos los métodos necesarios de librería operacional para poder llevar a cabo las operaciones básicas). Acá dejo la clase TArreglo para que se den una idea.

Código Delphi [-]
Const

Maximo = 1000;

Type

TIndice = 1..Maximo;
TPosicion = 0..Maximo;
TElemento = TProducto;

TArreglo = Class
Private
  Conjunto: Array[TIndice] of TElemento;
  Ultimo: TPosicion;
Public
  Constructor CrearEstructuraVacia();
  Procedure Insertar(Elemento: TElemento);
  Procedure Eliminar(Posicion: TIndice);
  Function Buscar(X: TClave): TPosicion;
  Function VectorLleno: Boolean;
  Function VectorVacio: Boolean;
  Function ObtenerUltimo: TPosicion;
  Function ObtenerElemento(Posicion: TPosicion): TElemento;
End;

El problema de esto es que todo se almacenaba temporalmente en memoria, por lo que, al salir del programa, se perdían todos los datos.
Ahora, después de tanta introducción, voy al punto: si yo hago una base de datos en SQL Server estaría integrada por dos tablas, por supuesto: Productos y Proveedores. Ambas serían algo así:

Productos = (Prod_ID, Prod_Descripcion, Prod_ProveedorID)
Proveedores = (Prov_ID, Prov_Descripcion)

El campo Prod_ProveedorID es una clave foránea que apunta hacia la clave Prov_ID de la tabla Proveedores. Bien. El problema es que yo, viendo desde el punto de vista de mis objetos, una instancia de la clase PRODUCTO no tiene un simple entero que apunta a otra instancia de PROVEEDORES sino que el producto tiene "dentro" una instancia proveedor. A lo que voy: no son dos cosas "separadas" sino que son una está dentro de la otra (producto tiene un atributo de tipo TProveedor). Eso, trabajándolo en memoria con el arreglo se podía hacer sin problemas; pero, con la base de datos, supongo que debo dar un paso extra.
¿Cuál sería la mejor forma de manejar esto?

Gracias de antemano y espero haberme explicado bien.

Última edición por nlsgarcia fecha: 16-06-2015 a las 22:17:08. Razón: Sintaxis Delphi
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como sincronizar datos entre bases datos cliente a servidor (asincronicamente) Efren2006 OOP 6 29-03-2013 11:36:11
Insertar datos entre bases de datos diferentes franjero Firebird e Interbase 1 19-06-2012 08:32:42
Operaciones entre bases de datos subzero MS SQL Server 3 17-01-2008 21:55:57
Enlaces entre Bases de Datos!! Chik_Electronik C++ Builder 3 01-06-2006 05:00:37
Bases de datos orientadas a objetos AlbertoC Conexión con bases de datos 0 19-05-2005 14:44:18


La franja horaria es GMT +2. Ahora son las 12:39:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi