Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2003
ElSanto24 ElSanto24 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Elche
Posts: 14
Poder: 0
ElSanto24 Va por buen camino
interbase:¿como crear un master-detail-detail?

Hola amigos:

Soy un programador en delphi 7 e interbase 7, con una duda
de la que no sale de su asombro, ahí va, espero que me puedan ayudar:

Tengo una tabla de clientes (omitiré columnas )

Table clientes( codcli primary key)

Tengo otra tabla que es pedidos

Table pedidos (idpedido, codcli)

Idpedido y codcli primary key
Codcli foreign key (codcli) references clientes
(codcli) on update cascade on delete cascade //HASTA AQUÍ, INTERBASE LO
ACEPTA

Table linped (idpedido,idllinped)

Idpedido,idlinped primary key
Idpedido foreign key (idpedido) references
pedidos (idpedido) on update cascade on delete cascade //DA UN ERROR DE
METADATA


CONCRETAMENTE:

UNSUCCESFUL METADATA UPDATE
Couldt not find UNIQUE INDEX with expecified
columns on line X

Despues de lo que me esta ocurriendo empiezo a pensar que
interbase no permite las restricciones de integridad en cascada (varias
foreign key en cascada)
O eso, o no estoy escribiendo la foreign key correctamente.

Se que existe la solucion de crear triggers para simular la
restricción de integridad, pero, ¿significa esto que interbase tiene la
limitación que os comento?

Por favor, seguro que alguien ha tenido que hacer algo parecido
(relacion clientes-pedido-lineas de pedido), me podeis proponer
soluciones que no sean el trigger?

Gracias de antemano
__________________
El camino para llegar al conocimiento de las cosas pasa por el aprendizaje humilde de lo que nos rodea
Responder Con Cita
  #2  
Antiguo 22-10-2003
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Hola campeones del foro.

Cordial saludo para ElSanto24

Bueno la definicion de llave foranea (asi de afan) es: atributo o conjunto de atributos en una tabla que corresponde(n) a valor(res) de atributo(s) en otra tabla donde ese(esos) atributo(s) corresponde a la llave primaria.

Resulta que tu definiste la llave primaria de pedidos compuesta por el numero del pedido mas el codigo del cliente (me parece de manera respetusa que con el numero del pedido es suficiente).

Para que linea de pedido pueda relacionarse con pedido debes adicionar un atributo para el codigo del cliente en la tabla linea de pedido.

Si lo tuyo es un error de conceptos cambia la llave primaria de la tabla pedidos para que solo contenga como identificador el atributo numero del pedido y te funcionará la definicion de llave foranea que presentaste.

Espero haber colaborado.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #3  
Antiguo 22-10-2003
ElSanto24 ElSanto24 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Elche
Posts: 14
Poder: 0
ElSanto24 Va por buen camino
Gracias!!!

Tu post me ha hecho replantearme mi diseño, y he llegado a la conclusion que no me hace falta el codigo de cliente para el pedido, ya que con eso pretendia que, como en otras tablas que tengo, apareciera los pedidos de un cliente concreto, pero aqui no tiene sentido, pues puede ser cualquier cliente y no lo se a priori. conclusion: quitaré de la primary key de pedidos a codcli y engancharé linped como un master-detail normal


Gracias por tu sugerencia.

Un abrazo!!!!!
__________________
El camino para llegar al conocimiento de las cosas pasa por el aprendizaje humilde de lo que nos rodea
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 03:29:55.


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