J aimerai savoir, toujours par curiosité, si on devrait remettre en question la structure globale de la base, notamment la définition des tables.
Pour être concret, je me demandais si quelqu'un a déjà pense que certaine tables actuellement présentes n avaient pas de raisons d y être et qu il aurait fallut les fusionner avec d autres pour tables des raisons que j ignore.
Je prendrais par exemple les tables :
- categories_description qui pouvait être fusionner avec la table <
categories >
- manufacturers_info qui pouvait être fusionner avec <
manufacturers >
- Idem pour les tables : products_description, products_options, products_attributes et products_to_categories qui pouvaient être carrément inclues dans la table <
products >
- et ainsi de suite pour les autres tables.
Je souligne que cette architecture est ce qui serait la meilleure d après un ami diplômé en bases de données (6 mois de formation d administrateur de bdd). Mais personnellement, je ne suis pas d accord avec lui et je pense que la répartition actuelle des tables dans la base est très bien.
Je vous laisse nous départager, avec des arguments a l appuis bien sûr
Je rappel que pour lui, ses arguments sont : moins il y aura des tables (liées), moins il y aurait des contraintes et donc moins de consommation des ressources processeurs (du serveur sql). Son autre argument c est la simplicité des requêtes car plus besoin de faire des jointures puisque tout les champs seront cote a cote (dans la même table).
Et moi je le contredis en avançant les arguments suivants :
Argument 1 :l architecture actuelle (segmentée) permet une bonne lisibilité et maintenance de la base facilite les sauvegardes (petite table = petite taille) en évitant les time out dû aux tables trop grosses par exemple.
Argument 2 : Le faite de créer des tables dédiées permet d indexer ces champs sans consommer trop d espace disque. car 5 indexes sur 5 champs unitaires dans une même table contenant 25 champs au total, consommerait beaucoup plus d espace disque (x3 ou x4) que si l on fessait 5 tables (liées) et ayant 5 champs et un index chacune .
Je m explique :
Je part du principe où chaque index crée une image de la table a laquelle il est lié (avec tout ses x champs) mais classés par ordre croissant par rapport au champs indexé.
Ce qui fait que :
- cas 1:
1 table de 20 champs ayant 5 index devrait générer 5 images de 20 champs = 5x20 = 100 champs.
- cas 2:
5 tables de 5 champs ayant 1 index (clé primaire et étrangère) chacune devrait générer 5 images de 5 champs = 5x5 = 25 champs seulement
Analysons les impacts :
Supposons que chaque champs contienne 1Mo de donnees.
Les fichiers d index générés pour le 1er cas (1 table de 20 champs) consommeront environ 100Mo contre 25Mo pour ceux du 2ieme cas (5 table de 5 champs).
Conclusion personnelle : économie considérable de l espace disque, en utilisant le cas 2 (configuration actuelle des tables de osc).Un autre avantage, dans le 2ieme cas, les mises a jours qui ne concerneront que les champs de 1 table parmi les 5 se feront très très rapidement puisque seuls les fichiers relatifs aux index de ces tables (réduites) devraient être modifiés et re-indexés (donc seulement 5 champs sollicités).
Or les mises ajour dans le 1er cas (1 table de 25 champs) seront très lentes (3 a 4x plus lent que le cas 2) car même si l on met a jour un seul champs, c est l ensemble des 25 champs qui devront être re-indexés (re-ecriture de chacun des 5 fichier d index de 25 champs chacun)
En résumer :
- cas 1 :
si on met ajour un seul champ de la table,
chacun des 5 fichiers relatifs aux 5 index ( de 25 champs) vont être re-ecrits et donc re-indexes >> re-indexation et réécriture de 5 fichiers de 25 champs chacun.
- cas 2 :
si on met a jour un seul champ d une table parmi les 5,
seul le fichier d index relatif a cette table (de 5 champs) sera re-indexé et re-écrit.
Conclusion : les mises a jour dans le cas 2 se ferons beaucoup plus rapidement (1x5 champs a re-indexer) que dans le cas 1 (5x25 = 125 champs a re-indexer).Merci encore pour vos réponses, et n oubliez pas que je ne suis pas sur a 100 % des mes arguments ni des siens. C est pour cela que je veux avoir vos avis pour ne plus rester dans l ignorance.
A bientôt