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

Access Discussion :

Normaliser les tables contenant des champs multivalu�s [Tutoriel]


Sujet :

Access

  1. #1
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut Normaliser les tables contenant des champs multivalu�s
    Bonjour,

    Les champs multivalu�s permettent d'afficher directement dans les tables, les requ�tes ou les formulaires, des listes de choix avec des cases � cocher pour s�lectionner des donn�es provenant d'une autre source :

    Nom : champs-multivalues.jpeg
Affichages : 1075068
Taille : 40,4 Ko

    Cependant, comme ces champs peuvent contenir plusieurs valeurs pour un m�me enregistrement, ils ne r�pondent pas � la premi�re forme normale de la th�orie de la normalisation, n�cessaire pour concevoir un bon sch�ma d'une base de donn�es.

    Leur utilisation dans les requ�tes comme dans le code peut ainsi sembler d�routante et ils peuvent par la suite compliquer le d�veloppement et la maintenance de la base Access.

    Comme on le constate sur le forum Access, les intervenants qui ont souvent tendance par commodit� � utiliser ce type de champ, rencontrent ensuite des difficult�s li�es � ces choix.

    J'ai donc pens� qu'il serait utile de montrer comment impl�menter une fonction permettant d'extraire les valeurs contenues dans ce type de champ pour les enregistrer dans une table interm�diaire permettant de faire le lien entre la table principale et celle qui alimente le champ multivalu� :



    R�sultat apr�s normalisation et mise en relation des tables :

    Nom : relations.jpeg
