j'ai déplacé le sujet dans la section la plus adéquat
première chose, c'est finit le temps où les nom étaient limité à 8 caractères

.
Les noms de colonnes ne sont pas explicite, si tu dois te référencer à un dictionnaire pour comprendre ce qui a été fait c'est pas simple

par exemple la table trocons_xxxx (trop long non ? := ) )
- n'est pas uniforme : le geom et gid n'ont pas le préfixe.
- les noms sont incompréhensible tcebts_fic ou tcebts_zfi sont surement parlant pour toi en ce moment mais pense aux autres qui peuvent intervenir la dessus (en dehors de moi maintenant

)
ensuite le modèle n'est pas forcément si mauvais. Il est surement possible de factoriser cela, par exemple indices_pollutions et rejets c'est la même chose, une seule table avec un "type" pour les distinguer peu suffire
idem pour incision_lit et comblement_lit (c'est la même chose mais pas dans le même sens ?

)
idem pour erosions_berges et expensions_crue (idem pour le commentaire ?

)
geom c'est quoi ? c'est dans toutes les tables. Dans un modèle chaque chose devrait être unique la du coup c'est étonnant
après c'est limite pour réduire car tu as des données spécifique à chaque (origine, type, importances, niveau etc).
Pour ce qui est des champs dupliqué tu peux utiliser l'héritage (une entité qui contient date + remarque + geom) dont les autres hérites
Attention aux relations 0,1, j'ai tendance à toujours avoir une valeur par défaut plutôt que de devoir mettre un left/right join

(simple avis perso ça fonctionne très bien comme ça
pour le reste il faut un peu de temps pour que je regarde.