Problema con claves

05/12/2008 - 16:29 por mooonk | Informe spam
Hola,os comento un problema que tengo y que no se como solucionar

Tengo una tabla , pongamos tabla1 , con un campo numerico que es
clave

Tabla1 -> ID

Tengo otra tabla , pongamos tabla2 , que tiene dos campos numericos
que son clave ID1 , ID 2 y hacen referencia cada uno a un registro de
tabla1 , digamos que definen una relacion entre dos registros de tabla
1



Tabla 1 Tabla2
1 registro1 ID1 ->1, ID2 ->2
2 registro2
3 registro3

Mi problema viene a la hora de que si creo una relacion desde ID1 de
tabla2 a ID de tabla1 y otra desde ID2 de tabla2 a ID de tabla1,

No puedo configurar las relaciones para que si yo borro el registro 1
en tabla 1 me borre automaticamente el registro de tabla2 , puedo
hacerlo con una de las relaciones ,pero no con las dos.Evidentemente
necesito que ese registro de tabla 2 se borre en el momento que se
borre cualquiera de sus dos ids de la tabla principal

No veo como hacerlo , os agradeceria alguna sugerencia..

Saludos

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
05/12/2008 - 17:19 | Informe spam
Implemente un trigger de DELETE en la Tabla1 que haga la tarea de eliminar
las filas necesraias en la Tabla2.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"mooonk" wrote:

Hola,os comento un problema que tengo y que no se como solucionar

Tengo una tabla , pongamos tabla1 , con un campo numerico que es
clave

Tabla1 -> ID

Tengo otra tabla , pongamos tabla2 , que tiene dos campos numericos
que son clave ID1 , ID 2 y hacen referencia cada uno a un registro de
tabla1 , digamos que definen una relacion entre dos registros de tabla
1



Tabla 1 Tabla2
1 registro1 ID1 ->1, ID2 ->2
2 registro2
3 registro3

Mi problema viene a la hora de que si creo una relacion desde ID1 de
tabla2 a ID de tabla1 y otra desde ID2 de tabla2 a ID de tabla1,

No puedo configurar las relaciones para que si yo borro el registro 1
en tabla 1 me borre automaticamente el registro de tabla2 , puedo
hacerlo con una de las relaciones ,pero no con las dos.Evidentemente
necesito que ese registro de tabla 2 se borre en el momento que se
borre cualquiera de sus dos ids de la tabla principal

No veo como hacerlo , os agradeceria alguna sugerencia..

Saludos

Respuesta Responder a este mensaje
#2 Maxi Accotto
05/12/2008 - 17:36 | Informe spam
Hola, en ese tipo de diseño que no lo veo muy bien armado que digamos, me
temo que tendras que via triggers manejar esas regla de integridad


Saludos
Maxi Accotto
Microsoft MVP en SQLServer
SQltotalconsulting
-

"mooonk" escribió en el mensaje de
noticias:
Hola,os comento un problema que tengo y que no se como solucionar

Tengo una tabla , pongamos tabla1 , con un campo numerico que es
clave

Tabla1 -> ID

Tengo otra tabla , pongamos tabla2 , que tiene dos campos numericos
que son clave ID1 , ID 2 y hacen referencia cada uno a un registro de
tabla1 , digamos que definen una relacion entre dos registros de tabla
1



Tabla 1 Tabla2
1 registro1 ID1 ->1, ID2 ->2
2 registro2
3 registro3

Mi problema viene a la hora de que si creo una relacion desde ID1 de
tabla2 a ID de tabla1 y otra desde ID2 de tabla2 a ID de tabla1,

No puedo configurar las relaciones para que si yo borro el registro 1
en tabla 1 me borre automaticamente el registro de tabla2 , puedo
hacerlo con una de las relaciones ,pero no con las dos.Evidentemente
necesito que ese registro de tabla 2 se borre en el momento que se
borre cualquiera de sus dos ids de la tabla principal

No veo como hacerlo , os agradeceria alguna sugerencia..

Saludos
Respuesta Responder a este mensaje
#3 Alejandro Mesa
05/12/2008 - 23:18 | Informe spam
Trata de normarlizar esas tablas.

Si decides seguir con ese disenio, tendras que usar triggers, como Maxi y
Gustavo ya te recomendaron. Ahora, podrias explicar por que tienes dos
relaciones a la misma tabla, solo por curiosidad?

AMB


"mooonk" wrote:

Hola,os comento un problema que tengo y que no se como solucionar

Tengo una tabla , pongamos tabla1 , con un campo numerico que es
clave

Tabla1 -> ID

