Bonsoir ,
Comment peut-on dénormaliser de l'héritage de trois tables en une seule ?
sans créer de table supplémentaire et les identifier par un même id.
Cela me semble assez difficile mais possible ?
merci.
Bonsoir ,
Comment peut-on dénormaliser de l'héritage de trois tables en une seule ?
sans créer de table supplémentaire et les identifier par un même id.
Cela me semble assez difficile mais possible ?
merci.
bonjour,
En rajoutant une colone 'type' qui permettra d'identifier d'où viennent les données.
Pour conserver les ID, il faudrait connaitre votre structure actuelle.
Mais est-ce une bonne idée de faire ça ?
Quels supposés bienfaits attendez-vous de cette opération bien peu recommandable ?
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Cela ne vient pas de moi , c'est mon chef de service informatique qui ne veut pas en attendre parler de l'héritage et il est fan de la dénormalisation (pour éviter la multiplication des tables et optimisation)
Pauvre Johnny...
Il est vrai que nombre de chefs pratiquent le sophisme :
« Je suis le chef, donc j’ai toujours raison, donc il faut dénormaliser. »
En près de 50 ans d’informatique (dont 40 en SSII), j’ai malheureusement rencontré une foule de chefs de services informatiques se mêlant de ce qui ne les regardait pas, vu leur grande incompétence sur ce genre de sujet, à la mesure de leur funeste croyance dans les mythes propagés dans la presse du cœur informatique et par les flatteurs autour des petits fours, etc.
De tels chefs feraient mieux de s’occuper de leur service et de se reposer sur la compétence en modélisation de ceux qui la détiennent.
Maintenant, plutôt que de tout casser, vous pouvez rouler le chef dans la farine en définissant une table virtuelle c'est-à-dire une vue de jointure + union de vos tables (sous réserve qu’on soit bien dans un contexte d’héritage), avec laquelle il pourra consulter les données comme il veut en croyant qu’il n’y a qu’une table (mais attention à votre prime de fin d'année s'il prend conscience du subterfuge... )
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
On se retrouve devant un problème classique :
- Tu refuses les mauvais choix de ton CP et tu te fâches avec lui maintenant.
- Tu acceptes ses choix et tu fais ce qu'il demande et, quand l'application aura des problèmes, il te reprochera d'avoir failli à ta mission de conseil et de ne pas lui avoir démontré que son choix était mauvais.
Vécu
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Moralité : Change de chef !
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Le risque, c'est de chercher ça:
... et d'obtenir ça :(éviter la multiplication des tables) et (optimisation)
Réduire le nombre de tables est loin d'être une raison pour dénormaliser. Vous allez surement perdre en performance. Vous pouvez implémenter la solution que vous a proposée punkoff, et comparer les io et temps de réponses de quelques requête sur les deux modéles. ça devrait commencer à faire réfléchir votre CP, et la solution proposée par fsmrel devrait vous permettre d'enfoncer le clou : vous n'aurez pas besoin de dénormaliser, et votre CP n'aura pas besoin d'apprendre à faire une jointure : tout le monde sera contentéviter (la multiplication des tables et optimisation)
je vous invite à lire ceci d'urgence :
Pour anecdote, dans mes cours d'optimisation je demande quel est le nombre maximal d'index à poser pour satisfaire toutes les optimisation possible dans une base de données comportant :
- n tables à raison d'une table par au plus un attribut non clé
- 1 seule table avec toutes les informations dotées de n colonnes.
la réponse est simple...
- Avec la première modélisation (normalisation poussée à l'extrème) il faut n index.
- Avec la seconde il faut : ∑ n!
bref pour une seule table de 10 colonnes il faut : 4 037 913 index différents...
Voici quelques arguments propre à convaincre même le clef de projet le plus con, sinon, changez d'urgence de boite... la contamination est possible !!!
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partons sur la base de n tables de 1 milliard de lignes chacune (j'ai connu ça), ces index représentent une surface disque intéressante et des temps de mise à jour, sauvegarde/restauration etc. à la mesure...
Pour convaincre le chef obtus, il est nécessaire et suffisant de traduire ça en unité de porte-monnaie...
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Je suis d'accord avec vous , cependant c'est mon chef et bien que j'ai essayé , il ne m'écoute pas et il me demande de faire comme lui il veut !
Je rappelle aussi que c'est lui qui doit mettre , mes points pour mon stage ,donc je fais comme lui il veut , sinon il fait du chantage , pour peu que l'application fonctionne comme lui le veut.
Mon chef est un peu spécial , il veut contrôler un peu tout , il doit dire comment les menus doivent être positionné et couleurs , les combox doivent être garnis par procédure stockée etc.
Bref si ce n'était pas mon stage ,je serai déjà parti , mais je peux pas faire autrement, je vais quand même pas changer de stage à deux mois de la fin de l'année...
Ouf ! Tu n'es là que pour un stage !
Prends ton mal en patience et ne postule pas dans cette boîte !
Et une fois que tu auras eu tes notes de stage, invite ton ex chef à lire cette discussion !
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Je serai curieux de connaitre les arguments de votre chef, et savoir ce qu'il a avancé contre les propositions et remarques qui vous ont été faites ici.
Peut être pouvez vous nous en dire plus sur les trois tables en question, leur structure...
Nous pourrions surement mieux comprendre, et peut être démontrer mathématiquement que votre chef a tort !
Courage, Johnny Boy,
Votre chef n'est pas un cas isolé...
Extrait d’un message que j’ai commis il y a un peu plus de 3 ans quant à l'attitude de tel et tel chefs auxquels j'ai eu affaire...
Une société d’assurance. Pour le DSI, la base de données Clients c’était du béton : « Je n’ai jamais entendu parler de quelque problème que ce soit, tout baigne ». J’étais alors chargé de valider un modèle conceptuel de données et le modèle logique dérivé, ceci pour une autre base, alimentée à partir des données de production. Ayant mis en œuvre l’intégrité référentielle pour la nouvelle base, ce qui devait arriver arriva, ce fut un révélateur : 30% de données rejetées lors de la « remontée » dans la base toute neuve. Le DSI verdit et il fallut plus d’un an pour arriver à remettre la base Clients à peu près d’équerre.
Une caisse de retraite. Un décideur (fonctionnel) décide de faire débrancher l’intégrité référentielle pour une partie de la base de données. Prudent, je recopie les tables de production dans un environnement qu’on m’a affecté, j’écris toutes les requêtes SQL pour vérifier (de nuit, car il est hors de question de pomper du temps machine pendant la journée) que les tables impliquées sont restées cohérentes suite à traitement diurne. Au résultat, ça n’a pas traîné : je constate que 780000 périodes passées par les cotisants dans les entreprises se sont envolées (peut-être étaient-ce les vôtres ?) Traitements à refaire, avec ordre cette fois-ci du décideur de brancher l’intégrité référentielle. Qu’est-ce qu’il ne faut pas faire pour que les gens comprennent...
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager