MySQL - varias foreign keys en un mismo campo de una tabla

 
Vista:

varias foreign keys en un mismo campo de una tabla

Publicado por ENARA (12 intervenciones) el 09/06/2007 13:15:55
Buenas,

Tengo una tabla agendaTelefonos y estas 3 tablas:
Personal
Clientes
Proveedores

El campo identificativo de agendaTelefonos que referencia al dni de personal pero también me gustaría que fuera para las otras 2 tablas. s posible esto?:

alter table agendaTelefonos add foreign key (id) references clientes (id)on delete cascade on update cascade;

alter table agendaTelefonos add foreign key (id) references proveedores (nif) on delete cascade on update cascade;

ejecutando estas dos líneas, al añadir un telefono de cliente...
a) mirara si está en las 3 tablas si está en alguno de ellas me deja insertar el registo en agendaTelefonos
b) si no está en las 3 tablas no me deja insertarlo.

¿Qué será lo que pasará? Yo lo que quiero es que suceda la opción a).

Para que se dé el caso a), habría que no indicar ninguna tabla ¿?, habría que indicar las 3 tablas seguidas ¿? ...

Agradecería que me indicaran cual sería la línea que debería escribir para poder insertar un telefono en esa tabla solo si existe un personal o un cliente o un proveedor con el identificativo que se facilita en la sentencia INSERT.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:varias foreign keys en un mismo campo de una ta

Publicado por R3DRUM (1 intervención) el 14/06/2007 13:03:51
OJUUUUUUUUUUUU...

Ante todo HOLA ;-)

Me llevas una rato intentando comprender lo que quieres hacer, y no lo tengo muy claro.

Que quieres hacer:

¿De que se trata de SQL, o de Interfaz?

Bueno, yo lo he tomado como si estuvieras trabajando con un interfaz :

¿Al campo de la tabla 'agentaTelefonos' le insertes el valor de los id de 'Personal', 'Proveedores' y 'Clientes'?

Si quieres hacer eso, yo CREO que NO es posible.
No se pueden hacer es esos 'Alter Table' que has descrito, porque imaginate en el campo (id) de 'agendaTelefonos':
Primero se le inserta el valor del (id) de Personal, pero despues lo "machacas" (lo borras) al insertarle el (id) de Proveedores que será el que quedará en la tabla.

Lo que deberías de hacer es en tres campos, cada uno con su nombre diferente, ejemplo:

Id_Personal....
Id_Cliente...
Id_Proveedor...

y cada uno de ellos con referencia en su tabla correspondiente.


Ahora,
¿Que campo es el identificativo en 'agendaTelefonos'?
¿Solo el del Personal, ó el de las 3 tablas?
Si quieres el de las 3 tablas pues haces la como campos indetificativos de los 3 campos que te he escrito.

Luego con lo referente a que te deje insertar el teléfono.
Si los 3 campos son identificativos, NO te hace falta comprobar si tienes o no, porque como vienen de esas tablas, si están, están, sino no saldrían el la lista.

Si el identificativo fuera solo el campo del Personal, casi que tampoco te hace falta comprobar, porque saldrá en la lista que existe en la tabla Personal.


Suerte y espero que te ayude.

Asta luego :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias foreign keys en un mismo campo de una ta

Publicado por enara (12 intervenciones) el 14/06/2007 13:31:39
Buenas,
Es de lenguaje SQL.
Me voy a volver a explicar pero gracias por contestarme...

Imaginate que tienes 3 tablas con un campo id de mismo tamaño y tipo (asik eso no dara problemas) y que no estan los datos de esas 3 tablas juntos a pesar de ser algo similar, porque tienen diferentes campos o atributos.

Luego hay otra tabla que tiene algo en común de los 3.

t1de3 (id, ...)
t2de3 (id,...)
t3de3 (id,...)
tel (id,...)

Por ejemplo el id podría ser un DNI.

Quiero poder insertar en tel un registro con el DNI1 que acabo de insertar en t1de3, DNI2 que está en t2de3 y DNI3 que está en t3de3.

si el DNI1 se actualizara en t1de3 me gustaría que automáticamente se actualizara en tel. Y también si el DNI2 se eliminara en t2de3, que desapareciera de tel.

Espero haberme explico con claridad con este ejemplo.
Muchas gracias por interesarte.
Saludos,
Enara
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar