OMG!!!!!
Ci credo che ci scleri sopra!!!
Io ti sconsiglio vivamente di usare una soluzione del genere in quanto ti obbliga replicare tantissime righe di codice, e inoltre ti constringe a fare un casotto di funzioni in base al prodotto cartesiano tabelle X funzioni.
Ti consiglio di cambiare approccio.
Intendo se devi gestire la cosa in questa maniera non fare millioni di funzioni, ma giuste quelle funzioni atomiche di basso livello invocate da un layer superiore.
Per esempio fai una funzione che controlla le chiavi, una funzione che controlla la relazione tra le tabelle, un funzione che controlla la coerenza dei dati nella tab di relazione ....
Queste funzioni sono le funzioni di basso livello, piccole funzioncine atomiche cha fanno poca roba.
Quindi scrivi un layer che si interfaccia tra te e le funzioni.Tale layer(livello) e' composto da pochissime funzioni che in base ai parametri che gli passi usano le funzioni di basso livello per eseguire tutti i controlli che ti servono.
Con questo tipo di approccio vedrai che il numero di funzioni non dipende piu' dal numero di tabelle, non avrai codice replicato, avrai una struttura piu' flessible e piu' facile da gestire.
Il fatto di gestire le funzioni con i nomi delle tabelle e quindi lanciarle dinamicamente in base al nome singnifica che ti fai solo del male, intendo ti tocca scrivere pacconi di codice spesso uguale.
Con un approccio di tipo bottom-up(quello che ti ho scritto sopra) invece ti progetti una serie di piccole entita' che si occupano di fare esclusivamente determinate operazioni e controlli sulle tabelle restituendo true/false o dati.
Uno volta fatto cio puoi usare quelle funzioncine come ti pare mescolandole tra di loro. Se provi con questo approccio vedrai che ti sara' piu' semplice gestire il tutto anche perche' nn dovrai invocare a runtime le funzioni in base ai nomi ma in base a dei parametri eseguirai le operazioni necessarie a completare i controlli .
Pensaci.