PDA

Ver la Versión Completa : Relaciones


istradlin
17-03-2005, 13:41:04
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
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:


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