Développant une application de gestion de cv, je me pause des questions au sujet de l'intérêt d'une BDD.
Actuellement, mes données sont regroupées dans un fichier XML. Via PHP, j'applique une feuille de style XSLT à ce XML pour générer mon code XHTML auquel j'applique une feuille de style CSS et un script JS.
Plutôt partisan de séparer les couches, j'ai naturellement pensé à séparer mes données du XML pour les intégrer dans MySQL.
Ceci dit, à l'inverse des autres types de séparation (structure/présentation/comportement/traitement), je n'arrive pas à y déceler les mêmes avantages.
Par exemple, si je prends un formulaire et que je reçois des données d'un utilisateur, je me voyais bien effectuer le traitement de l'envoi puis mettre à jour mon XML via DOM. De là, mon XSLT, dans lequel se trouveraient certaines conditions, boucles, choix, etc..., mettrait automatiquement à jour le code XHTML (voire CSS et JS) et puis... c'est tout.
Pour m'assurer que les données reçues du visiteur soient correctes, j'imposerais par exemple que celles-ci respectent les règles établies par une DTD, un XML Schema ou un RelaxNG afin de les valider.
Si j'ai besoin de faire une recherche sur les données enregistrées, je peux entre autres me servir de DOM.
Donc, si j'intégrais mes données dans une BDD, qu'est-ce que cela pourrait m'apporter ?
Je n'y vois que des traitements supplémentaires... et pas l'avantage.
D'habitude, la séparation de deux couches les rend indépendantes et plus portables mais, dans le cas de la séparation des données et du XML :
- XML est déjà portable.
- En vue d'améliorer la sémantique, j'ai l'habitude de nommer mes balises XML de manière descriptive, ce qui fait que l'indépendance des données par rapport à la structure ne me semble pas judicieuse.
... sans compter que si j'intégrais les données dans MySQL, je devrais :
1- traiter les données
2- les intégrer dans la BDD
3- les extraire
4- établir mon XML
... les points 2 et 3 venant donc s'ajouter par rapport à ma méthode initiale.
On a pourtant l'habitude de dire que XML n'est pas une base de données et qu'il existe d'ailleurs des BDD XML (sur lesquelles on peut se servir de XQuery avec Xpath) à l'instar des BDD relationnelles... Bref, je dois être un peu cruche mais je ne vois pas ce qu'une BDD peut m'apporter...
Qu'en pensez-vous ? Aurais-je omis quelquechose ? Et dans quel cas la BDD vous semble indispensable ?