|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 4 ![]() |
Bonjour,
Je révise mon cours sur la modélisation et la normalisation, et je ne comprends pas comment résoudre cette question : ![]() Pourquoi le schéma n'est-il pas normalisé ? Apppliquer les transformations nécessaires à l'association "participe" afin de normaliser le schéma. En cas de création d'entités ou d'associations, précisier les attributs et identificateurs des entités, ainsi que les cardinalités des associations. Remarque : un même coureur peut participer à plusieurs épreuves (par exemples "100 m haies" et "3000m steeple") lors de la même compétition. Elle n'est pas normalisée car position_arrivee est la clé externe de 3 entités en même temps ? Merci beaucoup. |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 89 ![]() |
Bonjour,
Pour ce qui est de la normalisation, son but ultime est d’arriver à un MCD valide. Il faut donc garder en tête certaines règles de conception évidentes : - Le nom d’un objet, d’une association ou d’un attribut doit être unique - Chaque objet doit posséder un identifiant - Un objet possède au moins une propriété - Une association peut ne posséder aucune propriété - Les propriétés ne doivent pas être redondantes Aussi, pour l'association ternaire, cela dépend de l'ensemble de tes règles de gestion. Le sujet suivant devrait te permettre de trouver une ou deux pistes : http://www.developpez.net/forums/d58...ons-ternaires/ |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Bonjour REALIZE et Gannox,
Je me permets de m'immiscer, Gannox... Les spécialistes "merisiens" d'apporteront, sans doute, des éclaircissements précieux sur la théorie pure (CinePhil, Fsmrel, ...). Pour ce cas particulier, je dirais que ce schéma ne spécifie, nulle part, qu'une épreuve est valide pour une compétition. Une sorte de catalogue des épreuves par compétition. Par exemple, via la ternaire, COUREUR/COMPETITION/EPREUVE, rien n'empêche d'enregistrer la position d'arrivée d'un coureur sur un "3000m steeple" dans la compétition "Open de Bercy", même si "l'Open de Bercy" n'a pas organisé de "3000m steeple"... Mais bon, je ne sais pas si c'est la réponse à l'exercice (ou ce qui en découlerait). Néanmoins, concrètement, il me semble qu'il faut bien définir des couples COMPETITION/EPREUVE quelque part (de même que COUREUR/COMPETITION, via une inscription de l'équipe et/ou du coureur, mais c'est une autre histoire...).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 4 ![]() |
Merci pour ta réponse.
C'est surtout cette remarque qui me gene. Citation:
|
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 855 ![]() |
Nous avons évoqué :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Bonsoir,
La question porte-t-elle sur la normalisation au sens de Merise ? au sens du Modèle Relationnel de Données ? Comme vous présentez un MCD, on va supposer dans un 1er temps qu’il s’agit de la normalisation au sens de Merise. Dans ce cas-là, l’association-type PARTICIPER n’est pas normalisée si l’on démontre que la propriété Position_arrivée ne dépend que d’un sous-ensemble des entités-types participant à cette association-type (c’est en fait une paraphrase de ce que l’on appelle deuxième forme normale selon le Modèle Relationnel de Données (alias théorie relationnelle)). Pour des raisons de confort et au besoin prendre en compte les sauteurs et lanceurs, je renomme COUREUR en ATHLETE. Les sous-ensembles candidats sont les suivants : E1 - {ATHLETE, COMPETITION},Prenons l’exemple tout à fait fictif suivant : L’athlète Albert a participé aux Jeux du Relationland de 1994, où il a terminé 7e de la finale du 100 mètres et 8e au 110 haies, tandis que son co-équipier Bernard y a terminé 3e du 100 mètres. Albert a aussi participé Jeux du Relationland de 1999 où il a terminé 5e du 100 mètres.E1 ne suffit pas pour déterminer une place à l’arrivée, puisqu’aux Jeux de 1994 Albert a fini 7e d’une part (100 mètres) et 8e d’autre part (110 haies). E2 ne suffit pas pour déterminer une place à l’arrivée, puisqu’au 100 mètres Albert a fini 7e d’une part (Jeux de 1994) et 5e d’autre part (Jeux de 1999). E3 ne suffit pas pour déterminer une place à l’arrivée, parce qu’aux Jeux du Relationland de 1994 il y avait plus d’un concurrent au 100 mètres, dont Albert et Bernard (même qu’en l'absence d'Usain Bolt encore un peu trop jeune, ils étaient 8 en finale à se disputer la 1re place...) A l'aide de ces contre-exemples, on voit qu'au sens de Merise l’association-type PARTICIPER est normalisée. Cela dit, l’exemple proposé est vicieux, car l’identifiant de l’entité-type COMPETITION est composé de deux propriétés, le nom de la compétition et l’année à laquelle elle s’est déroulée. Autrement dit, en Merise l’année devrait être « expulsée » de cette entité-type et faire l’objet d’une entité-type ANNEE de plein droit (n’en déplaise à Richard pour qui la paire {COMPETITION, ANNEE} constituerait un catalogue, mais ceci est parfaitement orthogonal au problème qui nous occupe). Mais même dans ces conditions, l’association-type PARTICIPER (qui passe du statut de ternaire à celui de quaternaire) est normalisée, ce qu’on peut montrer. Pour des raisons de confort, je renomme ANNEE en DATE. Les entités-types parties prenantes sont les suivantes : COMPETITION, DATE, EPREUVE, ATHLETE. Partant de là, on peut échafauder le tableau suivant : Code :
Si je n’en oublie pas, les sous-ensembles (au moins les triples) sont les suivants : E11 - {COMPETITION, DATE, EPREUVE}, E12 - {COMPETITION, DATE, ATHLETE}, E13 - {COMPETITION, EPREUVE, ATHLETE}, E14 - {DATE, EPREUVE, ATHLETE}. Au sens Merise, E11 ne suffit pas pour normaliser l’association-type PARTICIPER : Pour la valeur <Jeux du Relationland, 1994, 100 mètres> on a plus d’une valeur pour la propriété Place (même qu’en réalité, il y avait 8 places...)E12 ne suffit pas pour normaliser l’association-type PARTICIPER : Pour la valeur <Jeux du Relationland, 1994, Albert> on a plus d’une valeur pour la propriété Place (100 mètres et 110 haies).E13 ne suffit pas pour normaliser l’association-type PARTICIPER : Pour la valeur <Jeux du Relationland, 100 mètres, Albert> on a plus d’une valeur pour la propriété Place (1994 et 1999).E14 ne suffit pas pour normaliser l’association-type PARTICIPER : Pour la valeur <1994, 100 mètres, Albert> on a plus d’une valeur pour la propriété Place (7e aux Jeux du Relationland et 1er aux Jeux du Meriseland).A coups de contre-exemples on peut ainsi montrer que l’association-type PARTICIPER est une fois de plus normalisée au sens Merise du terme. Je traiterai un peu plus tard de la normalisation au sens du Modèle Relationnel de Données.
__________________
_ 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 !) |
||
|
|
00
|
|
|
#7 | ||||||||||||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Suite du feuilleton...
Dans le contexte du Modèle Relationnel de Données, l’association-type PARTICIPER fait l’objet de la relvar (variable relationnelle, dont l'avatar SQL est la table) PARTICIPER : PARTICIPER {nom_competition, année, nom_epreuve, num_coureur, position_arrivée}.Pour simplifier, je renomme nom_competition en C, année en D, nom_epreuve en E, num_coureur en A, position_arrivée en P. La relvar et son en-tête deviennent : PARTICIPER {C, D, E, A, P}Pour savoir si cette relvar est normalisée, disons en BCNF (forme normale de Boyce-Codd), il faut s’assurer que le déterminant de chaque dépendance fonctionnelle non triviale constitue une clé candidate. Le quintuple {C, D, E, A, P} constitue de facto une surclé, mais il ne constitue une clé candidate que s’il est irréductible, c'est-à-dire si aucun des quadruples qui en sont les sous-ensembles n’est surclé. En conséquence, les quadruples à examiner sont les suivants : Code :
Dans une épreuve, il n’y a pas d’ex-æquo.On verra plus tard le cas où les ex-æquo sont possibles. Cas de Q1 : Le quadruple {C, D, E, P} est-il surclé ? si oui, est-il clé candidate ? Considérons le tableau suivant : Code :
DF1 : {C, D, E, P} -> {A}Puisque chaque attribut de l’en-tête de la relvar y est représenté (soit à gauche soit à droite), le déterminant {C, D, E, P} de DF1 constitue une surclé. S’il est irréductible, alors ce déterminant est clé candidate. Cherchons donc à réduire le déterminant {C, D, E, P}. Les triples que l’ont peut produire à partir du quadruple sont les suivants : {C, D, E}, {C, D, P}, {D, E, P}.{C, D, E} n’est le déterminant d’aucune dépendance fonctionnelle comme le montre l’exemple suivant : Code :
Code :
De même, le triple {D, E, P} n’est le déterminant d’aucune dépendance fonctionnelle, sinon en 1994 au 100m la place de 1er n'aurait pu revenir qu’à un seul athlète toutes compétitions confondues : si Jesse a fini 1er d’un 100 mètres en 1994, disons aux Jeux du Relationland, un autre athlète n’aurait pas eu le droit de finir 1er du 100 mètres aux Jeux du Meriseland qui eux aussi ont eu lieu en 1994. De même, si en 1994 il y a eu un 1er au 100 mètres, alors c’était à l’occasion d’une seule compétition : s’il s’agissait des Jeux du Relationland, alors c’était râpé pour les Jeux du Meriseland... Ainsi, aucun des triples {C, D, E}, {C, D, P}, {D, E, P} n’est le déterminant d’une dépendance fonctionnelle (non triviale), il en est de même a fortiori pour les paires que l’on peut en inférer. Conclusion : Le déterminant {C, D, E, P} de la dépendance fonctionnelle DF1 : {C, D, E, P} -> {A} vérifie les contraintes d’unicité et d’irréductibilité des clés candidates : il constitue une clé candidate de la relvar PARTICIPER. Cas de Q2 : Le quadruple {C, D, E, A} est-il surclé ? si oui, est-il clé candidate ? La question est celle-ci : existe-t-il la dépendance fonctionnelle DF2 : {C, D, E, A} -> {P} ? Il n’est pas possible que lors d’une compétition d’une année donnée un athlète soit classé à deux places distinctes dans une même course. Lors de la finale du 100 mètres aux Jeux du Relationland en 1994, Albert n’a pas pu être à la fois 6e et 7e : Code :
{C, D, E, A} -> {P}Comme ci-dessus, il faut se poser la question de sa réductibilité. Les triples que l’ont peut produire à partir du quadruple et qu'il faut examiner sont les suivants : {C, D, E}, {C, D, A}, {D, E, A}.On sait déjà que {C, D, E} n’est le déterminant d’aucune dépendance fonctionnelle. Reste le cas de {C, D, A} et celui de {D, E, A}. Les possibilités sont les suivantes : {C, D, A} -> {E}, {C, D, A} -> {P}, {D, E, A} -> {C}, {D, E, A} -> {P}. Le cas {C, D, A} -> {E} n’est pas possible car par exemple lors des Jeux du Relationland en 1994, Albert a légalement participé à plus d’une épreuve (100 mètres et 110 haies). Le cas {C, D, A} -> {P} n’est pas possible car par exemple lors des Jeux du Relationland en 1994, Albert a été classé à des places diverses (7e au 100 mètres et 8e au 110 haies). Le cas {D, E, A} -> {C} n’est pas possible car par exemple en 1994, Albert a couru sur 100 mètres aux Jeux du Relationland et à ceux de Meriseland. Le cas {D, E, A} -> {P} n’est pas possible car par exemple en 1994, Albert a fini 7e (c’était sur 100 mètres) et 8e (110 haies). Ainsi, aucun des triples {C, D, E}, {C, D, A}, {D, E, A} n’est le déterminant d’une dépendance fonctionnelle (non triviale), il en est de même a fortiori pour les paires que l’on peut en inférer. Conclusion : Le déterminant {C, D, E, A} de la dépendance fonctionnelle DF2 : {C, D, E, A} -> {P} vérifie les contraintes d’unicité et d’irréductibilité des clés candidates : il constitue une clé candidate de la relvar PARTICIPER. Cas de Q3 : Le quadruple {C, D, A, P} est-il surclé ? si oui, est-il clé candidate ? La question est celle-ci : existe-t-il la dépendance fonctionnelle {C, D, A, P} -> {E} ? Albert a aussi couru le 200 mètres lors des Jeux du Relationland en 1994, et comme au 100 mètres, il a fini 7e de la finale : Code :
Cas de Q4 : Le quadruple {C, E, A, P} est-il surclé ? si oui, est-il clé candidate ? La question est celle-ci : existe-t-il la dépendance fonctionnelle {C, E, A, P} -> {D} ? Albert a couru le 100 mètres des Jeux du Relationland en 1990 et en 1994, les deux fois il a terminé 7e : Code :
Cas de Q5 : Le quadruple {D, E, A, P} est-il surclé ? si oui, est-il clé candidate ? La question est celle-ci : existe-t-il la dépendance fonctionnelle {D, E, A, P} -> {C} ? En 1990 Albert a fini 7e sur 100 mètres aux Jeux du Relationland et la même année 7e sur 100 mètres aux Jeux du Meriseland : Code :
En résumé : La relvar PARTICIPER vérifie les dépendances fonctionnelles non triviales suivantes et aucune autre : DF1 : {C, D, E, P} -> {A},On peut maintenant répondre à la question : La relvar PARTICIPER respecte-t-elle la BCNF (forme normale de Boyce-Codd) ?La réponse est affirmative. Rappelons la définition de la BCNF (par exemple celle de Chris Date) : Une relvar R est en forme normale de Boyce-Codd (BCNF) si et seulement si pour chaque dépendance fonctionnelle non triviale A -> B qui doit être vérifiée par R, A est une surclé de R.Les attributs C, D, E, A, P constituent l’en-tête de la relvar et figurent tous dans DF1 : dans le déterminant pour une partie d’entre eux (à savoir C, D, E, P) et dans le dépendant pour l’autre partie (à savoir A). Le déterminant {C, D, E, P} de la dépendance fonctionnelle non triviale DF1 constitue donc une clé candidate (donc une surclé). Les attributs C, D, E, A, P constituent l’en-tête de la relvar et figurent tous dans DF2 : dans le déterminant pour une partie d’entre eux (à savoir C, D, E, A) et dans le dépendant pour l’autre partie (à savoir P). Le déterminant {C, D, E, A} de la dépendance fonctionnelle non triviale DF2 constitue donc une clé candidate (donc une surclé). DF1 et DF2 sont les seules dépendances fonctionnelles non triviales pour la relvar PARTICIPER et le déterminant de chacune d’elles est une surclé : La relvar PARTICIPER respecte la BCNF. Cas des ex-aequo On a supposé qu’il n’y avait pas d’ex-aequo dans les épreuves. On sait qu’en athlétisme c’est en fait possible, compte tenu d'un chronométrage au 1/100e. Si l’on préfère coller à la réalité et en faire une règle de gestion, alors la dépendance fonctionnelle DF1 n’existe pas et l’ensemble des dépendances fonctionnelles non triviales vérifiées par PARTICIPER est réduit à {DF2} : il n’en demeure pas moins que la relvar continue à respecter la BCNF.
__________________
_ 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 !) |
||||||||||||||||
|
|
20
|
|
|
#8 | |||||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Une dernière pour cette nuit...
Citation:
En effet, le code (en Tutorial D) pour décrire les structures est le suivant (je reprends les noms d’origine) : Relvars issues des entités-types : Code D :
Relvar issue de l'association-type PARTICIPER (clés candidates conformes aux conclusions du message précédent, selon le scénario dans lequel il n'y a pas d'ex-aequo) : Code D :
Les trois pattes de l’association-type merisienne PARTICIPER ont fait l’objet de trois contraintes référentielles, chacune exprimée par une clé étrangère. Une remarque en passant : L’excellentissime Yves Tabourier a énoncé il y a plus de 25 ans une recommandation que l’on peut élever au rang de règle d’or (De l’autre côté de MERISE page 80) : « ... 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.Vous direz à l’auteur du MCD que ses identifiants ne sont pas bien conformes...
__________________
_ 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 !) |
|||||
|
|
10
|
|
|
#9 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Bonsoir,
Voici un script permettant de faire des tests en relation avec la BCNF. A noter que je n’avais pas vu qu’un athlète (alias coureur) pouvait faire partie de plus d’une équipe, je rectifie en conséquence en ajoutant une table ATHLETE_EQUIPE, mais ceci n’a aucune incidence sur ce dont nous avons traité. J’ai conservé le type d’origine (CHAR) pour les attributs qui participent aux clés primaires, mais il est évident que pour une modélisation satisfaisante, il faudra ajouter des attributs ad-hoc, pour qu’on puisse mettre en œuvre des clés invariantes et non significatives ! Les tables : Code SQL :
Un jeu d’essai : Code SQL :
Accessoirement, je relève que, côté modélisation, il y a du mou dan la corde à nœuds. Étant donné qu'un athlète peut faire partie de plusieurs équipes, quel drapeau faire grimper en haut du mât quand un athlète est sur la plus haute marche du podium ? (Selon le MCD initial, un athlète peut faire partie de plus d'une équipe, chacune appartenant à son pays...)Et bien entendu, tout en étant a priori indépendantes, orthogonales à la normalisation des tables, les observations de Richard sont à prendre en compte (cas par exemple du catalogue des compétions et épreuves). Bref il reste encore du boulot côté modélisation.
__________________
_ 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 !) |
||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com