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.
(1=persona)
(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....