IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes Discussion :

[FORME NORMALE ETENDUE] Exemple pertinent de MCD avec tables contenant champ multivalué


Sujet :

Méthodes

  1. #1
    Membre habitué
    Avatar de martinbrait
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Points : 131
    Points
    131
    Par défaut [FORME NORMALE ETENDUE] Exemple pertinent de MCD avec tables contenant champ multivalué
    Bonjour, experts du forum.

    Pour toujours progresser dans la conception d'une base de données, je lis régulièrement les ressources du domaine SGBD.
    Un rappel des règles de conception m'a interloqué, proposant d'introduire des champs multivalués.

    Citation Envoyé par laurent audibert
    https://laurent-audibert.developpez....relationnelles

    3-2-3-b. Remarques sur la première forme normale
    La première forme normale impose que chaque ligne d'une relation ait une seule valeur pour chaque colonne (i.e. attribut), ce qui est justement la définition d'une table. Donc, une table est nécessairement en première forme normale au sens du modèle relationnel.
    Cependant, il faut noter que le modèle relationnel peut être étendu de manière à permettre des colonnes à valeur complexe. On parle alors de modèle relationnel étendu (NF2 pour Non First Normal Form en anglais).
    Utilisez-vous souvent des stockages multivalués, dans des colonnes à valeur complexe ?
    Avez-vous des exemples parlants, de stockages multivalués, dans des colonnes à valeur complexe ?
    Les stockages multivalués dans des colonnes complexes , sont ils compatibles avec les règles de conception MERISE ?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonsoir Martinbrait

    je ne connaissais pas ce document et j'avoue ne pas comprendre cette remarque :

    Donc, une table est nécessairement en première forme normale au sens du modèle relationnel.
    Une table est le résultat de ce qu'on a modélisé, elle n'est pas par vocation en première forme normale, je connais pléthore de cas prouvant le contraire !

    Les "colonnes à valeur complexe", je ne sais pas ce que c'est, quelques exemples de la part de l'auteur auraient éclairé ma lanterne

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par escartefigue Voir le message
    Une table est le résultat de ce qu'on a modélisé, elle n'est pas par vocation en première forme normale, je connais pléthore de cas prouvant le contraire !
    Comme tu as raison, Capitaine ! Une table est a priori un sac (ainsi on peut y trouver des lignes en double), tandis qu’une relation de la théorie relationnelle est un ensemble : les doublons sont forcément interdits.


    Citation Envoyé par martinbrait Voir le message
    Un rappel des règles de conception m'a interloqué, proposant d'introduire des champs multivalués.
    Plutôt que de champs, en relationnel parlons plutôt d’attributs (voire de colonnes en SQL). Sinon, CinePhil risque de faire les gros yeux et de vous taper sur les doigts avec son patatographe...

    Ceci dit, voici la définition de la première forme normale telle que nous la fournit C. J. Date, auteur inlassable et grand contributeur de la théorie relationnelle (définition qu’il donne par exemple dans Database Design and Relational Theory, Second Edition) :

    Definition (first normal form): 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.

    Il est évidemment sous-entendu que les tuples en double sont interdits puisqu’un relation est un ensemble. Date poursuit :

    To say it in different words, 1NF just means that each tuple in the relation in question contains exactly one value, of the appropriate type, for each attribute. Observe in particular, therefore, that 1NF places absolutely no limitation on what those attribute types are allowed to be. They can even be relation types! That is, relations with relation valued attributes– RVAs for short– are legal (you might be surprised to hear this, but it’s true). An example is given in Figure 4-1 below.

    Nom : RVA_image50pc.png
