Gracias, Quim,
esto me aclara cosas:
Cita: 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)
indexando idCol todo mejorará, pero incluye el idTipo para permitir el filtrado más adelante. Esa es la opción que yo pensaba más cómoda y por lo que dices también te lo parece a ti. Pero yo entiendo que el tipo es un atributo del colaborador, aunque no únicamente en la colaboración. Por eso pensaba que una tabla en la que se incluyeran todos los colaboradores, solo su PKcolaborador, luego su tipo, y después su nombre (2 campos en el caso de la persona), y luego otras dos tablas relacionadas para sus atributos más específicos, según se trate de personas o de instituciones. No sé qué sería mejor. Decidme qué opináis desde el punto de vista de las bases de datos relacionales.