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 16-06-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
problema al crear clave foranea

Buenas, aqui estoy de nuevo, molestando un poco. Estoy enredando un poco mas con el firebird gracias a vosotros .
Problema para crear una tabla no tengo, pero quiero al crear una tabla nueva meterle clave foranea porque, tal y como estoy viendo, funciona igual que la primary key, es decir, se puede buscar todos los registros que cumplan la condicion.
Imagino que esto se puede hacer con un query que filtre, pero supongo que la foreign key valdra para algo a la hora de no tener que recorrer todo la tabla buscando.
Corregidme si me equivoco.
Estuve dando vueltas por el foro buscando el tema de foranea pero lo que he visto no me ha aclarado las ideas.

gracias por la comprension

editado:
Estoy haciendo esto pero no me agarra
Código Delphi [-]
alter table historial,
add constraint nucliente,
foreign key(ncliente);
nucliente es el nombre que le estoy dando al index y ncliente es un campo de la tabla historial que quiero usar como foraneo.

Última edición por anubis fecha: 16-06-2008 a las 17:55:56.
Responder Con Cita
  #2  
Antiguo 16-06-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

Saludos.

A manera de consejo busca referencia sobre la normalización de BD para que entiendas mejor el concepto de clave foránea.

La clave foránea consiste básicamente en mantener una integridad de los datos.

Un ejemplo:

Código SQL [-]
CREATE TABLE TIPO_CLIENTE(
TIPO_ID INTEGER NOT NULL,
DESCRIPCION VARCHAR(50)
);

Digamos que TIPO_ID es clave primaria de la tabla TIPO_CLIENTE.

Código SQL [-]
CREATE TABLE CLIENTE(
CLIENTE_ID INTEGER NOT NULL,
TIPO_ID INTEGER NOT NULL,
NOMBRE VARCHAR(50)
);

Digamos que CLIENTE_ID es tu clave primaria de CLIENTE, si te fijas ahora tengo el campo TIPO_CLIENTE y es NOT NULL (condición para ser clave foránea) igual como esta en la tabla TIPO_CLIENTE. Ahora sí puedes definir la clave foránea en la tabla CLIENTE utilizando el campo TIPO_ID de la misma con la tabla TIPO_CLIENTE en su campo TIPO_ID (que es clave primaria, otro requisito).

Con esto estas poniendo una restricción de que los valores del campo TIPO_ID en la tabla CLIENTE deben de existir primero en la tabla TIPO_CLIENTE.

Espero haberte ayudado.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #3  
Antiguo 28-06-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
Hola

Estoy teniendo un grave problema al no poder definir la clave foranea de una tabla. Ésta tiene dos campos que conforman un índice y apuntan a otra tabla que tiene los mismos dos campos de clave primaria....

He tenido en cuenta todo lo aquí explicado pero me encuentro con el siguiente error:

http://img410.imageshack.us/img410/130/ibnh6.jpg


ayuda por favor?
Responder Con Cita
  #4  
Antiguo 28-06-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
ya lo solucione hice lo siguiente:

creé una nueva tabla con los mismos campos, y ahi no hubo problema en la creación de la clave foránea, me queda la duda de porp qué antes no funcionaba.... siempre me pasan cosas como estas
Responder Con Cita
  #5  
Antiguo 28-06-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
ah, cabe destacar que tanto en la antigua como en la nueva tabla no había registros.... en la tabla "apuntada" si los había... no es que había registros que no coincidan.... en fin
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
Saber a quien se refiere una clave foránea Cecil Conexión con bases de datos 2 27-09-2007 19:17:50
Filrtar tabla por llave foranea?? Gaim2205 Conexión con bases de datos 3 14-09-2007 21:42:34
Crear / Generar una clave Alexander Varios 2 11-05-2005 18:37:07
crear una clave a nivel de HKEY_LOCAL_MACHINE albvalsol API de Windows 3 18-09-2004 23:10:26
Problema con referencia foranea ! erickperez6 Firebird e Interbase 10 12-05-2003 17:52:21


La franja horaria es GMT +2. Ahora son las 19:19:27.


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