Je connais quelques bonnes pratiques générales lors de la conception d'une base de données pour une application, mais qu'en est-il de la refonte?
Je fais partie d'une équipe chargée de reconcevoir une application métier interne, même si je dis «interne», je suis malheureusement très loin de tout contact avec les utilisateurs réels du système.
Le programme actuel est dans Oracle Forms, dispersé sur un tas de tables non normalisées, parfois avec plusieurs tables presque en double contenant de légères variantes sur les données des autres. Les contraintes prennent souvent la forme de procédures stockées mal appliquées. Même les types ne semblent pas être stockés correctement. J'ai rencontré toutes sortes de mauvaises données qu'Oracle semble ignorer, mais a donné raison (et à juste titre) à l'assistant d'importation / exportation de SQL Server. (Par exemple, des nombres entiers à deux chiffres ne constituent pas une date / heure complète!)
Le programme d'origine remonte probablement à vingt ans, et tous les développeurs d'origine ont pris leur retraite il y a si longtemps que même les personnes âgées ici n'ont aucune idée de qui elles étaient. En conséquence, il n'y a pas non plus vraiment d'exigences claires à respecter - nous sommes simplement censés dupliquer les fonctionnalités de l'application existante et conserver ses données existantes.
Le résultat final de la réécriture va être une version Web exécutée sur ASP.NET avec MS SQL Server pour le back-end.
Mes deux autres coéquipiers développeurs sont beaucoup, beaucoup plus âgés que moi, tous les deux issus du milieu des affaires / MIS alors que le mien est CS. L'expérience du membre senior a été presque exclusivement des formulaires Oracle et l'autre membre a principalement effectué des applications métier en Visual Basic. Bien que mes antécédents en matière de bases de données se soient limités à la conception de nouvelles bases de données pour des projets dans MySQL ou SQLite, principalement pour mes cours de premier cycle, il semble que je sois le seul à avoir réellement conçu des bases de données.
J'ai déjà écrit un petit programme en C # qui lit toutes les données existantes dans un format neutre, prêt à être re-casté et placé dans une nouvelle base de données. Je prévois d'écrire le code de chargement après la conception de la base de données de destination, afin que les données puissent être correctement réparties entre les nouvelles tables normalisées, ajoutées dans le bon ordre pour suivre les nouvelles contraintes, etc. Le même programme pourrait ensuite être exécuté de nouveau plus tard pour copier les données de production dans la vraie refonte terminée récemment déployée. Cela laisse la refonte réelle de la base de données comme la principale chose à comprendre.
Donc, le cœur de ma question: quelles sont les meilleures pratiques pour effectuer une refonte à partir du niveau de la base de données d'une application existante?