L'optimisation d'un MCD, c'est la phase aussi courrament appelée "dénormalisation".
Il s'agit, à partir d'un MCD 100% MERISE, d'arriver à un MCD sortant légèrement de la norme, afin de :
- Eviter tout ce qui est 0,1-1,1 (à banir totalement)
- Eviter tout ce qui est a,b-c,n (avec a, b et c connus), par exemple, une relation 2,2-4,n est à supprimer, en ajoutant des champs dans une des deux tables, et en supprimant l'autre. Ne pas le faire dans tous les cas cependant !
- Tenter de réutiliser une seule entité, lorsque plusieurs ont la même structure, mais contiennent des informations différentes. Par exemple, une facture et une commande ont rigoureusement la même structure, il vaut mieu utiliser une unique table plutôt que deux, en ajoutant un champs afin de différencier les informations contenues dans la table).
Etc.
Il n'y a pas de règle absolue, c'est 100% dépendant de l'utilisation de la base. Dans un premier temps, à partir de la liste de traîtements et écrans connus, tente d'écrire les requêtes permettant de faire tout ça. Ensuite, à partir de là, regarde les jointures superflues ou coûteuses (associer une facture à une commande, lorsque chacune des deux tables possède 10 000 000 de lignes, c'est très consommateur, index ou non).
Faire une table de jointure entre "personne" et "personne" afin de différencier qui est le père et qui est la mère d'un fils est inutile, il vaut mieu ajouter deux champs "père" et "mère" dans la table personne. Ceci dit, ta base sera incapable de gérer des couples homosexuels ayant adopté un enfant, bref, tout ce qui est dénormalisation doit être à prendre avec des pincettes.