Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Relaciones (https://www.clubdelphi.com/foros/showthread.php?t=19531)

istradlin 17-03-2005 13:41:04

Relaciones
 
Estoy haciendo una aplicacion mas que nada para probar programar en delphi y meterme en el mundillo, pues bien, la aplicacion guarda los datos en una BD interbase.

Tengo tres tablas: CLIENTES, APARATO, FACTURAS.

De esta forma la factura estara asociada a un unico cliente y a un unico aparato.

Estube buscando en foros y tutoriales y lo unico que veo son consultas SQL con clausulas para relacionarlos. El problema es que si yo esa consulta la asocio p.ej. a un DBTable en delphi, me deja consultar los datos pero no insertar, modificar etc.

Algo he leido sobre claves foraneas para hacer en la BD pero no tengo muy claro cual es la sentencia para hacer tal cosa.

Como podeis ver estoy algo perdido, si alguien se aburre podia contestarme.

Gracias y un saludo a todos.

Lepe 18-03-2005 11:46:09

Tal como lo implementas, Un cliente solo puede comprar un aparato, y nada más.

Lo que necesitas es una relación Maestro-Detalle. busca por los foros, Se ha hablado mucho.

En principio necesitas otra tabla más, y no digo más porque me aburro :p :p

Saludos

roman 18-03-2005 16:28:20

Cita:

Empezado por Lepe
Tal como lo implementas, Un cliente solo puede comprar un aparato, y nada más.

No. Me parece que en una factura sólo puede aparecer la compra de un aparato por cliente, que no es lo mismo. Puede haber varias facturas en la tabla relacionadas al mismo cliente. Dicho de otra forma CLIENTE y APARATO tienen una relación muchos a muchos expresada en la tabla facturas:

cliente = (id, nombre, email, telefono)
aparato = (id, marca, modelo, descripcion)

factura = (id, cliente_id, factura_id, fecha)

Creo que a lo que se refiere istradlin es a que tiene una consulta del estilo:

Código SQL [-]
select
  cliente.nombre, aparato.marca, aparato.modelo, factura.fecha
from
  factura, cliente, aparato
where
  factura.cliente_id = cliente.id and
  factura.aparato_id = aparato.id

Esta consulta no es editable por involucrar más de una tabla. En el BDE existe la componente TUpdateSQL para solventar estos casos especificando en sus propiedades InsertSQL, ModifySQL y DeleteSQL las sentencias INSERT, UPDATE y DELETE necesarias para llevar a cabo las modificaciones. También existe la componente similar TIBUpdateSQL para las componentes IB y de hecho casi cualquier juego de componentes para acceder a bases de datos tendrá de una u otra forma esta facilidad.

// Saludos


La franja horaria es GMT +2. Ahora son las 18:22:06.

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