Club Delphi  
    Paypal   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 02-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 22
NPIdea Va por buen camino
Problemas con Relaciones de tablas en Interbase.

Hola a todos.

He adquirido recientemente Interbase 2007 server y estoy empezando a diseñar una base de datos y sobre todo a ponerme al día.

Estoy intentando hacer una relación con dos tablas mediante IBExpert Personal y me da error todo el rato.

Tengo:

Tabla1 con una clave primaria ID (valores unicos)
Tabla2 con ID (permite duplicados para relacionar con Tabla1, no tengo clave principal en esta tabla)

Entonces en Foreign key de Tabla1 hago nueva Foreing Key asociando el PK_Tabla1 del campo ID a la Tabla2 (CF) campo ID y poniendo las opciones de modificación y borrado en CASCADE.

Pues no hay forma, me está dando todo el rato error y ya no sé que hacer.

Los dos campos los he asignado a un mismo dominio para que no me diesen problemas y no hay forma.

¿Alguna pista al respecto?

Gracias

Código:
alter table INSTALACIONES
add constraint FK_INSTALACIONES_1
foreign key (IDI)
references ELEMENTOS(IDI)
on delete CASCADE
on update CASCADE
can't format message 13:393 -- message file c:\Program Files\Borland\InterBase/interbase.msg not found.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.
Responder Con Cita
  #2  
Antiguo 02-06-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para empezar, la FK debe ser de Tabla2 a Tabla1...
Código SQL [-]
ALTER TABLE TABLA2 
ADD CONTRAINT FK_ID FOIREIGN KEY (ID) 
REFERENCES TABLA1 (ID)
ON DELETE CASCADE
ON UPDATE CASCADE

El error te está diciendo que no puede encontrar una PK (o índice unívoco) para el/los campos que quieres relacionar en la tabla contra la que haces la referencia.
Dinos si INSTALACIONES tiene muchos ELEMENTOS o si ELEMENTOS tiene muchas INSTALACIONES...
En el código que pones, parece ser que INSTALACIONES tiene muchos ELEMENTOS. Por lo tanto ELEMENTOS debería tener una PK del campo IDI.

Última edición por duilioisola fecha: 02-06-2008 a las 13:12:58.
Responder Con Cita
  #3  
Antiguo 02-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 22
NPIdea Va por buen camino
Gracias por tu pronta respuesta

Pues Instalaciones tiene registros unicos, osea va a tener por ejemplo unas 1000 instalaciones y la tabla de elementos va a tener varios elementos por cada instalación.


Osea hay una instalación número 1 pero tiene 5 registros en elementos con IDI=1. Lo que quiero es que si borro la instalacion, me borre los elementos asociados.

Soy novato con esto y se nota, jeje.

Repito, muchas gracais
Responder Con Cita
  #4  
Antiguo 02-06-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
hay una instalación número 1 pero tiene 5 registros en elementos con IDI=1
Entonces:
1- Debes crear una PK sobre INSTALACIONES del campo IDI.
2- Debes crear una FK sobre ELEMENTOS que relaciones el campo IDI con el campo IDI de INSTALACIONES. (Justo lo contrario de lo que estás haciendo)

Código SQL [-]
/* Paso 1 */
alter table INSTALACIONES add constraint PK_INSTALACIONES primary key (IDI);

Código SQL [-]
/* Paso 2 */
alter table ELEMENTOS
add constraint FK_INSTALACIONES_1
foreign key (IDI)
references INSTALACIONES (IDI)
on delete CASCADE
on update CASCADE
Responder Con Cita
  #5  
Antiguo 02-06-2008
NPIdea NPIdea is offline
Miembro
 
Registrado: feb 2005
Posts: 121
Poder: 22
NPIdea Va por buen camino
Muchas gracias por darme solución.

Un saludo
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ver relaciones de las tablas ManuelPerez Varios 4 17-03-2008 18:32:12
Como Manejo Las Relaciones Entre Dos Tablas En Ibadmin 3 De Interbase afal3d Firebird e Interbase 2 13-06-2007 19:54:13
Relaciones en tablas .dbf snowlis Conexión con bases de datos 6 15-04-2007 11:00:41
Tablas y Relaciones 2 leodelca23 Tablas planas 4 13-09-2006 23:40:06
Problemas con Tablas y relaciones leodelca23 Tablas planas 5 12-09-2006 02:29:14


La franja horaria es GMT +2. Ahora son las 09:44:15.


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