Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Campo puede ser clave foranea de dos tabla

buenos dias les cuento una duda que me surgio jeje pero no se si se pueda hacer, es posible que un campo de una tabla sea clave foranea pero de dos tablas ejemplo:

tabla 1
id primary key
clave foreign key

tabla 2
clave2 primary key ....

tabla 3
clave3 primary key .........


lo que quiero hacer es que clave de la tabla1 sea una clave foranea tanto de clave2 tabla2 y clave3 tabla3 alguna ves me parece haber ledio que si se puede pero no esto seguro la duda es que al hacer un insert no tronara la integridad referencial saludos.
Responder Con Cita
  #2  
Antiguo 26-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No entiendo la lógica de esto!.. normalmente cuando se normaliza una base de datos, un campo hace referencia a una tabla y si necesitas información de otra tabla, entonces debe estar en otro campo.
Por otro lado, dependiendo del motor, puedes usar triggers para validar cosas "raras", haciendo que estos produzcan un error si al insertar o modificar el valor del campo en cuestión, este no se encuentra en ninguna de las dos tablas.

¿Porque no nos cuentas brevemente un poquito de tu modelo de datos y porque llegas a esta necesidad?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 26-01-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias por la respuesta a mi tambien se me hace bastante raro pero debido a los requerimientos queme hicieron pues no pienso cambiar toda la estructura por eso busco una solucion limpia y sencilla, esta base de datos pertenece a un resort ya saben de esos que rentan casas, originalmente solo los codigos de servicio se posteaban en la tabla que me presenta los problemas y los ratecodes y paquetes de noches estaban en otra tabla, ahora quieren que tambien los cargos de las noches aparezcan en la tabla de posteos es por eso la pregunta tabla1 es donde caen los cargos de la reserva tabla2 donde guardo los servicios que ofrecen y tabla3 ratecodes y paquetes ahora homologe los campos para que los dos caigan en tabla1 en el mismo campo, las soluciones que veo es quitar la integridad referencial de ese campo que no lo voy hacer por que los querys a la hora de querer borrar algo que ya esta posteado no lo permite por los eventos, laa otra que se me ocurre que todo se capture en la misma tabla y con banderas separar que tipo de servicio es ratecode o servicios que ofrecen y la tercera es insertarlso yo mismo a la hora de que den de alta un ratecode hacer un insert a la tabla y asi no perder la integridad referencial cual creen que seria la mejor solucion ???
Responder Con Cita
  #4  
Antiguo 26-01-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola richy08, si es llave primaria (un valor que no se repite), puedes tenerlo como llave foranea en las tablas que quieras, pero así como lo tienes, clave es otra llave foranea de otra tabla, por lo que puede repetirse dicho valor, si es así, si tendrías problemas. De la forma en que yo lo veo, es que tienes una relación de muchos a muchos, entre tabla1 y tabla2, lo mismo entre tabla1 y tabla3, para ello debes crearte una tabla intermedia con llaves foraneas de Tabla1(id) y Tabla2(clave2) y clave...

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 26-01-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias caro por la respuesta pero opte por hacer tabla2 y tabla3 una misma tabla, asies que revolvere records de servicios y room rates los cuales los filtrare en las subsecuentes pantallas con banderas indicando que tipo de servicio es, esto me costara revisar la aplicacion minuciosamente pero lo vale ya que no quiero problemas cuando el sistema este corriendo en sitio gracias a los dos
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
Cómo volver los registros a cero de una tabla con autoincremento como campo clave? cesar_gta86 Varios 1 25-02-2009 06:54:08
problema al crear clave foranea anubis Firebird e Interbase 4 28-06-2008 16:24:49
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
error, el índice o la clave principal no puede tener un valor null locorez Varios 3 15-12-2006 04:40:42


La franja horaria es GMT +2. Ahora son las 07:20:49.


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