Tengo otra tabla , pongamos tabla2 , que tiene dos campos numericos
que son clave ID1 , ID 2 y hacen referencia cada uno a un registro de
tabla1 , digamos que definen una relacion entre dos registros de tabla
1



Tabla 1 Tabla2
1 registro1 ID1 ->1, ID2 ->2
2 registro2
3 registro3

Mi problema viene a la hora de que si creo una relacion desde ID1 de
tabla2 a ID de tabla1 y otra desde ID2 de tabla2 a ID de tabla1,

No puedo configurar las relaciones para que si yo borro el registro 1
en tabla 1 me borre automaticamente el registro de tabla2 , puedo
hacerlo con una de las relaciones ,pero no con las dos.Evidentemente
necesito que ese registro de tabla 2 se borre en el momento que se
borre cualquiera de sus dos ids de la tabla principal

No veo como hacerlo , os agradeceria alguna sugerencia..

Saludos

Respuesta Responder a este mensaje
#4 Carlos M. Calvelo
06/12/2008 - 18:51 | Informe spam
Hola Alejandro,

On 5 dec, 23:18, Alejandro Mesa
wrote:
Trata de normarlizar esas tablas.



Primero Maxi dice que no ve el diseño muy bien armado. Ahora tu dices
que normalice esas tablas. Podríais explicar qué problema tiene ese
diseño y qué es lo que hay que normalizar si no sabéis qué es lo que
se está diseñando?



Si decides seguir con ese disenio, tendras que usar triggers, como Maxi y
Gustavo ya te recomendaron. Ahora, podrias explicar por que tienes dos
relaciones a la misma tabla, solo por curiosidad?




El OP dice que Tabla2 representa una relación entre registros en
Tabla1. Pues imagínate que Tabla1 representa a personas y en Tabla2
se registra quien ha invitado a quien a una cerveza, representando
la primera columna a los malhechores y la segunda a sus pobres
víctimas :-).
El diseño que presenta el OP me parece perfecto para modelar
esta situación que me estoy inventando yo ahora.
Y si no... qué tengo que normalizar?

En cuanto a lo de tener que usar tiggers, he ahí otra lindeza de
nuestro maravilloso SQL Server. Le parece lógico a alguien que no
se puedan definir dos claves foráneas en Tabla2 haciendo referencia
a una clave en Tabla1, cada una de ellas con su correspondiente
on delete cascade? O si hace falta también los on update cascade?

Saludos,
Carlos
Respuesta Responder a este mensaje
#5 Alejandro Mesa
07/12/2008 - 00:57 | Informe spam
Carlos,

Mi error, cuando estava escribiendo el mensaje me retracte, pero no elimine
la primera oracion. Por eso la pregunta de porque tiene dos columnas
apuntando a la misma tabla, cosa que pudiera ser comun, pero primero queria
estar seguro sobre lo que se esta modelando.

En el caso de ejemplo que pones, una invitacion se puede considerar un
evento, por lo que podriamos usar algo como:

personas (persona_id, nombre, ...)
eventos (evento_id, nombre, ...)
rol(rol_id, nombre, ...)
personas_eventos(persona_id, evento_id, rol)

Como vez, no hace falta referenciar la misma tabla dos veces, pero claro
esta que despues de las primeras dos cervezas se pudiera cambiar este modelo
:-))

AMB


"Carlos M. Calvelo" wrote:

Hola Alejandro,

On 5 dec, 23:18, Alejandro Mesa
wrote:
> Trata de normarlizar esas tablas.

Primero Maxi dice que no ve el diseño muy bien armado. Ahora tu dices
que normalice esas tablas. Podríais explicar qué problema tiene ese
diseño y qué es lo que hay que normalizar si no sabéis qué es lo que
se está diseñando?


>
> Si decides seguir con ese disenio, tendras que usar triggers, como Maxi y
> Gustavo ya te recomendaron. Ahora, podrias explicar por que tienes dos
> relaciones a la misma tabla, solo por curiosidad?
>

El OP dice que Tabla2 representa una relación entre registros en
Tabla1. Pues imagínate que Tabla1 representa a personas y en Tabla2
se registra quien ha invitado a quien a una cerveza, representando
la primera columna a los malhechores y la segunda a sus pobres
víctimas :-).
El diseño que presenta el OP me parece perfecto para modelar
esta situación que me estoy inventando yo ahora.
Y si no... qué tengo que normalizar?

En cuanto a lo de tener que usar tiggers, he ahí otra lindeza de
nuestro maravilloso SQL Server. Le parece lógico a alguien que no
se puedan definir dos claves foráneas en Tabla2 haciendo referencia
a una clave en Tabla1, cada una de ellas con su correspondiente
on delete cascade? O si hace falta también los on update cascade?

Saludos,
Carlos

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida