Bases de Datos > SQL Server
2 FK a la misma tabla? se puede
.net:
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?
LuisYactayo:
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 ---ALTER TABLE FACTURA ADD CONSTRAINT FK_FACTURA_CLIENTESFOREIGN KEY (IDCLI) REFERENCESCLIENTES(IDCLI)ON DELETE SET NULLON UPDATE CASCADE
Saludos... :yes:
Fraggle:
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:
--- Cita de: .net en Martes 30 de Agosto de 2011, 16:27 ---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?
--- Fin de la cita ---
--- Cita de: Fraggle en Viernes 9 de Septiembre de 2011, 02:48 ---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))
--- Fin de la cita ---
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
aaiello:
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
Navegación
[#] Página Siguiente
Ir a la versión completa