Consider
class HasChangeNotification n a | a -> n where
changeNotification :: DatabaseEntity be db (TableEntity a) -> n (Change a)
It is difficult to imagine a scenario where one would want to use a different notification type (n above) for two different tables (a above). What is far more likely is that there is one notification type for the entire database db. This would reduce the tedium and increase the clarity of instance declarations for this class.