Bonsoir/Bonjour à vous tous

Voila, je suis quelque peu en galère.
J'aimerai me faire ma propre classe Database qui implémenterai n'importe quelle interface derriere (MySQL, MsSQL, etc).
Par contre je bloque sur un soucis de structuration.
J'essaye de faire en sorte que ma classe soit la plus propre possible
pour pouvoir etre évolutive sans trop gener les classes dépendantes.
Voila ce qu'il en est
J'ai
_ une classe abstraite qui contient les fonctions connect, select_db, close, query, num_row, fetch, fetch_all
_ une classe DBiterators qui contient les next, current, prev, valid, key, seek, count et consor
_ une classe MySQL qui étends la classe abstraite pour les fonctions connect, close, etc
Ce que j'aimerai, c'est que ma classe abstraite soit découpé en plusieurs parties (deux exactement)
_ Une classe (abstraite) AbstractMainDB (connect, close, select_db, last_error)
_ Une classe (abstraite) AbstractActionDB (query, prepare, execute, fetch, fetch_all)
Mais il y a autre chose, j'aimerai que ma classe DBIterators soit liée à ma classe Main.
L'idée serait que la classe MySQL étendrais AbstractMainDB, tout en
puissant utiliser les fonctionnalitées additionnelles de
AbstractActionDB.
La classe AbstractActionDB quant à elle serait en liaison avec la classe DBIterators.
Est-ce possible de lier tout ca sans faire passer les instances en variable dans les différentes classes.
La seule solution que j'ai trouvé serait de faire une classe abstraite
DBIterators, une classe abstraite AbstractMainDB qui étends la classe
DBIterators et la classe AbstractActionDB qui étends la classe
AbstractMainDB. La classe MySQL quant à elle étendrait la classe
AbstractActionDB
Mais voila, j'étends la classe AbstractActionDB au lieu de DBMain, et
DBIterator se situe au dessus de AbstractMainDB alors que logiquement
(ce que je trouverai logique :p), elle devrait se trouver entre
AbstractMainDB et AbstractActionDB.
J'espere avoir été assez clair

Merci beaucoup de votre aide !!