Affichages : 2491
Taille : 15,7 Ko

    Bonne lecture !
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ch�meur
    Inscrit en
    F�vrier 2018
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ch�meur

    Informations forums :
    Inscription : F�vrier 2018
    Messages : 6
    Par d�faut On y est presque !
    Bonjour,

    Confront� � ces champs multivaleurs, j'ai saut� de joie en voyant ce tuto (je m�appr�tais � lanc� un SOS sur le forum sur ce sujet), merci !

    Cependant s'il permet de repartir sur quelque chose de propre, le probl�me auquel un champ multivaleur aurait pu apporter une solution reste l�.
    Comme beaucoup de novice Access ayant � g�rer la configuration typique de l'exemple donn�, le vrai probl�me est la saisie de la correspondance id_Exam-id_Candidat pour l'utilisateur, probl�me dont les solutions (�videntes au d�butant) sont:

    -Faire plein de champs id_Candidat dans la table Examen et passer par autant de liste dans le formulaire pour la correspondance, on voit de suite qu'on a de grandes chances d'avoir des champs vides (gal�re pour les requ�tes), pas assez de champs, et un formulaire ignoble...

    -Un champ candidat multivaleur, facile � remplir avec une liste choix multiple, s'adapte par essence au nombre de candidat, bref g�nial. Seulement on se rend compte que Insert To ne marche pas pour remplir ce champ et quand on creuse le pourquoi on voit des termes tel que "abomination", "h�r�sie" ou "contre-nature" sur les champs multivaleurs que l'on fini par comprendre.

    -Une table jonction qui semble �tre la bonne pratique, comme dans l'exemple de ce tuto, mais comment la remplir par formulaire ? A ce jour, je ne vois qu'une liste � choix multiple sur les id_candidat trait�e par VBA pour alimenter la table jonction, l� le probl�me sera solutionn�. Je pense que les manipulations d'objets de ton code vont beaucoup m'aider (je suis plut�t Excel, les objets Access c'est autre chose) pour y arriver. Je partagerais le code si j'arrive � quelque chose de probant.

    Merci pour ce tuto !

  3. #3
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Bonjour et merci,

    Concernant la saisie des correspondances dans la table interm�diaire, je vous donne quelques liens pour faciliter la mise en place de ces formulaire/sous-formulaire de saisie bas�s sur une relation plusieurs-�-plusieurs (avec une table interm�diaire comme source du sous-formulaire) :

    Relation plusieurs-�-plusieurs

    Quelques discussions sur le m�me sujet :

    https://www.developpez.net/forums/d2...-intervention/
    https://www.developpez.net/forums/d2...urs-plusieurs/

    Cordialement.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ch�meur
    Inscrit en
    F�vrier 2018
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ch�meur

    Informations forums :
    Inscription : F�vrier 2018
    Messages : 6
    Par d�faut
    Hello !

    Merci beaucoup, je zieute �a de suite !

    Cordialement,

  5. #5
    Expert confirm�

    Homme Profil pro
    consultant d�veloppeur
    Inscrit en
    Mai 2005
    Messages
    3 048
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : consultant d�veloppeur
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 048
    Par d�faut
    Bonjour Denis,

    Tuto tr�s utile et bien con�u. Merci !

    Peut-�tre faudrait-il insister davantage sur le fait qu'utiliser des colonnes multivalu�es n'est pas recommand� et m�me � proscrire !
    Depuis 15 ans, je g�re moi-m�me mes colonnes multivalu�e gr�ce � une listView et en enregistrant les diff�rentes valeurs dans un champ texte, s�par�es par un caract�re appropri�.
    Bien s�r cela n�cessite un peu de VBA mais on ne perd pas dans une logique bricolo sans issue.

  6. #6
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Bonjour Michel,

    Oui il faut le marteler, ce type de champ est contraire aux bonnes pratiques et � ce qu'on nous enseigne, merci pour ton retour d'exp�rience
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  7. #7
    R�dacteur/Mod�rateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par d�faut
    Bonjour,

    "Champ multivalu�s" ou comment normaliser les UAG.

    En bref c'est le truc bricolopipo r�serv� � ceux qui n'y comprennent rien et qui ne veulent/peuvent pas apprendre.

    Entre �a et le PJ on se trimbale un paquet de dette technique dans certaines applis d'utilisateurs.

    Cordialement,
    D�tecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Op�rateur IN et zone de liste Op�rateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bact�riomancie

  8. #8
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Citation Envoy� par loufab Voir le message
    Bonjour,

    "Champ multivalu�s" ou comment normaliser les UAG.

    En bref c'est le truc bricolopipo r�serv� � ceux qui n'y comprennent rien et qui ne veulent/peuvent pas apprendre.

    Entre �a et le PJ on se trimbale un paquet de dette technique dans certaines applis d'utilisateurs.

    Cordialement,
    si apr�s �a ils n'ont pas compris
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ch�meur
    Inscrit en
    F�vrier 2018
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ch�meur

    Informations forums :
    Inscription : F�vrier 2018
    Messages : 6
    Par d�faut
    Hello,

    Bien dit Loufab, les multivalu�s c'est pour les d�biles ou les glandeurs, c'est �vident !
    L'option 1 fait penser � un �go qui parle et pourquoi pas, mais je ne comprends pas la proposition num�ro 2 qui ressemble a une contradiction... Uag fait r�f�rence � la g�n�tique ? Et PJ ? Pour le coup un petit �talage de science permettrait de mieux te comprendre, on ne maitrise pas tous le vocabulaire de ce forum.

    Avant que tu ne me ranges dans une de tes bonnes cases, il y a une troisi�me possibilit�: effectivement on est pas un crack des bases de donn�es mais on a un but et on cherche des solutions, et de prime abord un champs multivalu� semnle pas mal, �a �vite la cr�ation d'une table et surtout �a peut tr�s facilement �tre remplie avec une liste sous forme de case � cocher. J'imagine que comme moi on se pose des questions quand Access refuse de faire un Insert To sur ce type de champ.

    @User: pas mal l'exemple de https://denishulo.developpez.com/tut...s-a-plusieurs/, je vais quand m�me essay� de creuser un peu l'interface, dans mon cas c'est comme si un exam avait des sous-exam et des personnes rattach�es � ces sous-exam. J'aimerais �viter que ce soit une purge � remplir, mais merci pour les ressources !

  10. #10
    R�dacteur/Mod�rateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par d�faut
    Bonjour -Animabis-,

    Un temps je me suis dit qu'un message st�rile emm�nerai forc�ment une r�ponse st�rile, mais pour le bien de la communaut� voici mon point de vue technique. Entre autre...

    Tout d'abord ceux qui me connaissent savent que je ne range personne dans des cases. Si ils y sont c'est qu'ils s'y placent d'eux-m�mes.

    Je vais donc tenter d'�tre le plus pr�cis possible pour �viter le moindre doute, interpr�tation et surtout raccourci gratuit.

    Concernant les "veulent/peuvent pas".
    Le vocable "d�biles" que tu associes aux "peuvent pas" n'engage que toi. Pour moi les "peuvent pas" sont simplement des utilisateurs qui ont besoin d'�tre guid�s vers les bonnes pratiques. Le chemin peut �tre long, difficile, obscur mais si ils ont la volont� de s'informer et de progresser, ils y arriveront. Il y a assez de tutos et de b�n�voles sur Developpez qui vulgarisent les m�thodes. Tout l�int�r�t de ce forum en somme.

    Avec les "veulent pas" c'est tout � fait diff�rent. Ils ont �lev� le "Quick & Dirty" en v�ritable art de la programmation et cr�ent des "Usines � Gaz" (L'UAG n'est pas que c�t� IHM, on le retrouve aussi c�t� code, comme base de donn�es) en passant s'�conomiser du temps... D'ailleurs certains poussent l'�conomie de temps � faire faire leur boulot par la communaut� (si si �a existe - il y a m�me des salari�s dans le lot) A noter que les "peuvent pas" sont d�j� � la recherche de la signification de "Quick & Dirty" alors que les "veulent pas" souhaitent qu'on se transforme en Docteur-es-tartine (google est ton ami Docteur-es-tartine).

    Ce que tu affirmes ici est tout � fait louable et j'y souscris totalement :
    ...on est pas un crack des bases de donn�es mais on a un but et on cherche des solutions...
    Et m�me ceci quand on se sent "peuvent pas" :
    ...et de prime abord un champs multivalu� semnle pas mal...
    Donc oui �a semble pas mal mais jusqu'� un certain point. D'abord l'insert et la r�daction des requ�tes en g�n�ral (cf le tuto de 2016 de Christophe Warin https://warin.developpez.com/access/...sererValeurSQL - Google "champ multivalu�" la premi�re ligne) puis le fait d'utiliser un composant sp�cifique d'un moteur de base de donn�es, quel qu'il soit, rend captif de celui-ci.
    Microsoft Access n'est pas une base de donn�es ! Si cela te semble obscur je donne le lien : http://blogaccess.free.fr/?p=354

    Mais choisir le multivalu� pour les raisons suivantes c'est dommage :
    ...�a �vite la cr�ation d'une table et surtout �a peut tr�s facilement �tre remplie avec une liste sous forme de case � cocher...
    ...J'aimerais �viter que ce soit une purge � remplir...
    2 tables, un formulaire en mode continu et on ne laisse pas une belle enclume pour ceux qui viendront apr�s.

    Les PJ :
    Comme toujours les "peuvent pas" ont d�j� trouv� la signification de ce mot barbare (sinon c'est Google >> Ms Access PJ).
    Avec les PJ non seulement on se rend captif du moteur ACE (bigre ! comme le champ multivalu� ?!), mais on prend des risques avec des fichiers de donn�es qui peuvent rapidement d�passer les 2 Go (pour ceux qui pensent que scinder les bases est un solution, arr�tez de penser � court terme !). Mais c'est vrai que l� aussi "�a semble pas mal" et "�a �vite" de perdre du temps � faire un truc propre, perenne, s�cure et portable et si on est pas regardant sur ce qui n'est pas document� explicitement. Ce probl�me n'est pas nouveau, il y a une tr�s large litt�rature sur le sujet depuis son introduction et ce n'est pas propre � ACE (Google>>> Ms Access ACE -1er lien non commercial) tous les moteurs de bdd posent des warnings sur le sujet.

    Tout ce qu'il faut retenir c'est que choisir la facilit� (PJ, Champ Multi) a toujours un prix. User et en abuser n'est pas un crime. Quand on en fait le choix d�lib�r�ment il faut le faire en connaissance de cause et surtout ne pas s'�tonner des limitations ou se vexer quand se voit opposer, � juste titre, que c'est un truc bricolopipo pour les "peuvent/veulent pas". D'ailleurs si ce n'est pas le cas, � quoi peu bien servir ce tuto ? La r�ponse est dedans : https://denishulo.developpez.com/tut...ser-tables/#LI ou encore celui-ci https://denishulo.developpez.com/tut...s-a-plusieurs/ qui y figure en lien.

    Pour conclure je pense que le "Quick & Dirty" semble avoir de beau jour devant lui et contribue d'enfoncer toujours plus loin Ms Access dans sa mauvaise r�putation.

    Cordialement,
    PS : Ceci n'est que mon avis, je n'oblige personne � y souscrire ni d'ailleurs � en faire une interpr�tation ou faire des raccourcis.
    (Humour, Second degr�s mais �galement premier sont pr�sents dans cette non-r�ponse )
    D�tecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Op�rateur IN et zone de liste Op�rateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bact�riomancie

  11. #11
    Expert �minent
    Avatar de fsmrel
    Homme Profil pro
    Sp�cialiste en bases de donn�es
    Inscrit en
    Septembre 2006
    Messages
    8 218
    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 218
    Billets dans le blog
    16
    Par d�faut A propos de la 1NF
    Bonsoir User,

    Citation Envoy� par User
    comme ces champs peuvent contenir plusieurs valeurs pour un m�me enregistrement, ils ne r�pondent pas � la premi�re forme normale de la th�orie de la normalisation, n�cessaire pour concevoir un bon sch�ma d'une base de donn�es.
    Vous avez �videmment parfaitement raison de faire �voluer la structure de la table initiale, T_Examen, pr�sent�e dans votre 1er post, pour aboutir aux trois tables, T_Examen, T_Candidat, T_Inscription_Examen.

    Une remarque toutefois : la table initiale T_Examen respecte la premi�re forme normale (1NF) !

    En effet, selon la th�orie relationnelle, la valeur de l�attribut Inscrits est celui d�une une RVA (Relation Valued Attribute) et T_Examen une relvar (variable relationnelle).

    La 1NF n�impose aucune limitation quant aux types des attributs, donc le type Relation est l�gal.

    Cela peut para�tre surprenant, mais je vous renvoie aux ouvrages de C. J. Date, compagnon d�armes de E.F. Codd :

    Relational DATABASE, Writings 1991-1994, au chapitre 8,

    Database Design and Relational Theory Normal Forms and All That Jazz (Apress. 2019).

    Dans cet ouvrage, la 1NF est d�finie de fa�on tr�s rigoureuse :

    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).

    Attention, une relation est bien ici une valeur de relvar.

    Accessoirement, en 2008, j�avais pondu pour developpez.com un article : Bases de donn�es relationnelles et normalisation : de la premi�re � la sixi�me forme normale, article dans lequel j��voque les RVA et bien s�r l��volution de cette ch�re 1NF.

    D�sol� pour le d�rangement...

  12. #12
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Merci � vous pour cette pr�cision
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  13. #13
    Expert �minent
    Avatar de fsmrel
    Homme Profil pro
    Sp�cialiste en bases de donn�es
    Inscrit en
    Septembre 2006
    Messages
    8 218
    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 218
    Billets dans le blog
    16
    Par d�faut
    Bonjour User,


    Pardonnez-moi d�abuser de votre patience... Vous avez bien entendu tout � fait raison d�insister sur la normalisation des tables (ou plut�t des relations dans le cadre de la th�orie relationnelle). Eu �gard � la th�orie, j�apporte quelques pr�cisions � propos de la premi�re forme normale (1NF), quitte � redonder avec ce que j�ai �crit dans mon pr�c�dent message (post #11).  

    Au vu de l�attribut Inscrits de la table T_Examen (cf. le post #1), vous �tes en phase avec E.F. Codd - p�re de la th�orie relationnelle - pour qui cette table viole la 1NF. Je rappelle � ce propos la d�finition qu�il en donna en 1971 (cf. [Codd1971], page 31) :

    A relation is in first normal form if it has the property that none of its domains has elements which are themselves sets.

    Codd pr�cise ce qu�est une relation (cf. [Codd1969], [Codd1970]) :  

    The term relation is used here in its accepted mathematical sense. Given sets S1,S2, ..., Sn (not necessarily distinct), R is a relation on these n sets if it is a set of n-tuples each of which has its first element from S1, its second element from S2, and so on. We shall refer to Sj as the jth domain of R.

    Ainsi, une relation est bien un ensemble, et Jeff Ullman ([Ullman1982] page 235) conclut que � relation ï¿½ et � relation en 1NF ï¿½ sont synonymes, donc autant faire l��conomie du qualificatif � 1NF ï¿½ : Ullman passe � juste titre un coup de rasoir d�Ockham. Il est en phase avec C. J. Date, qui dans son dictionnaire relationnel [Date2015] �crit ceci (je traduis) :

    � Par d�finition, toutes les variables relationnelles sont en premi�re forme normale, 1NF. Appliqu�s � une variable relationnelle les termes 1NF et normalis�e veulent dire la m�me chose.

    En passant, une variable relationnelle (relvar) est une variable dont les valeurs sont des relations.

    Quant � la table SQL (cf. [Date2019], page 69), elle doit respecter les contraintes suivantes pour m�riter le label relation :

      ï¿½  elle ne doit pas contenir de lignes en double (ce qui est garanti par la d�claration d�une cl� primaire, sinon la table n�est qu�un sac (bag)) ;
      ï¿½  les colonnes n�ont pas � �tre ordonn�es (sous-entendu de gauche � droite) ;
      ï¿½  les lignes n�ont pas � �tre ordonn�es (sous-entendu de haut en bas) ;
      ï¿½  les colonnes sont r�guli�res, ce qui veut dire ceci :
         (a)  chaque colonne a un nom et deux colonnes de la table ne doivent pas avoir le m�me nom,
         (b)  une colonne ne peut �tre � cach�e � :
               =>   Il ne peut y avoir d�identifiants autres que les cl�s d�clar�es, donc pas de row id, d�object id et timestamps cach�s,
         (c)  le bonhomme NULL n�a pas sa place dans le Relationland, les colonnes doivent donc �tre d�clar�es NOT NULL.

    Il faut observer que Chris Date, coll�gue et compagnon de route d�s l�origine de Codd, et qui est la r�f�rence en ce qui concerne la th�orie de la normalisation, donne la d�finition suivante de la 1NF (cf. [Date2019], page 66), je traduis :

    Soit la relation r dont les attributs A1, ..., An, sont respectivement du type T1, ..., Tn. Alors r est en premi�re forme normale (1NF) si et seulement si, pour tous les tuples t de r, la valeur de l�attribut Ai dans t est du type Ti (i = 1, ..., n).

    Le type d�un attribut peut �tre le type RELATION et cet attribut prend alors des valeurs qui sont des relations (RVA).

    Il va de soi que Date d�crit les op�rateurs permettant de replier/d�plier les relations (Group/Ungroup), sans violer la 1NF. Mais il insiste sur le fait qu�au stade de la mod�lisation, il faut �viter les RVA (cf. [Date2019], page 67), ce qui veut dire que vous �tes toujours en phase avec lui quand vous recommandez d�� exploser fa�on puzzle ï¿½  la table T_Examen, m�me si selon les d�finitions de Date, cette table T_Examen est en 1NF, alors qu�elle ne l�est pas pour Codd... 

    Date dit bien que cela ne pose pas de probl�me que des r�sultats contiennent des RVA, mais, bis repetita, qu�il faut toujours �viter celles-ci dans la mod�lisation des donn�es, par exemple sous forme de hi�rarchies, comme cela se passe avec IMS, SGBD amiral d�IBM des ann�es 70-80 (pour avoir beaucoup utilis� IMS, je plaide un peu coupable , tout en ayant us� de tous les moyens techniques possibles pour respecter la sym�trie, mais ceci est une autre histoire...) En effet, de par leur nature asym�trique, les mod�les hi�rarchiques forcent � complexifier bien des requ�tes a priori simples (cf. [Date2012] page 295). Pour l�anecdote, afin qu�en ces temps lointains IMS ne soit pas p�nalis�, Date avait �t� contraint par IBM (chez qui il �margeait) d�attendre 1975 ans avant d��tre autoris� � publier son fameux An Introduction to Database Systems, �crit en 1972 (cf. [Haigh2007], pages 17-18).

    ---------------------------

    [Codd1969] Derivability, Redundancy and Consistency of Relations Stored in Large Data Banks.

    [Codd1970] A Relational Model for Large Shared Data Banks.

    [Codd1971] Further Normalization of the Data Base Relational Model.

    [Date2012] Date on Database Writings 2000-2006.

    [Date2015] The New Relational Database Dictionary.

    [Date2019] Database Design and Relational Theory Normal Forms and All That Jazz.

    [Haigh2007] Oral History of C. J. Date.

    [Ullman1982] Principles of Database Systems Second Edition (Computer Science Press. 1982

  14. #14
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Je suis un peu rassur� m�me si je ne suis pas s�r d'avoir bien saisi toutes les subtilit�s, en tout cas un grand merci pour toutes ces infos pr�cieuses pour les non-sp�cialistes comme moi

    Cordialement
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

  15. #15
    Expert �minent
    Avatar de fsmrel
    Homme Profil pro
    Sp�cialiste en bases de donn�es
    Inscrit en
    Septembre 2006
    Messages
    8 218
    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 218
    Billets dans le blog
    16
    Par d�faut
    Bonsoir User,

    Citation Envoy� par User
    Je suis un peu rassur� m�me si je ne suis pas s�r d'avoir bien saisi toutes les subtilit�s
    Soyez rassur�. Le s�rieux que vous apportez dans votre travail tr�s utile est tout � fait remarquable. Si vous avez un peu de temps � consacrer � l��tude, je vous conseille � si ce n�est d�j� fait � de vous plonger dans Looping de Patrick Bergougnoux (Paprick chez DVP), ainsi qu��plucher Database Design and Relational Theory - Normal Forms and All That Jazz.

    En tout cas, bonne route !

    Fran�ois

  16. #16
    R�dacteur/Mod�rateur

    Avatar de User
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    8 622
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par d�faut
    Un grand merci, �a nous encourage � continuer sur cette voie, et je prends aussi bonne note de vos r�f�rences
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses � consulter sans mod�ration

    Des tutoriels pour apprendre � cr�er des formulaires de planning dans vos applications Access :
    Gestion sur un planning des pr�sences et des absences des employ�s
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de donn�es Access :
    Import Fichier JSON

Discussions similaires

  1. SQL : union de 2 tables contenant des champs OLE ?
    Par kikidrome dans le forum Requ�tes et SQL.
    R�ponses: 6
    Dernier message: 01/12/2006, 20h37
  2. R�ponses: 2
    Dernier message: 07/11/2005, 18h54

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