|
Publicité ' | ||||||||||||||||||||||||
|
|
#61 |
|
Membre confirmé
![]() ![]() Inscription : décembre 2008 Messages : 460 ![]() |
Merci à tous les intervenants qui ont laissé leurs empreintes de savoir dans lequel bien du monde piochera.
Si d'autres intervenants ont des idées sur le sujet; cela ne sera pas de refus. Bien à vous tous |
|
|
00
|
|
|
#62 | |||||||||||||||||||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 710 ![]() |
Bonsoir,
Citation:
Et merci de respecter l’orthographe, vous ne facilitez pas la lecture. Veuillez présenter les arguments vous permettant de pointer les défauts que vous relevez et ne pas vous contenter de dénigrer gratuitement. Présentez des solutions d’amélioration visant à l’enrichissement et à l’évolutivité du MCD. Que sont un composant ainsi qu’une logique de composants dans le contexte de l’élaboration de cette abstraction qu’est un MCD (Modèle Conceptuel de Données), objet de la discussion ? S’il s’agit des composants au sens UML (programme source, compilé, fichier de données, etc.) cet inventaire à la Prévert est hors sujet. C’est à la Direction de la Production informatique de l’entreprise de prendre ces choses en charge, en collaboration avec les équipes de développement. Un MCD ne traite que de l’univers du discours (l’entreprise). Citation:
Citation:
1) Si un objet est quelque chose qui évolue qui dans le temps, alors c’est une variable au sens des langages de programmation, au même titre que la variable X, déclarée dans un programme P : au fil du temps, si X est par exemple du type entier, alors cette variable accueille successivement des valeurs qui sont des nombres entiers 1, 2, 3, etc. Ces nombres ne se situent ni dans le temps ni dans l’espace, mais on les fait apparaître par le truchement de X qui joue le rôle de médium.A son tour, une entité-type E est une abstraction, en l’occurrence un type. Lors du passage au MLD (disons dans le cadre du Modèle Relationnel de Données), à cette entité-type on fera correspondre une variable relationnelle (relvar) E qui sera du type RELATION {A1 T1, A2 T2, ..., An Tn} (où Ai est un nom d’attribut et Ti le type de cet attribut) et qui prendra des valeurs de relations de ce type (relations pour abréger, êtres mathématiques fort intéressants qui bien entendu ne se situent ni dans le temps ni dans l’espace, puisque ce sont des constantes). Et bien entendu, le type RELATION {A1 T1, A2 T2, ..., An Tn} hérite de tous les opérateurs de l’algèbre relationnelle. Citation:
Quant au relationnel, c'est-à-dire la théorie relationnelle, commencez par l’étudier avant de parler de ses limites (à moins que vous ne soyez en mesure de les énumérer ici, de façon claire et objective). A toutes fins utiles, je vous renvoie à l’ouvrage de Date et Darwen : Databases, Types, and the Relational Model The Third Manifesto. Attention, il s’agit d’une étude très formelle, ramassée dans plus de 500 pages. Cela dit, que veut dire « penser en relationnel », sinon raisonner sur des ensembles (au sens de la théorie des ensembles), tant du point de vue structurel qu’algébrique ? Ou encore raisonner sur des prédicats, au moyen de la logique du 1er ordre et du calcul relationnel de tuples (ou de domaines) ? Citation:
Dans le 1er cas, au nom de l’iindépendance physique, il n’y a pas de correspondance à établir entre les objets physiques et les entités mathématiques que sont le relations de la théorie relationnelle. Ainsi, entre une variable relationnelle (une table pour parler informellement) et un fichier il n’y a pas bijection : les relations (les valeurs prises par la variable relationnelle) peuvent être hébergées par plusieurs fichiers et un fichier peut héberger plusieurs relations de types différents. Cela reste sous le capot. De même, un n-uplet d’une relation n’a pas à correspondre à un enregistrement physique dans un fichier. Un n-uplet est lui aussi un être mathématique qui n’a pas à être contraint par l’organisation sous le capot. Ne cherchons pas à établir une quelconque correspondance entre la logique du 1er ordre et le fer à souder. Dans le 2e cas, la production d’un MLD à partir d’un MCD est de préférence confiée à un AGL, mais elle est à vérifier et compléter par le DBA : opportunité de la mise en œuvre de variables relationnelles dans le cas des cardinalités 0,1 (notamment en ce qui concerne les associations-types réflexives), complétude des clés candidates d’une variable relationnelle, des dépendances fonctionnelles et multivaluées, des dépendances de jointure (y compris les dépendances de jointure généralisées), normalisation en cinquième forme normale (voire sixième dans le cas des données temporelles), définition des tables virtuelles (vues), définition des contraintes de base de données, de relation, d’attribut, de type. Etc. De même, certaines entités-types du MCD n’ont pas à faire l’objet de variables relationnelles, par exemple l’entité-type DATE qui ne fait que l’objet d’attributs de type DATE ou TIME, ou TIMESTAMP, etc. Quant à chercher une correspondance 1:1 entre un MCD et un MLD, on ne la trouvera pas, sauf peut-être dans des cas de figure simples. Citation:
Par ailleurs, le pilotage des événements ne concerne pas le MCD (c'est-à-dire le QUOI), mais le MCT (c'est-à-dire le COMMENT, le QUAND, les conditions de déclenchement et toutes ces sortes de choses). Un MCD décrit l’univers su discours, c’est un ensemble de prédicats au sens de la logique du 1er ordre. L’architecture distribuée est étrangère au sujet. Là encore, d’un point de vue MCD et MLD, on ne voit qu’un univers du discours pour le 1er, une base de données pour le 2e, même si dans ce 2e cas, d’un point de vue opérationnel, tout cela repose en fait, de façon transparente, sur plusieurs bases de données, gérées par plusieurs SGBD sur plusieurs machines. Encore une confusion des genres. Citation:
Par la suite, le concepteur du MCD et le DBA affecté au domaine (voire une équipe de DBA) ont un certain nombre d’entretiens avant que celui-ci ne produise le MLD (puis le MPD). Suite aux observations du DBA, le MCD utilisé pou la dérivation peut subir des modifications : révision des identifiants (qui ne doivent être composés que d’attributs artificiels ad-hoc, je vous renvoie une fois de plus à l’ouvrage de Tabourier, De l’autre côté de MERISE, page 81), typage des données, normalisation en BCNF, vérification des associations-types ternaires (et plus), pour voir si elles ne violent pas la quatrième forme normale, recherche des contraintes (notamment temporelles) qui peuvent être sous-traitées au SGBD, mise en œuvre des tables virtuelles (vues) en relation avec la spécialisation des entités-types, etc. Quant à prendre en compte le langage SQL quand débute la conception, c’est non. Ça n’est que lorsqu’on en arrive aux entretiens avec le DBA que celui-ci peut attirer l’attention sur les conséquences des choix de modélisation et ainsi faire réfléchir le directeur de projet qui peut revenir sur tel ou tel choix. Il arrive que certains aient la double casquette : concepteur et DBA, mais ça n’est pas pour autant qu’en tant que concepteur il faille s’adresser aux autres membres des équipes de conception en termes relationnels, tout en ayant en tête la théorie relationnelle qui permet d’éviter certaines erreurs de conception. A titre d’exemple, quand j’ai fait des remarques au débutant, je lui suggérais de normaliser en quatrième forme normale, mais sans le lui dire brutalement. Quant à dire que le MPD (ou plutôt le MLD) « est la représentation technologique du MCD », c’est un peu court. Cette représentation « technologique » est à valider, évaluer à l’aune de la théorie relationnelle et la faire évoluer en conséquence. Citation:
Quant aux événements (au sens fonctionnel), s’ils doivent eux aussi faire l’objet d’un domaine, pourquoi pas, mais si leur traitement peut être complexe, cela ne doit pas avoir d’incidence sur le MCD, sinon ça n’est pas un MCD. Que l’on prenne en compte — suite à événements — les modifications portant sur une entité-type (par exemple le changement de dénomination d’une entité juridique, son changement de NAF, de régime fiscal, de catégorie juridique, etc.) ceci reste simple à représenter dans le MCD quand on sait distinguer les données actives des données historisées et qu’on ne fourre pas tout dans le même sac. (En cela, la connaissance de la sixième forme normale n’est pas inutile). Citation:
Quant à « l’anémie » des MCD et de leur « risque d’adhérence élevé », les participants et les visiteurs de ce forum doivent se perdre en conjectures, sauf peut-être s’ils s’appellent Sganarelle. Isn't it a little fuzzy? Il est vrai que certains « top models » paraissent anémiés et que certains modèles de pneumatiques peuvent manquer d’adhérence au sol, mais à part cela... Citation:
Conclusion : il vous reste donc plus qu’une seule chose à faire : vous retirer (sur la pointe des pieds). Citation:
Citation:
Citation:
Ceci dit, quelle alternative proposez-vous à la validation des dossiers ? Que faire pour s’assurer que les règles de gestion des données soient réputées valides ? Merci de nous éclairer de vos lumières (qui pour le moment éteignent). Citation:
Cela dit, un MCD est malgré tout un excellent moyen de communication, et comme je l’écrivais dans un message précédent : « Le MCD doit être crédible et clair, au point que la MOE et les équipes de développement décident d’afficher au mur les vues qui les concernent, plutôt que de s’en servir comme de ballons de basket, la poubelle jouant le rôle de panier. »Maintenant, si le MCD ne suffit pas, on peut se référer à ses compagnons, le MCT (Modèle Conceptuel de Traitement) et le MCC (Modèle Conceptuel de Communication). Citation:
Une fois de plus vous mélangez complètement les niveaux, vous amalgamez abstraction (modélisation des données) et réalisation (SQL). Citation:
Citation:
Je rappelle une fois de plus qu’on urbanise un univers du discours en domaines, sous-domaines, etc. Un projet de refonte du SI d’une entreprise importante (je sais de quoi je parle) entraîne nécessairement l’urbanisation, donc la modélisation de plusieurs domaines, ce qui a notamment pour objet d’éviter une réalisation complexe et lourde qui se traduirait par la mort du projet. Et cela a pour effet que l’on constitue des équipes homogènes, de taille raisonnable, tant côté informatique que MOE. Citation:
Rassurez-vous tout cela fait largement plus que seulement deux personnes connaissant le sujet... Citation:
« ... la fonction d’une propriété est de décrire les objets (et les rencontres), alors que l’identifiant ne décrit rien. Son rôle fondamental est d’être sûr de distinguer deux jumeaux parfaits, malgré des descriptions identiques.Tabourier a tiré les leçons du passé et nous demande quelque part d’avoir en mémoire ce que Goethe, Winston Churchill, George Santayana, Thomas Mann, et d'autres ont écrit : Ceux qui ont oublié le passé sont condamnés à le revivre.Je répète pour ma part qu’au niveau MCD, la plaque d’immatriculation (qui correspond à une propriété naturelle) ne peut faire l’objet que d’un identifiant alternatif (donc d’une clé alternative lors du passage au niveau base de données) et que l’identifiant d’une entité-type (donc la clé primaire d’une table au niveau base de données) ne décrit rien. L’utilisateur ne doit connaître que les propriétés naturelles, l’identifiant lui est caché. La plaque d’immatriculation ne figure qu’une fois dans l’univers du discours, donc dans la base de données qui en sera inférée. En ce qui le concerne, une fois traduit sous forme de clé primaire, l’identifiant sera propagé autant de fois qu’il y aura de contraintes référentielles dans lesquelles il est impliqué. C’est une question de bon sens que de ne lui associer aucune signification quelconque. Sa mission sera de garantir l’intégrité de la base de données (intégrité d’entité, intégrité référentielle), pas de décrire. Ensuite, au niveau de la base de données, qu’un attribut participant à une clé primaire soit du type entier (séquentiel ou haché), timestamp (séquentiel ou haché), CHAR, VARCHAR, INTERVAL, etc., ceci est parfaitement orthogonal (indépendant) par rapport à la modélisation. Le choix définitif de ce type relève de la compétence du DBA et certainement pas du concepteur ou du développeur, qui sont plus concernés par l’aspect fonctionnel des choses. Voyez encore http://www.developpez.net/forums/d79...d/#post4635515 Citation:
Là encore, le choix du type des attributs est un problème de réalisation, pas de modélisation. Mais si, au niveau modélisation, vous avez malgré tout de très bonnes raisons de retenir le type VARCHAR plutôt que INTEGER, CHAR, ou ... NŒUD, vous aurez à convaincre le DBA (qui généralement n’est pas favorable à VARCHAR pour typer une clé).
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) 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 (Bonne lecture !) |
|||||||||||||||||||||||
|
|
40
|
Copyright © 2000-2013 - www.developpez.com