After having some trouble (and posting a lengthy text which didn't really aid the question ;-) ) with GROUP (class / table), I wondered if it is very clever to have a table that is a reserved word (in MySQL, Postgres and MS SQL). For every query we use on that, we'll have to create a MySQL version (`Group`) and another version ("Group") - otherwise it will miserably fail :P.
On the other hand it would require quite a lot of rewriting code to change it, so not sure it that would be a better alternative...
To illustrate the problem, even simple queries will always require at least two versions, so instead of
SELECT MAX(ID) FROM mytable
This for MySQL
SELECT MAX(ID) FROM `thetable`
and for PostgreSQL and MS SQL
SELECT MAX(ID) FROM "thetable"