Modélisation Entité-Relation vs Relation universelle
Un article par François de Sainte Marie
Le 2023-04-12 15:17:40, par fsmrel, Expert éminent sénior
Bonjour,
Je vous propose un article traitant de la modélisation des données, d’une part selon notre approche classique E/R, c’est-à-dire en partant d’un MCD, et d’autre part selon l’approche de certains théoriciens du relationnel (relation universelle). Je compare et conclus en faveur du MCD.
Maintenant, on peut débattre...
L’article est ici :
Modélisation Entité-Relation vs Relation universelle
N’hésitez pas à faire vos commentaires...
A bientôt,
François
Je vous propose un article traitant de la modélisation des données, d’une part selon notre approche classique E/R, c’est-à-dire en partant d’un MCD, et d’autre part selon l’approche de certains théoriciens du relationnel (relation universelle). Je compare et conclus en faveur du MCD.
Maintenant, on peut débattre...
L’article est ici :
Modélisation Entité-Relation vs Relation universelle
N’hésitez pas à faire vos commentaires...
A bientôt,
François
-
escartefigueModérateurBonjour François, bonjour à tous.
En toute impartialité, je dis excellent travail , merci François !
Et je partage la conclusion, le MCD a ma préférence !
Le MCD est d'un formalisme simple, efficace et applicable dans toutes les situations, je le trouve également plus facile à lire que le modèle UML par trop brouillon.le 13/04/2023 à 8:26 -
fsmrelExpert éminent séniorAve Capitaine,
Grand merci à toi !Envoyé par escartefigue
Certes, nos MCD ont notre préférence. Il est quand même intéressant de savoir ce qu’il y a derrière le miroir et à l’autre bord de la rivière...
Le MCD est quand même parfois un peu compliqué (pas trop quand même), comme ici (cf. la discussion « Quel logiciel télécharger pour réaliser un MCD », le post #53, Figure 4) : le 13/04/2023 à 18:24 -
PaprickMembre émériteBonjour,
Cela ne vous surprendra pas si je vous signifie ma préférence pour les MCD !!!
J'ai d'alleurs beaucoup travaillé sur les CIF et en particulier sur les CIF à unicité incomplète comme dans l'exemple des courses hippiques que nous propose François.
En m'appuyant sur les travaux de Ullman et Dale, et sur mes recherches personnelles, j'ai établi mon propre théorème permettant de déterminer de manière formelle les clés candidates dans le cadre d'une association n-aires avec d'éventuelles CIF, quelque soit leur complétude (et ce en limitant au maximum l'usage de l'algorithme du seau).
Cela ne fonctionnait que partiellement dans l'actuelle version 4 de Looping, mais c'est parfaitement au point dans la version 4.1 à venir!
Et pour l'exemple de François, nous avons donc les clés candidates suivantes :
- CourseId, ChevalId
- CourseId, JockeyId
- CourseId, Numéro
En tout cas, bravo à François pour cette remarquable étude... et pour sa préférence en faveur de nos MCD !le 14/04/2023 à 6:42 -
fsmrelExpert éminent séniorBonjour les lève-tôt,
Envoyé par Paprick A consommer sans modération... Envoyé par Cap’taine
Quoique... Le diagramme ULM n’est pas toujours brouillon: Envoyé par Shepard
Une variante du Sorry Query Language, le Askew Wall, toujours par Hugh Darwen (alias Andrew Warden), in Relational Database Writings 1989-1991 :
En passant, une saine et profitable lecture : The Askew Wall par Hugh.
Au plaisir de vous revoir,
Françoisle 14/04/2023 à 18:10 -
fsmrelExpert éminent séniorBonsoir,
Envoyé par Michka1111
Merci encore.Envoyé par Michka1111
Ullman précise bien qu’il s’agit de faciliter, simplifier les requêtes de lecture (le terme vue universelle serait plus approprié que celui de relation universelle), et que les mises à jour se font sous le capot (là où sont les tables de base). Si la relation universelle est comme une étoile, elle est quand même singulièrement dépourvue de branches...Envoyé par Michka1111
A vue humaine les règles sont peut-être triviales, mais certainement pas du point de vue du SGBD : on doit lui mettre les points sur les i, d’où la nécessité de commencer par la rédaction des règles de gestion aussi naïves peuvent-elles paraître, qu’on transpose ensuite dans le MCD sous forme de contraintes (identité, unicité, inclusion, exclusion, totalité, CIF, etc.). Ces règles sont là aussi pour qu’on puisse mettre en évidence les dépendances fonctionnelles (sans oublier les dépendances multivaluées, de jointure) nécessaires pour s’assurer de la normalisation. Ceci fait, on demandera à l’AGL (par exemple Looping) de traduire ces contraintes sous forme de contraintes SQL. Si le SGBD ne propose pas l’instruction CREATE ASSERTION, on se rattrapera avec des triggers (voyez les triggers CHR_MAJ_TRIGGER, CHS_MAJ_TRIGGER), quand bien même sont-ils laborieux. A défaut, la base de données sera inévitablement truffée d’erreurs dont bien sûr l’ubiquité : qu’elles tombent sous le sens, la rédaction des règles de gestion n’en reste pas moins essentielle, et comme dit mon voisin, Scripta manent, verba volant.Envoyé par Michka1111
Dans son ouvrage auquel je fais référence, Ullman ne fait aucunement référence aux mots « star », « fact », « dimension » et autres termes connotés data warehouse : je ne vois pas en quoi sa relation universelle serait issue de la modélisation en étoile.Envoyé par Michka1111 Envoyé par Michka1111
En relationnel, on modélise l’historisation des données, sous le contrôle de la 6NF, point barre.
Je vous renvoie à l’ouvrage de référence Temporal Data and The Relational Model. Remember Pluralitas non est ponenda sine necessitate.Envoyé par Michka1111
Je cite (page 9) :Envoyé par Ralf Kimball
Plutôt que jumeaux, autant parler de triplés. Kimball oublie le troisième élément de la bande, l’intégrité des données. A quoi bon seulement les « twin goals » si on mouline des données pourries, conséquences par exemple de la dénormalisation ? Quoi qu’il en soit, en plus de quarante ans de modélisation (MCD, MLD, MPD), j’ai toujours préconisé (quand SQL est arrivé), l’encapsulation des requêtes complexes dans des vues (qui ne sont après tout que des tables virtuelles), en sorte que celles-ci soient understandable pour les développeurs et autres utilisateurs.
Quant à la performance, sujet dont j’ai eu le souci depuis près de soixante ans (ben oui), Kimball me fait l’effet de prêcher sur le mode incantatoire. De mon côté, je suis toujours resté dans les clous de la théorie relationnelle de Codd du jour où j’ai découvert celle-ci. Cela m’a permis de m’engager auprès de mes clients sur la performance des applications suite bien entendu à prototypage à mort. En matière de performance je ne crois qu’aux mesures qu’on en a faites (voyez par exemple ici). Quand les chiffres ne sont pas bons, on optimise, mais sans remettre en cause la modélisation si elle est correcte. Quand elle a été faite en dépit du bon sens, en toute incompétence, je la fais mettre à la poubelle et je prends ma casquette de concepteur pour piloter ceux qui referont les MCD.
Où sont les chiffres justifiant les allégations de Kimball ? En leur absence, je ne peux qu’être d’un total scepticisme.
Je cite encore :
Page 21 :Envoyé par Ralf Kimball Envoyé par Ralf Kimball
Là encore, c’est le mode incantatoire qui est de mise. Depuis tout ce temps où chez mes nombreux clients (tous des grands comptes, banque, assurance, industrie, distribution, transport ferroviaire, mutuelles, etc.), j’ai modélisé, audité, soigné les bases de données mal en point, je n’ai jamais eu à violer la normalisation (3NF), ou plutôt j’ai fait normaliser les tables qui ne l’étaient pas, justement pour des raisons d’intégrité des données, voire de performance.
Au fait, Kimball parle de la troisième forme normale (3NF), mais sans en donner la définition. Etrange ! (On trouvera cette définition dans mon article, mais peut-être que Kimball et moi ne parlons pas de la même chose...). Non seulement la 3NF est mise à mal, mais c’est très vraisemblablement le cas de la 2NF (pour Kimball, une table dénormalisée est forcément en 2NF ! c’est magique !) C’est certainement aussi le cas de la 1NF sur laquelle Kimball jette manifestement un voile pudique, en omettant tout simplement d’en parler, alors qu’il s’agit d’un point capital. Pour Codd (inventeur de la théorie relationnelle), une relation est dénormalisée si elle viole la 1NF (Further normalization of the data base relational model)...
Je rappelle la définition de la 1NF (cf. Database Design and Relational Theory Normal Forms and All That Jazz) :Let relation r have attributes A1, ..., An, of types T1, ..., Tn, respectively. Then r is in first normal form (1NF) if and only if, for all tuples t appearing in r, the value of attribute Ai in t is of type Ti (i = 1, ..., n).
Je rappelle aussi qu’une une relation est une valeur de variable relationnelle (relvar).
Page 111 :Envoyé par Ralf Kimball
On s’en sort très bien même avec SQL, voyez ici. Si les requêtes paraissent complexes, alors, comme d’habitude, encapsulons-les dans des vues.
Je suis désolé, mais je pourrais poursuivre ad nauseam la litanie de mes observations en tant que concepteur et DBA...le 25/04/2023 à 23:59 -
escartefigueModérateurBonjour Paprick
il me vient une suggestion pour une prochaine version de Looping : ajouter la possibilité de modifier la couleur de tel ou tel lien (au moyen d'un clic droit et d'une fenêtre contextuelle par exemple), de sorte à faciliter la lecture du MCD dans les cas tels que celui présenté par François où les connexions se croisent.
On pourrait même étendre cette possibilité à tous les types d'objetsle 14/04/2023 à 7:34 -
ShepardMembre expérimentéSorry Query Language ? J'ai ri
Bravo pour l'article !le 14/04/2023 à 8:59 -
fsmrelExpert éminent séniorBonjour Michka1111,
Merci de vous être intéressé à l’article.Envoyé par Michka1111
Dans son exemple, Ullman limite l’univers du discours à l’agenda de l’année en cours : il ne cherche pas à modéliser un historique. En l’occurrence, c’est le principe du rasoir d’Ockham qui s’appliquerait (« Pluralitas non est ponenda sine necessitate »). Ne pas oublier que chez les théoriciens de l’époque, Ullman n’était pas seul à prendre cet exemple. Voyez An Integrated Approach to Logical Design of Relational Database Schemes de Catriel Beeri.Envoyé par Michka1111
Les données peuvent avoir à être modifiées, cas par exemple de la table CHR, quand il y aurait bilocation des professeurs (ou des étudiants), si un trigger tel que CHR_MAJ_TRIGGER ne l’interdisait pas (situation à l’époque). Il est évident que si l’on étendait les règles de gestion, par exemple qu’un professeur puisse être remplacé en cours d’année, on commencerait à rentrer dans le problème (pas trivial !) de la prise en compte de l’historique, et là on pourrait aller très loin et s’éclater (cf. la normalisation en 6NF).Envoyé par Michka1111
Adressez-vous à Ullman. Quant à moi, je ne me permettrai pas de toucher à ses règles de gestion !Envoyé par Michka1111
On n’est pas ici dans un « système historique ». Je rappelle que l’univers du discours décrit par Ullman n’est pas concerné par le temps. Au demeurant, rien ne vous empêche de votre côté de faire évoluer cet univers, en prenant en compte l’aspect temporel (bien entendu dans le strict respect de la 6NF) et de proposer un article en ce sens.Envoyé par Michka1111
Le professeur n’est pas plus concerné. Je vous renvoie à structure de la table CHR.Envoyé par Michka1111
Dans l’article, je traite de la modélisation conceptuelle des données. Ainsi, il y a un modèle conceptuel des données (MCD), dérivable en modèle logique des données (MLD) impliquant donc le MCD, dérivable à son tour en modèle physique des données (MPD), impliquant le MLD, donc le MCD (voyez l’excellent Looping) du Professeur Bergougnoux. D’un point de vue théorique, l’aspect historique est parfaitement pris en compte par C. J. Date, Hugh Darwen et Nikos Lorentzos dans le cadre du modèle relationnel de données, mieux que je ne le ferais. Voyez leur ouvrage Temporal Data and The Relational Model, ainsi que la synthèse de Hugh Darwen : Temporal Data and The Relational Model.
Un article (rédigé en 2005) à méditer (faisant qu’à l’époque la commission SQL de l’ISO recala les propositions d’extension du langage SQL qui lui avaient été soumises) :
An Overview and Analysis of Proposals Based on the TSQL2 Approach.Envoyé par Michka1111
Qu’ils se mettent au diapason, à la modélisation conceptuelle avec Looping !Envoyé par Michka1111
Merci d’en fournir la démonstration. En outre, la prise en compte des données temporelles (historiques) impose de viser plus haut (6NF) !
Bon courage,
Françoisle 22/04/2023 à 17:55 -
escartefigueModérateurBonjour,
Je ne reprendrai pas l'ensemble des arguments de Fsmrel auxquels je souscris totalement sans réserve.
Au sujet de la dénormalisation, je donnerai juste un exemple concret que j'ai vécu à de nombreuses reprises dans le monde bancaire : celui de la fusion bancaire.
Il s'agit d'une opération courante dans laquelle un banque en absorbe une autre. En ce moment, c'est le Crédit du Nord qui fusionne avec la Société Générale.
Dans un monde dénormalisé, les redondances sont légion et on retrouve le code banque dans de nombreuses tables, non seulement à sa place, dans la table des banques, mais aussi dans celles des agences, des comptes, voire des mouvements sur compte...
Et là, c'est le drame, à l'occasion d'une fusion il faut renuméroter des millions voire des milliards de lignes, là où, avec un modèle normalisé, seule une ligne dans la table des banques aurait été impactée.
On a donc non seulement de la redondance (coût de stockage et de mise à jour augmenté, risque d'incohérence), de la performance dégradée (nombre de mises à jour augmenté en très forte proportion), de la complexité augmentée (pour la même raison) et des coûts humain considérables lors des fusions ou d'opérations similaires de modification en masse.
On pourrait reprendre cet argumentaire avec la propagation des SIRET, chose assez courante elle aussi, dans le modèle de données ou tout autre cas de redondance.le 02/05/2023 à 14:37 -
fsmrelExpert éminent séniorBonsoir,
Envoyé par Michka1111
Oui, vous nous avez expliqué cela en long et en large. Nous sommes patients, mais le sujet concerne la théorie relationnelle (cf. le chapitre 7 de l’ouvrage de Ullman), avec la modélisation ullmanienne aboutissant à une vue universelle, à confronter avec la modélisation E/R. Les data warehouses et leurs modèles sont donc ici hors sujet.Envoyé par Michka1111 Le professeur P donne le cours C à l’heure H dans la salle R.
Ce qui donne lieu à la jointure COURSCHR (encapsulée dan la vue THR_V).
De même, si l’on veut faire intervenir les étudiants, le prédicat est le suivant :L’étudiant E suit le cours C à l’heure H dans la salle R.
Ce qui donne lieu à la jointure SHRCHR ETUDIANT (encapsulée dans la vue CHS_V).
De la même façon, on peut aussi mettre en oeuvre le prédicat :L’étudiant E suit le cours C donné par le professeur P à l’heure H dans la salle R.
Etc.Envoyé par Michka1111
Vous nous lassez avec votre bavardage. Appliquez la proposition numéro 7 du Tractatus de Wittgenstein et étudiez la 6NF puisque vous l’évoquez.Envoyé par Michka1111
Grotesque et puéril.Envoyé par Michka1111
Je ne dis pas que Kimball est incompétent, je dis qu’il n’apporte pas la moindre preuve quant à ses affirmations :« The normalized structures must be off -limits to user queries because they defeat the twin goals of understandability and performance. »
Ce qui relève donc de l’incantation.
Quand on affirme, il faut étayer. Comme je l’ai précédemment signalé, voyez par exemple ici.
Je reprends ce que ‘ai précédemment écrit :Envoyé par fsmrel Envoyé par Michka1111
Je vous parle de la performance des bases de données, exemple : CPU Time = 00:32:23 ; I/O Time = 20:50:17.
Et pour vous la performance se mesure en nombre de livres vendus et au CA de la société !
Par ailleurs j’ai évoqué le volet « intégrité des données », et ça n’est pas le moindre. Deux exemples parmi d’autres :
Le DI d’une grande société d’assurance me disait que si sa base de données n’était pas intègre, ça se serait su. J’ai néanmoins expertisé cette base de données, et au résultat, preuves à l’appui : 30% d’erreur... Ses équipes ont passé un an pour corriger ça...
Un autre exemple : chez une mutuelle qui nous paye nos compléments de retraite. Opération lourde, à savoir la migration de l’ancien au nouveau système. Je fis observer que l’intégrité référentielle n’avait pas été prévue, mais on me rétorqua que les contrôles avaient été prévus dans les programmes, donc pas de souci à se faire. Une fois l’opération effectuée, vous connaissez mon scepticisme, j'ai vérifié et constaté la perte de 800 000 périodes de carrière. Dommage pour les futurs retraités ainsi lésés... Panique à bord et décision fut prise de recommencer avec mise en oeuvre de cette fameuse intégrité référentielle...
Dans les deux cas, cela n’empêche certainement pas de faire de la BI, on n’est pas à 800 000 périodes de carrière près, mais mettez-vous à la place des futurs retraités...Envoyé par Michka1111
Bien sûr ! Une anecdote : j’ai déjà débattu de la normalisation avec l’Université. Par exemple, dans les années quatre-vingts, un de ses professeurs avait créé un système expert pour la conception des bases de données (thèse de doctorat). Ce système fut commercialisé et j’en fis l’acquisition. Dans le titre de l’ouvrage l’accompagnant, il était précisé que le système permettait de normaliser en 4NF. J’avais alors constaté que les dépendances multivaluées étaient passées sous silence, or elles interviennent dans la définition de la 4NF (voyez le paragraphe 1-3-6-6 de l’article). Je conçus un modèle où la 4NF état violée. J’en fis la démonstration lors d’une présentation du système au public : la thésarde qui m’avait pris en charge paniqua... Dans la version suivante, le terme « 4NF » fut remplacé par celui de « BCNF ». Le père du système ne m’en voulut évidemment pas et nous devînmes amis. Qui plus est, par la suite il prenait ma défense quand, par exemple un auteur contestait mes positions : « Si François te l’a dit, prends en compte ses remarques ».
Pour vos autres commentaires, sachez que j’en reste à mes acquits. Que les applications OLAP et compagnie exploitent une base de données du type gigo (garbage in, garbage out), allez vanter leurs avantages à l’assureur et à la mutuelle dont j’ai parlé (qui ne sont pas les seuls ayant dû nettoyer à grands frais leurs base de données), escartefigue me comprendra.le 04/05/2023 à 3:37