Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/11/2013, 03:58
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: personas instituciones colaboradores

Luego podriamos decir que personas e instituciones estan al mismo nivel con respecto a actividades.

Actividades 1 ----- n > RelActCol < n ---- 1 Colaboradores

Colaboradores seria una unión de Personas e Instituciones lo que se podria solucionar con una vista pero no nos permitiría referenciarla.

Luego

RelActCol
idActividad
idCol <--- Seria el id de una persona o de una institución, no se puede crear una FK
idTipo
---- PK (idActividad,idCol,idTipo)

y mantener la integridad a nivel de código.

Código MySQL:
Ver original
  1. FROM Actividades a INNER JOIN RelActCol r ON a.idActividad=r.idActividad
  2.           INNER JOIN personas p ON r.idCol=p.idPersona
  3. WHERE r.idTipo=1;

(1=persona)

Código MySQL:
Ver original
  1. FROM Actividades a INNER JOIN RelActCol r ON a.idActividad=r.idActividad
  2.           INNER JOIN instituciones i ON r.idCol=i.institucion
  3. WHERE r.idTipo=2;

(2=institucion)

La alternativa es crear una tabla física con la unión de personas e instituciones que si se podria referenciar. Pero ahora tendrás que mantener la integridad por codigo entre las tablas persona e instituciones y la hipotetica tabla Colaboradores.

O dos relaciones n:m Actividades con Personas y Actividades con Instituciones....

__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 26/11/2013 a las 04:11