• Viernes 15 de Noviembre de 2024, 19:26

Autor Tema:  2 FK a la misma tabla? se puede  (Leído 34618 veces)

.net

  • Miembro MUY activo
  • ***
  • Mensajes: 181
  • Nacionalidad: mx
    • Ver Perfil
2 FK a la misma tabla? se puede
« en: Martes 30 de Agosto de 2011, 16:27 »
0
Alguien sabe como puedo hacer 2 fk a la misma tabla??

Ayuda

Espero su respuesta
Por EJ.

tbl1                              tbl2
-------                   -------------
Id  < -----------|            Id
Empresa            |--> EmpresaM  fk
                       |--> EmpresaP   fk

y que ambas llaves tengan la regla de eliminacion -> Establecer en null
y la regla de actualizacion en cascada - > Cascada

se puede?
« última modificación: Martes 30 de Agosto de 2011, 16:36 por .net »
La lógica lleva a más lógica

Apoyo a un mundo OPEN SOURCE!!!

Eso si es el paraíso

LuisYactayo

  • Miembro activo
  • **
  • Mensajes: 36
  • Nacionalidad: pe
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #1 en: Jueves 1 de Septiembre de 2011, 22:45 »
0
Hola, :jumpie:
 dime a q te refieres cuando dices 2 FK a las misma tabla?
--------------
 Recuerda:  la clave foránea es clave principal en otra tabla
 Ejemplo:
 Dos tablas: CLIENTE(IDCLI, NomCli, Direccion, ...) y FACTURA(Numero,IDCLI, fecha, total,...)
  => IDCLI viene a ser clave foránea en la tabla FACTURA
  También es clave principal en la tabla CLIENTE.
--------------
Sorry, si ya lo sabias y fui muy detallado
-------------
 En todo caso puedes comentar cual es el caso q tienes y ver como podemos armar y relacionar esas tablas.

De todas maneras puedes insertar la clave foránea así:
Usando el ejemplo anterior:

 
Código: SQL
  1. ALTER TABLE FACTURA ADD CONSTRAINT FK_FACTURA_CLIENTES
  2. FOREIGN KEY (IDCLI) REFERENCES
  3. CLIENTES(IDCLI)
  4. ON DELETE SET NULL
  5. ON UPDATE CASCADE
  6.  
  7.  
   


Saludos...  :yes:
     
 
 
   
   

Fraggle

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #2 en: Viernes 9 de Septiembre de 2011, 02:48 »
0
Si te refieres a que si una tabla puede tener una relación doble con otra... sí, es posible.
En tu caso si EmpresaM es pongamos la empresa donde trabaja tu madre y EmpresaP, donde trabaja tu padre. Es posible relacionarlas con la tabla Empresa sin mayor problemas. Te doy el Script:

create table tbl1
(id int primary key,
empresa varchar(30))
create table tbl2
(id int primary key,
empresaM int,
empresaP int,
constraint fk5 foreign key (empresaM) references tbl1 (id),
constraint fk6 foreign key (empresaP) references tbl1 (id))

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #3 en: Lunes 12 de Septiembre de 2011, 01:24 »
0
Alguien sabe como puedo hacer 2 fk a la misma tabla??

Ayuda

Espero su respuesta
Por EJ.

tbl1                              tbl2
-------                   -------------
Id  < -----------|            Id
Empresa            |--> EmpresaM  fk
                       |--> EmpresaP   fk

y que ambas llaves tengan la regla de eliminacion -> Establecer en null
y la regla de actualizacion en cascada - > Cascada

se puede?
Si te refieres a que si una tabla puede tener una relación doble con otra... sí, es posible.
En tu caso si EmpresaM es pongamos la empresa donde trabaja tu madre y EmpresaP, donde trabaja tu padre. Es posible relacionarlas con la tabla Empresa sin mayor problemas. Te doy el Script:

create table tbl1
(id int primary key,
empresa varchar(30))

create table tbl2

(id int primary key,
empresaM int,
empresaP int,
constraint fk5 foreign key (empresaM) references tbl1 (id),
constraint fk6 foreign key (empresaP) references tbl1 (id))

Lo que intenta (segun entiendo) es que empresaP dependa de empresaM, esto segun la normalizacion es incorrecto, se llama Dependencia funcional y trae muchos errores de actualizacion sobre todo en los casos donde se accesa a datos desde diferentes medios

Todos los elementos de cada entidad deben de depender unicamente de la llave primaria. no estoy seguro si eso sea posible desde sql server, o incluso usando un trigger pudieras lograrlo tal vez, no tengo ahora como probarlo

Saludos
 
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

aaiello

  • Nuevo Miembro
  • *
  • Mensajes: 11
  • Nacionalidad: 00
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #4 en: Jueves 15 de Septiembre de 2011, 16:04 »
0
Puede pasar, no es comun pero se puede. Un ejemplo muy habitual es tener alguna tabla de algun objeto y que tenga en sus atributos "creador y ultimo que modifico" y ambos hacen referencia a la tabla usuario.

-
Lic. Andrés M. Aiello
DBA MSSQL - Oracle
http://aiellodba.blogspot.com/
@AndresAiello
-
Lic. Andrés M. Aiello
DBA MSSQL - Oracle
http://aiellodba.blogspot.com/

.net

  • Miembro MUY activo
  • ***
  • Mensajes: 181
  • Nacionalidad: mx
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #5 en: Jueves 15 de Septiembre de 2011, 16:52 »
0
Si se puede tener 2 fk a una misma tabla, lo que marca error son las reglas de eliminaciony de actualizacion
ya hise la prueba
La lógica lleva a más lógica

Apoyo a un mundo OPEN SOURCE!!!

Eso si es el paraíso

aaiello

  • Nuevo Miembro
  • *
  • Mensajes: 11
  • Nacionalidad: 00
    • Ver Perfil
Re:2 FK a la misma tabla? se puede
« Respuesta #6 en: Jueves 22 de Septiembre de 2011, 16:00 »
0
Fijate, igualmente no es una buena practica el cascade, mas allá de que es comodo.
-
Lic. Andrés M. Aiello
DBA MSSQL - Oracle
http://aiellodba.blogspot.com/