Bonjour,
Je ne vais pas reprendre 90% de vos propos qui ne concernent en fait que l'évolution des SI, ou leur automatisation par étapes : bien sûr qu'un modèle, quel qu'il soit, n'est pas gravé dans le marbre, et qu'il est amené à évoluer... qui pourrait prétendre le contraire ? Personne, même pas les profs !
Le script initial de génération du schéma relationnel sert à la création de la structure, les évolutions s'effectuant ensuite en fonction des besoins : et là, ALTER TABLE et autres commandes servent bien évidemment à l'évolution du schéma relationnel.
Revenons par contre sur certaines de vos affirmations :
Citation:
J'ai un avis neutre sur le sujet : les programmes sur lesquels je travaille disposent d'un modèle des données déjà établi, et les évolutions que j'y apporte se résument généralement à quelques colonnes dans des tables existantes, quelques nouvelles tables, quelques traitements, mais rarement un modèle justifiant de passer par un MCD.
Ces schémas ne font donc pas partie des livrables demandés par mes clients, et par conséquent la modélisation se cantonne généralement à l'expression du dictionnaire des données, des règles régissant ces données, puis une réalisation directe. Si vous suivez bien votre cours, vous ne pourrez pas me contredire en disant que le MCD découle automatiquement du dictionnaire des données et des règles sur ces données.
Il faut dire en plus que généralement les clients en face n'ont pas les connaissances nécessaires pour relire un MCD. Déjà "un et un seul" c'est compliqué à faire comprendre parfois... alors je ne vous parle pas de "contraintes d'intégrité fonctionnelles" ou de "cardinalités".
Vous seriez surpris de voir à quel point un MCD bien réalisé est expressif, même pour le client final : en tout cas, il l'est bien plus qu'un schéma relationnel. Alors vous me direz surement : la structure de la BD, je ne la montre pas à mes clients... Personnellement, je ne le faisais pas non plus... avant que je me rende compte que, bien exposé, il permet des échanges des plus intéressants, y compris avec des non-initiés.
Citation:
En revanche, un outil, quel qu'il soit, reste un outil.
Si on l'utilise mal, il va produire de la *****. Par conséquent, ce n'est pas parce que j'ai un joli MCD qui a donné lieu à un joli MLD dans l'outil qu'au final j'aurai un DDL parfait : si le MCD est bancal, me DDL généré le sera aussi, mais surtout, comment évoqué la première fois qu'on en a parlé, l'outil peut prendre des décisions lors de la génération du DDL qui ne sont pas des plus adaptées.
Il y a par exemple un certain nombre de règles dans un MCD, qui vont donner lieu à du code (triggers par exemple) que ces outils ne sauront pas produire, ou pas en respectant les règles de développement de l'entreprise par exemple.
N'enfonçons pas des portes ouvertes : il est évident que si le MCD est mauvais, tout ce qui suivra derrière ne vaudra pas plus, quel que soit l'outil !
Par contre, ne négligez pas le pouvoir d'expression d'un MCD, y compris au niveau technique : si un MCD a la vertu de pouvoir présenter de manière relativement simple la structure générale du SI, il est également capable de donner des directives précises quant la génération du DDL : nature des clés, composition des clés alternatives, des index, rajout de contraintes décrites par des triggers à travers des règles associés aux classes d'entités ou aux associations, ... tout cela s'intègre aujourd'hui très bien dans certains outils de modélisation.
Ainsi, on peut associer dans ces modèles des aspects purement conceptuels lisibles par tous, et des aspects techniques qui relèvent plus du DBA.
Citation:
En revanche, j'attend de vous que vous reconnaissiez qu'un exercice est un exercice, et que même s'il est basé sur une situation réelle, ne peut en aucun cas être une situation réelle.
Et que bien souvent, ce que vous décrétez comme faux avec un gros point rouge à côté, découle pourtant d'une démarche parfaitement juste à un instant T, mais qui par la suite c'est avérée être remise en question par de nouvelles règles, inexistantes au moment de l'analyse initiale.
Dans un souci pédagogique, les exercices que nous donnons à nos étudiants sont tout d'abord faits pour leur permettre d'acquérir la technique de modélisation : pour cela, on s'appuie forcément sur des cas d'écoles.
Quand vous faites un TD en 1h30, il vaut mieux que le compte-rendu d'interview soit clair, et ne prenne pas en compte les évolutions possible du SI dans les 10 ans à venir.
Citation:
Je me souviens clairement d'une pise de bec avec un prof d'analyse justement, car il était incapable d'accepter qu'une règle de son énoncé pouvait, par simple précaution, être partiellement interprétée et remise en cause, donnant lieu à une solution différente de celle de son bouquin.
Je suis désolé, mais quand la règle c'est "mon client ne peut passer qu'une seule commande", je vais reposer la question 1 fois, 2 fois, 3 fois, changer d'interlocuteur, et si j'ai franchement le doute qui reste, je vais prendre la liberté de prévoir l'erreur ou l'évolution. Et comme par enchantement, au moment de la livraison du programme on a droit à "ah mais le client ne peut avoir qu'une seule commande active à un instant T, mais on veut pouvoir retrouver ces anciennes commandes !". Ouf, j'avais prévu le coup.
Quand on enseigne, il faut savoir faire la part des choses : si vous voulez expliquer, en même temps, toutes les subtilités d'un concept et tous les cas qui y dérogent, vous perdez les étudiants, surtout lorsqu'il est question de modélisation conceptuelle.
Il faut donc leur donner des règles précises, souvent trop précises par rapport à la vraie vie : ensuite, quand s'est installée une certaine maîtrise, je suis le premier à leur expliquer que l'on peut déroger à certaines de ces règles (rubriques calculables, surclés, ...).
Mais, comme je le dis souvent : on déroge en connaissance de cause ! Ce qui permet de se poser les bonnes questions au bon moment...