Restricciones de Integridad N:M

20/04/2005 - 09:15 por javierperezllanera | Informe spam
Hola a todos,

Tengo tres tablas que están relacionadas entre si por N:M.

El caso, es que la primera tabla llamada EMPRESA, tiene vinculados N
RIEGOS, y cada uno de ellos a su vez tiene también vinculados N Fatores de
Riesgos...Para rizar el rizo, cada factor de riesgo tiene a su vez también
N Medidas preventivas.

Problema: Que la restricción de integridad por relación solo nos controla
eliminar de las tablas maestras y no de las N:M. Por ejemplo en el caso de
que eliminemos un RIESGO que tiene factores de riesgos vinculado la
restricción no falla.

¿Sabéis como solucionar este caso? Quizás una restricción CHECK???

Modelo..

tblEmpresas ->N tblEmpresaRiesgo N<- tblRiesgo ->N tblRiesgoNFactorRiesgo
N<- tblFactorRiesgo ->N tblFactorRiesgoNMedidaPreventiva N<-
tblMedidaPreventiva

Como podria hacer una restricción de cuando elimina un registro (por
ejemplo de la tabla tblEmpresaRiesgo una empresa) que compruebe existen
Riesgos asociados a esta empresa y estos a su vez Factores de riesgos y a
su vez medida preventivas.

Dado que no pueden quedar Factores de riesgos huérfanos de Riesgos, o
medidas huerfanas de factores.

Gracias!!!!
 

Leer las respuestas

#1 Alejandro Mesa
20/04/2005 - 13:55 | Informe spam
Javier,

La mejor manera de forzar las restricciones de integridad referencial es
usando restricciones de claves foraneas. Puedes usar en ellas las opciones ON
DELETE / ON UPDATE CASCADE para que SQL Server borre o actualize en cascada
las claves foraneas que referencian una primaria cuando esta es borrada o
actualizada.


AMB


"Javier" wrote:

Hola a todos,

Tengo tres tablas que están relacionadas entre si por N:M.

El caso, es que la primera tabla llamada EMPRESA, tiene vinculados N
RIEGOS, y cada uno de ellos a su vez tiene también vinculados N Fatores de
Riesgos...Para rizar el rizo, cada factor de riesgo tiene a su vez también
N Medidas preventivas.

Problema: Que la restricción de integridad por relación solo nos controla
eliminar de las tablas maestras y no de las N:M. Por ejemplo en el caso de
que eliminemos un RIESGO que tiene factores de riesgos vinculado la
restricción no falla.

¿Sabéis como solucionar este caso? Quizás una restricción CHECK???

Modelo..

tblEmpresas ->N tblEmpresaRiesgo N<- tblRiesgo ->N tblRiesgoNFactorRiesgo
N<- tblFactorRiesgo ->N tblFactorRiesgoNMedidaPreventiva N<-
tblMedidaPreventiva

Como podria hacer una restricción de cuando elimina un registro (por
ejemplo de la tabla tblEmpresaRiesgo una empresa) que compruebe existen
Riesgos asociados a esta empresa y estos a su vez Factores de riesgos y a
su vez medida preventivas.

Dado que no pueden quedar Factores de riesgos huérfanos de Riesgos, o
medidas huerfanas de factores.

Gracias!!!!







Preguntas similares