Affichages : 145
Taille : 24,7 Ko

    Notez bien que l’attribut (RVA) PQ prend des valeurs qui sont des relations, lesquelles ont donc nécessairement un en-tête (en l’occurrence {PNO, QTY}).

    Par contraste, dans le cas de l’extension NF² on sort carrément du cadre de la théorie relationnelle proprement dite. Par exemple, dans Verso, système orienté NF², au paragraphe II.1 l’attribut BOOK prend des valeurs qui ne sont pas des relations au sens habituel, car dépourvues d’en-tête.
    Les auteurs se départissent volontairement de la première forme normale.

    A juste titre Verso peut interloquer le partisan de la modélisation traditionnelle... Pour plus d’information au sujet du rejet de la NF² par la théorie relationnelle orthodoxe, celle à laquelle j’adhère, je vous renvoie aux paragraphes 2.2. 2.3. et 2.6. de mon article Bases de données relationnelles et normalisation : de la première à la sixième forme normale. (A noter que la mise en forme de l’article a été massacrée par quelqu’un ayant certainement de bonnes intentions, mais qui aurait mieux fait de s’abstenir).

    A signaler encore une précision apportée par Date dans son ouvrage :

    Definition (normalized): Relation r is normalized if and only if it’s in 1NF.

    In other words, normalized and first normal form mean exactly the same thing– all normalized relations are in 1NF, all 1NF relations are normalized. The reason for this slightly strange state of affairs is that normalized was the original (historical) term; the term 1NF wasn’t introduced until people started talking about 2NF and higher levels of normalization, when a term was needed to describe relations that weren’t in one of those higher normal forms.

    Au passage, ne pas confondre 2NF (deuxième forme normale) et NF² (non first normal form, prononcer « NF squared »).

    Une précision concernant la distinction entre relations et relvars, en observant que dans ce qui précède, Date n’a parlé que de relations. Je le cite à nouveau :

    Observe now that all of the discussions in this section so far (the definitions in particular) have been framed in terms of relations, not relvars. But since every relation that can ever be assigned to a relvar is in 1NF by definition, no harm is done if we extend the 1NF concept in the obvious way to apply to relvars as well– and it's desirable to do so, because (as we'll see) all of the other normal forms are defined to apply to relvars, not relations. In fact, it could be argued that the reason 1NF is defined in terms of relations and not relvars has to do with the fact that it was, regrettably, many years before that distinction (I mean the distinction between relations and relvars) was properly drawn, anyway.


    Citation Envoyé par martinbrait Voir le message
    Utilisez-vous souvent des stockages multivalués, dans des colonnes à valeur complexe ? Avez-vous des exemples parlants, de stockages multivalués, dans des colonnes à valeur complexe ?
    En l’absence d’une définition pour les « colonnes à valeur complexe », à défaut servons-nous des v-relations de Verso : je réponds négativement à votre question quant à l’utilisation de ma part de ce genre de colonnes. Concernant des exemples parlants, là aussi on peut se référer aux v-relations. Par contre, concernant les RVA qui ne sont certainement pas des « attributs à valeur complexe », il m’arrive de m’en servir, mais seulement à titre d’exercice, car la manipulation de ces attributs n’est pas aisée. Je vous renvoie à ce propos à nouveau au paragraphe 2.6 de mon article, plus particulièrement au sous-paragraphe « Inconvénients des RVA ».


    Citation Envoyé par martinbrait Voir le message
    Les stockages multivalués dans des colonnes complexes, sont ils compatibles avec les règles de conception MERISE ?
    Paprick vous répondrait mieux que moi. En tout cas la normalisation au sens de Merise l’interdit. Maintenant, si vous allez vers l’orientation objet dans Merise (OOM), alors tout est possible, comme le montre son métamodèle (attributs multivalués notamment), que je fais figurer ci-dessous et que je reprends de l’ouvrage Les Objets de Mokrane Bouzeghoub, Georges Gardarin et Patrick Valduriez :

    Nom : OOM_métamodèle50pc.jpg
Affichages : 153
Taille : 58,7 Ko
    A propos de l’atomicité.  

    Les définitions de la première forme normale font très souvent usage de l’atomicité.
    Cela paraît suspect à Date qui écrit à peu de choses près ceci : hier la relation r était en première forme normale, aujourd’hui elle ne l’est plus... De fait, être atomique est temps dépendant...
    Ainsi, avec SQL, avant que la norme et les SGBD ne nous fournissent la fonction Substring, les chaînes de caractères étaient atomiques, mais avec substring on peut aller farfouiller dedans...

    Quant à l’atome lui-même (référence à Wikipédia) : avant la découverte de l’électron par Joseph Thomson (1897) et du noyau par Rutherford (1911), l’atome fut pendant 25 siècles... atomique. Puis en 1919 Rutherford mit en évidence les protons au sein du noyau. Les protons + les neutrons forment les nucléons et aujourd’hui on a les quarks et les gluons nichés dans les nucléons, et dissociables en paires quarks-antiquarks. A qui le tour ? L’atomicité a un côté Fregoli...

    Nom : Antimatter.png
Affichages : 131
Taille : 96,0 Ko


    Bon, ben, à titre d’exercice y a plus qu’à modéliser tout ça...
    Je vous renvoie à l’article dans lequel j’ai récupéré l’image : Antimatter in the proton is more down than up
    (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.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Plutôt que de champs, en relationnel parlons plutôt d’attributs (voire de colonnes en SQL). Sinon, CinePhil risque de faire les gros yeux et de vous taper sur les doigts avec son patatographe...
    Voire, pour rester dans le domaine champêtre, faire appel au grand patatoseur
    Pièce jointe 592359

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Salve,

    Excuse-moi, Capitaine, mais je suis vieux et je n’ai jamais lu une traître ligne du Concombre...
    En tout cas, j’utilisais déjà mon propre patatographe en 1965, non pas pour faire des MCD puisque Merise n’existait pas, mais des schémas pour illustrer la concurrence des entrées/sorties des fichiers. Tout ceci était ensuite repris par un dessinateur industriel pour qu’on ait des beaux dessins dans les dossiers de programmation. PaintShop n’existait pas non plus, on était des manuels bien appliqués, c’était l’bon temps...
    (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.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    J'ai moi même beaucoup utilisé le normographe, c'était un travail fastidieux à l'époque de dessiner ces diagrammes à la main et surtout de les maintenir !

    Pièce jointe 592443

    Le premier album du concombre, "les aventures potagères du concombre masqué", date de 1967. L'aventure était publiée sous forme d'épisodes dans le périodique "Pif gadget".

    Une autre époque en effet

Discussions similaires

  1. [WD23] fenêtre avec table et champ lecteur de pdf
    Par bernisch dans le forum WinDev
    Réponses: 1
    Dernier message: 06/10/2018, 09h29
  2. Jointure avec tables contenant des memes noms de champs
    Par guy2004 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/01/2010, 10h25
  3. [Normalisation] propriété calculée dans un MCD et 1ere forme normale
    Par new_wave dans le forum Schéma
    Réponses: 10
    Dernier message: 06/10/2008, 00h40
  4. 1ere ,2eme ...forme normal
    Par Melvine dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 24/05/2005, 23h05
  5. explication de définition-formes normales
    Par new_wave dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/01/2005, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo