Bonjour à tous,
J'ai un petite question, concernant le versionning de projet, qui m'embête un peu.
Imaginons qu'on est un projet plutôt classique constitué d'une base de données et de code qui exploite cette base.
Pour faire ça propre on utilise un SCM pour versionner son code, bosser à plusieurs dessus...
Mais comment fait-on pour gérer les versions de sa base de données (où schéma Oracle,etc...) ?
En théorie, au fur et à mesure que le code évolue, il y a de grande chance pour que notre base évolue avec (ajout de table, de champs, de contraintes...). Or où est l'intérêt de gérer les différentes versions de notre code si on ne gère pas celles de notre BDD. Parce que dans ce cas si pour X raisons, on décide de revenir à une version antérieur, c'est cuit, car notre base ne correspondra plus au code.
OK dans un contexte POO, si on fait des classes qui map les tables de notre base, normalement il ne doit y avoir que peu de code impacté mais quand même.
Il me semble qu'il s'agit d'un problème assez important et je me demande pourquoi on en parle si peu dans les tutos sur l'utilisation de SCM.
Pour l'instant je n'ai pas trouvé de solution réellement convaincante à mon gout :
- faire des exports SQL de l'architecture (CREATE TABLE, ALTER...) de ma base et versionner ces fichiers avec un SCM type CVS ou Subversion
- il existe des outils payants que je n'ai pas pu tester, un fait par QuestSoftware pour Oracle -> Toad Data Modeler et un autre de Microsoft pour SQLServer (j'ai oublié le nom).
J'aimerais avoir vos avis et vos méthodes sur la question.
Partager