Está usando un patrón llamado Asociaciones polimórficas y no, no hay forma de hacerlo y usar claves foráneas para hacer cumplir la integridad referencial.
Te sugiero que hagas una tabla común que a_points
, b_points
y c_points
referencia. Luego, sus pares de puntos pueden hacer referencia a esa tabla común.
a_points -->
b_points --> common_points <-- point_pairs
c_points -->
En otras palabras, la forma de hacer que las asociaciones polimórficas funcionen es invertir la dirección de la referencia.