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

Schéma Discussion :

precision sur l'heritage


Sujet :

Schéma

  1. #61
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Fsmrel et Diengkals,

    Sauf votre respect à tous les deux, la partie :

    me semble fondamentale ! Elle apparaît à tous les coins de rue...

    En effet, sans ce bout de MCD, les couples {Année scolaire, Classe} seront formés "à la volée", dans l'application. Concrètement, cela veut dire que la liste déroulante présentant le choix des classes sera toujours la même, même si une classe n'existe plus pour l'année concernée, d'où possibilité d'erreur de saisie. Et, d'où, la nécessité du catalogue des classes valides pour une année scolaire (le bout de MCD en question).

    Exemple :
    • en 2012 : 6ème A, 6ème B, 6ème C ;
    • en 2013, baisse des effectifs des élèves de 6ème entraînant la suppression de la 6ème C ;
      ==> la 6ème C apparaîtra toujours dans la liste déroulante permettant de choisir une classe "à la volée" dans l'application, et ce, quelque soit l'année scolaire concernée
    • donc :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      Situation   ANNEE  CLASSE  MATIERE   PROFESSEUR  HORAIRE
                  -----  ------  -------   ----------  ------------
          1       2013   6eC     CHIMIE    HARPO       LUNDI 9h-10h
      devient possible bien que la 6ème C ait été supprimée pour l'année 2013.
      ==> ce qui semble regrettable

    Bref, le coup de yoyo inverse me semble impératif.
    Images attachées Images attachées  
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  2. #62
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Citation Envoyé par Richard_35 Voir le message
    la liste déroulante
    On en vient au « comment », aux traitements ? Soit, allons-y pour un coup de yoyo supplémentaire.

    Du point de vue de l’inscription des élèves, on aurait la représentation suivante (conformément à la norme) :



    D'où le MLD cible :



    Je rappelle la norme Merise à propos de la représentation de la contrainte d’inclusion :


    Mais si l’association-type CLASSE_ANNEE est transformée en entité-type, comment représenter la contrainte d’inclusion conformément à la norme ?
    (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.

  3. #63
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonsoir,

    Citation Envoyé par Fsmrel
    On en vient au « comment », aux traitements ?
    ==> je ne sais pas. En revanche, ce que je sais, c'est que si, nulle part, nous n'indiquons de couples {Année scolaire, Classe} valides, alors le système ne saura jamais nous proposer la liste des classes valides pour une année scolaire précise. En conséquence, dans l'application finale, à chaque fois que nous devrons choisir une classe, il faudra la choisir parmi l'ensemble des classes (toutes années scolaire confondues, donc). Et cela ne me paraît pas judicieux (voir l'exemple cité).

    Citation Envoyé par =Fsmrel
    Mais si l’association-type CLASSE_ANNEE est transformée en entité-type, comment représenter la contrainte d’inclusion conformément à la norme ?
    ==> c'est là tout le problème !... et c'est en cela qu'il est intéressant (le problème).


    1°/ ==========
    Le MCD de base est celui-ci :

    donnant (brut AGL) :
    Eleve(IdEleve, ...)
    AnneeScolaire(IdAnneScolaire, ...)
    Classe(IdClasse, ...)
    AnneeScolaire_Classe_Eleve(#IdEleve, #IdAnneScolaire, #IdClasse, ...) mais devrait être AnneeScolaire_Classe_Eleve(#IdEleve, #IdAnneScolaire, #IdClasse, ...)
    problèmes :
    • la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    • toutes les classes sont valides pour toutes les années (l'association étant faite à la volée).



    2°/ ==========
    Si nous éclatons ce MCD pour gérer les classes valides pour une année scolaire :

    donnant :
    Eleve(IdEleve, ...)
    AnneeScolaire(IdAnneScolaire, ...)
    Classe(IdClasse, ...)
    AnneeScolaire_Classe(#IdAnneScolaire, #IdClasse, ...)
    AnneeScolaire_Classe_Eleve(#IdEleve, #IdAnneScolaire, #IdClasse, ...) mais devrait être AnneeScolaire_Classe_Eleve(#IdEleve, #IdAnneScolaire, #IdClasse, ...)
    problèmes :
    • la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    • toutes les classes sont valides pour toutes les années.==> barré car {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe_Eleve doit référencer {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe, et non pas #IdAnneScolaire de AnneScolaire, d'une part, et IdClasse de Classe, d'autre part


    N'étant pas "merisien de naissance", mes connaissances ne me permettent pas d'aller plus loin en termes de normalisation norme.

    Mais, encore une fois, j'imagine qu'une des premières choses que définit le chef d'un établissement scolaire après analyse des effectifs d'élèves par section (6ème, 5ème, 4ème, 3ème), c'est le nombre de classes qu'il sera nécessaire de prévoir par section (suppression/création par rapport à l'année précédente) donc, en final, la liste des classes valides pour l'année concernée.
    Images attachées Images attachées   
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #64
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par Richard_35 Voir le message
    à chaque fois que nous devrons choisir une classe, il faudra la choisir parmi l'ensemble des classes (toutes années scolaire confondues, donc).
    Et concernant les matières ? Si telle année, telle matière n’est plus enseignée on la propose quand même ?


    Citation Envoyé par Richard_35 Voir le message
    1°/ ==========
    Le MCD de base est celui-ci :
    ...
    problèmes :
    la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    toutes les classes sont valides pour toutes les années (l'association étant faite à la volée).
    La clé (MLD) sera juste si en amont, au niveau MCD vous avez défini la CIF qui va bien :




    Citation Envoyé par Richard_35 Voir le message
    2°/ ==========
    la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    toutes les classes sont valides pour toutes les années.==> barré car {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe_Eleve doit référencer {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe, et non pas #IdAnneScolaire de AnneScolaire, d'une part, et IdClasse de Classe, d'autre part
    C’est mal parti !


    Citation Envoyé par Richard_35 Voir le message
    N'étant pas "merisien de naissance", mes connaissances ne me permettent pas d'aller plus loin en termes de normalisation.
    Attention, de mon côté j’ai parlé de « norme » mais pas de « normalisation ». En Merise, la normalisation permet de s’assurer que chacune des propriétés portées par une association-type ne peut être vérifiée sur un sous-ensemble de la collection de l’association-type.

    Exemple :

    [Personne]----0,N----(Conduire{Date autorisation, Date permis})----0,N----[Voiture]

    La propriété Date autorisation est à sa place, parce qu’elle dépend à la fois de la personne et de la voiture.

    La propriété Date permis ne dépend que de la personne, elle n’est donc pas à sa place et l’association-type Conduire n’est pas normalisée.


    Dans le cas des contraintes (inclusion, exclusion, etc.) il s’agit de la « norme » définie lors de la journée Afcet du 15 novembre 1990 par les ténors tels que Tabourier, Rochfeld et Cie.
    (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.

  5. #65
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Fsmrel,

    Citation Envoyé par Fsmrel
    Et concernant les matières ? Si telle année, telle matière n’est plus enseignée on la propose quand même ?
    ==> parfaitement exact !... le post #19 en fait d'ailleurs état :



    Citation Envoyé par Fsmrel
    1°/ ==========
    Le MCD de base est celui-ci :
    ...
    problèmes :
    la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    toutes les classes sont valides pour toutes les années (l'association étant faite à la volée).
    La clé (MLD) sera juste si en amont, au niveau MCD vous avez défini la CIF qui va bien :
    ==> je n'ai pas réussi avec JMerise : une CIF refuse de se brancher sur une association (ou, du moins, je n'ai pas trouvé l'astuce).


    Citation Envoyé par Fsmrel
    2°/ ==========
    la clé primaire de AnneeScolaire_Classe_Eleve est fausse ;
    toutes les classes sont valides pour toutes les années.==> barré car {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe_Eleve doit référencer {#IdAnneScolaire, #IdClasse} de AnneeScolaire_Classe, et non pas #IdAnneScolaire de AnneScolaire, d'une part, et IdClasse de Classe, d'autre part
    C’est mal parti !
    ==> peux-tu développer, STP ?


    Citation Envoyé par Fsmrel
    N'étant pas "merisien de naissance", mes connaissances ne me permettent pas d'aller plus loin en termes de normalisation.
    Attention, de mon côté j’ai parlé de « norme » mais pas de « normalisation ». En Merise, la normalisation permet de s’assurer que chacune des propriétés portées par une association-type ne peut être vérifiée sur un sous-ensemble de la collection de l’association-type.
    ==> merci de cette mise ai au point sémantique : post concerné modifié.
    Images attachées Images attachées  
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  6. #66
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par Richard_35 Voir le message

    Peux-tu développer, STP ?
    Je suis parti sur la mise en œuvre d’une contrainte d’inclusion :



    Et au niveau MLD, la clé de la table INSCRIRE dérivée est conforme à ce que l’on attend :



    Quand je dis qu’ensuite c’est mal engagé, c’est qu’on est confronté à une alternative fâcheuse :
    — CLASSE_ANNEE reste définitivement une association-type, mais alors on ne pourra pas la mettre en relation avec les matières et les professeurs (entre autres), parce que la « norme » Merise interdit les associations d’associations.

    — On transforme CLASSE_ANNEE en entité-type pour justement établir une relation avec les matières et les professeurs, mais alors on ne peut plus mettre en oeuvre la contrainte d’inclusion. En effet, selon le métamodèle des contraintes, une contrainte d’inclusion a pour portée une association-type (INSCRIRE en l’occurrence) et une cible qui est nécessairement elle aussi une association-type (CLASSE_ANNEE).
    Pour information je joins le métamodèle des contraintes d’extension (c'est-à-dire inter-relations), inclusion (I), exclusion (X, N), totalité (T), égalité (=), ou exclusif (+) alias XT :




    Si donc on transforme l’association-type INSCRIRE en entité-type, la contrainte d’inclusion doit dégager...

    Mais on peut se rabattre sur l’utilisation d’une CIF ayant pour portée l’association-type INSCRIRE, pour cible l’entité-type CLASSE et pour pivot la paire d’entités-types (ELEVE, CLASSE_ANNEE), tandis que l’arc en pointillés sert à brancher la portée sur la contrainte :

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

  7. #67
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Fsmrel et Diengkals,

    Ces fâcheuses alternatives arrivent souvent dans le cas des "ternaires". C'est, un peu, en cela qu'elles sont intéressantes et "fleurtent" souvent avec les limites de Merise, il me semble.

    En outre, elles obligent, souvent, à éclater les relations n,n. Donc, en quelque sorte, à descendre au niveau "tables" dans le MCD.

    Je ne sais pas si tout cela rassure ou inquiète Diengkals...
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  8. #68
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    bonjour Richard_35 et Fsmrel et merci de votre aide éclaircissement, j avoue que j'ai du mal a bien choisir entre les partie les deux parties que vous évoques c'est pour cela je suis entrain de bien lire vos précédents posts pour voir ce qui m arrange plus.

    à
    fsmrel

    A propos des salles

    Ne va-t-on pas carrément sombrer dans la folie en prenant en compte les salles où les malheureux élèves pourront se demander ce qui va encore leur arriver ?

    Pas de panique ! On retrouve en fait au niveau logique le MLD figurant dans le message #47, à ceci près qu’entre-temps l’horaire a fait l’objet d’une entité-type dans le MCD, donc d’une table au stade MLD. La transformation à opérer est simple :

    ici d'apres votre MLD localiser va être une association entre les table classe, annee , horaire et salle .

    une question concernant les salles et les horaires pour le cycle primaire ou cas nous avons deux instituteurs pour une classe comment je vais le modélise ici et merci d'avance

  9. #69
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Diengkals,

    Citation Envoyé par Diengkals
    j avoue que j'ai du mal a bien choisir entre les partie les deux parties que vous évoques c'est pour cela je suis entrain de bien lire vos précédents posts pour voir ce qui m arrange plus.
    ==> eh bien, c'est simple, il faut décider :
    • si tu veux gérer une liste des classes valides par année ==> liste déroulante des classes en fonction de l'année concernée
      OU
    • si tu ne le veux pas ==> liste déroulante des classes toutes années confondues

    Idem pour les matières, en fonction des années et/ou des classes.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  10. #70
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Attention, au niveau MCD on n'est pas concerné par le Comment. Il faut donc trouver une autre expression que "liste déroulante" pour justifier la préexistence des paires {Classe, Année}. Dans les années quatre-vingts cette technique n'existait pas et peut-être qu'un de ces jours elle sera obsolète.
    (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.

  11. #71
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    merci infiniment de votre aide je comprends bien les choses

  12. #72
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Fsmrel,

    OK. En d'autres termes, Diengkals, n'imagines-tu pas
    qu'une des premières choses que définit le chef d'un établissement scolaire après analyse des effectifs d'élèves par section (6ème, 5ème, 4ème, 3ème), c'est le nombre de classes qu'il sera nécessaire de prévoir par section (suppression/création par rapport à l'année précédente)
    ?
    Donc,
    en final, la liste des classes valides pour l'année concernée
    est-elle nécessaire ?
    Idem pour les matières, en fonction des années et/ou des classes.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  13. #73
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    bonjour, Richard_35 et fsmrel
    à une question à
    fsmrel
    pour finaliser ma conception:

    d'apres votre precédent message ci-dessus

    http://www.developpez.net/forums/d12...e/#post6992756
    dans la derniere partie des salles :


    A propos des salles

    Ne va-t-on pas carrément sombrer dans la folie en prenant en compte les salles où les malheureux élèves pourront se demander ce qui va encore leur arriver ?

    Pas de panique ! On retrouve en fait au niveau logique le MLD figurant dans le message #47, à ceci près qu’entre-temps l’horaire a fait l’objet d’une entité-type dans le MCD, donc d’une table au stade MLD. La transformation à opérer est simple :
    vous avez ajouter une table Localiser au MLD qui sera une association entre les entités classe ,année , matiere,horaire et salle au niveau du MCD qui lié a l'association ENSEIGNER , ma question est la suivante: comment est lié entre deux association suivantes : LOCALISER ET ENSEIGNER est ce que c'est une contrainte CIF ou non?
    j'ai une autre proposition au lieu de mettre la relation localiser
    je vais juste laisser la relation enseigner qui sera relié entre tous ces entités classe ,année , matiere,horaire salle et professeur
    donc j aurai dans la table enseigner
    enseigner(idclasse,idmatiere,idhoraire,idsalle,idprofesseur,idannee est ce que c'est une bonne idée de le faire ?

    pour les salles des classes primaires comme elles sont fixes j ai envisager de crée une nouvelles entité SallePrimaire qui sera relié avec les relation enseigner_arabe et enseigner_francais

    donc je séparerai les Salles pour le cycle primaire et les autre cycles. est ce que c'est une bonne idée ??

    merci d'avance

  14. #74
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Traitons déjà de la table ENSEIGNER.

    Citation Envoyé par diengkals Voir le message
    j'ai une autre proposition, au lieu de mettre la relation localiser je vais juste laisser la relation enseigner qui sera relié entre tous ces entités, classe, année , matiere, horaire salle et professeur, donc j'aurai dans la table enseigner :

    enseigner (idclasse, idmatiere, idhoraire, idsalle, idprofesseur, idannee)

    est ce que c'est une bonne idée de le faire ?
    A priori ça n’est pas forcément une très bonne idée, mais peut-être qu'après tout on ne pourra pas vous le reprocher...

    Je m’explique. Si l’on vous suit, on va repasser par la case Départ et retomber dans les problèmes quantiques, bizarres, que j’ai évoqués et dénoncés ici...

    Reprenons la structure que vous proposez :
    ENSEIGNER (idclasse, idmatiere, idhoraire, idsalle, idprofesseur, idannee)
    Pour pouvoir m’exprimer plus rigoureusement, je vais utiliser dorénavant le vocabulaire de la théorie relationnelle. ENSEIGNER devient une relvar (abréviation de relational variable, en français variable relationnelle). Pour des raisons de facilité de rédaction, je renomme les attributs : idclasse en C, idmatiere en M, idhoraire en H, idsalle en S, idprofesseur en P et idannee en A. La structure de la relvar ENSEIGNER devient donc :
    ENSEIGNER {C, M, H, S, P, A}
    Notez que j’ai remplacé les parenthèses par des accolades, car l’en-tête — c'est-à-dire {C, M, H, S, P, A} dans notre cas — d’une relvar est un ensemble dont les éléments sont les attributs de la relvar.

    J’ai dit que votre idée n’est pas a priori très bonne, parce que la relvar ENSEIGNER viole la BCNF, ce qui se traduit automatiquement par de la redondance des données dont il faudra assurer la cohérence, comme l’a démontré le Dr E. F. Codd depuis 1971. Cela fait donc plus de quarante ans qu’on s’échine à normaliser, en cassant une relvar non normalisée en relvars qui le soient, par la technique dite de projection/jointure : ainsi, votre relvar ENSEIGNER peut être décomposée en deux relvars (LOCALISER et ENSEIGNER « dégraissée ») comme je l’ai déjà fait, rappelez-vous :



    Mais en normalisant, je peux perdre en route des règles de gestion, plus précisément celles qui expriment des contraintes d’unicité : c'était bien la peine que je me donne tant de mal à les inventorier...

    Pour prouver ce que je dis, allons-y pour dresser un inventaire exhaustif de ces contraintes. On a déjà vu certaines d’entre elles à l’occasion du message #60, mais cette fois-ci il faut tenir compte de la salle.

    Je signale en passant qu’après vérification la règle suivante figurant dans ce message est fausse :
    Rb - Pour une année scolaire donnée, une classe donnée n’étudie une matière donnée que durant un seul horaire.
    En effet, pour l’année scolaire 2012, la classe de 5eA peut très bien étudier l’anglais le lundi de 11 heures à 12 heures et le mercredi de 14 heures à 15 heures.

    Comme quoi on ne se relit jamais assez... Anyway. Allons-y pour énumérer les contraintes d’unicité, que certaines soient inférables d’autres ou non :

    Ra - Au cours d’une année scolaire donnée, une classe donnée n’étudie une matière donnée qu’avec seul un professeur.
    Rb - Au cours d’une année scolaire donnée, durant un horaire donné, une classe donnée n’étudie qu’une matière.
    Rc - Au cours d’une année scolaire donnée, durant un horaire donné, une classe donnée ne se situe que dans une seule salle.
    Rd - Au cours d’une année scolaire donnée, durant un horaire donné, une classe donnée n’étudie qu’avec un seul professeur.
    Re - Au cours d’une année scolaire donnée, durant un horaire donné, dans une salle donnée n’est enseignée qu’une matière.
    Rf - Au cours d’une année scolaire donnée, durant un horaire donné, dans une salle donnée n’est présente qu’une seule classe.
    Rg - Au cours d’une année scolaire donnée, durant un horaire donné, dans une salle donnée n’est présent qu’un seul professeur.
    Rh - Au cours d’une année scolaire donnée, durant un horaire donné, un professeur donné n’enseigne qu’une seule matière.
    Ri - Au cours d’une année scolaire donnée, durant un horaire donné, un professeur donné n’enseigne qu’à une seule classe.
    Rj - Au cours d’une année scolaire donnée, durant un horaire donné, un professeur donné n’est présent que dans une seule salle.
    Si j’ai omis certaines contraintes, merci de compléter et si je me suis planté dans mes copier/coller, merci de rectifier...

    Quoi qu’il en soit, à partir des contraintes que j’ai énumérées, on obtient l’ensemble suivant de dépendances fonctionnelles (au sens de la théorie relationnelle) :

    DFa : {A, C, M} -> {P}
    DFb : {A, C, H} -> {M}
    DFc : {A, C, H} -> {S}
    DFd : {A, C, H} -> {P}
    DFe : {A, S, H} -> {M}
    DFf : {A, S, H} -> {C}
    DFg : {A, S, H} -> {P}
    DFh : {A, P, H} -> {M}
    DFi : {A, P, H} -> {C}
    DFj : {A, P, H} -> {S}
    Partant de là, on sait montrer que la relvar ENSEIGNER viole la BCNF et qu’il faudrait la décomposer pour que tout rentre dans le rang.

    Pour que la relvar respecte la BCNF, le déterminant de chaque dépendance fonctionnelle ci-dessus doit en être une clé candidate, or ça n’est pas le cas de DFa, puisque au cours d’une année scolaire donnée, une classe donnée peut suivre l’enseignement d’une matière donnée plus d’une fois par semaine et pas toujours dans la même salle.

    On est face à un dilemme...
    — Soit on normalise comme je l’ai fait, mais alors on perd les dépendances fonctionnelles :
    DFd : {A, C, H} -> {P}
    DFg : {A, S, H} -> {P}
    Donc les règles de gestion Rd et Rg. Pour les garantir, on doit par exemple en passer par la mise en oeuvre d'une jointure naturelle de « mes » tables ENSEIGNER et LOCALISER, plus deux assertions (ou des triggers affectés à la vue si votre SGBD SQL ne permet pas de procéder autrement).

    — Soit on conserve en l’état votre relvar ENSEIGNER, en violant la BCNF mais il faudra garantir la cohérence des redondances, mettant en œuvre un dispositif garantissant les dépendances fonctionnelles. En l’occurrence, vous vous en sortez pas mal, car le déterminant des dépendances fonctionnelles autres que DFa est clé candidate, ce qu'on assure sans problème au niveau SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE ENSEIGNER
        (
            A     INT        NOT NULL,
            C     INT        NOT NULL,
            M     INT        NOT NULL,
            S     INT        NOT NULL,
            H     INT        NOT NULL,
            P     INT        NOT NULL,
        PRIMARY KEY (A, C, H),
        UNIQUE (A, P, H),
        UNIQUE (A, S, H)
        ) ;
    Reste à garantir la dépendance fonctionnelle DFa : {A, C, M} -> {P}, ce qui se fera au moyen d’une assertion, ou de triggers affectés à la table ENSEIGNER si votre SGBD SQL ne permet pas de procéder autrement.

    Conclusion : on ne saurait vous blâmer si vous retenez votre solution, sous réserve que vous n'oubliez pas l'assertion (ou les triggers) garantissant le respect des règles de gestion...

    Pour le moment j'en suis là. Je regarderai plus attentivement toute cette affaire, histoire de m'assurer que je ne me suis pas planté quelque part. De votre côté ça serait bien que vous procédiez aussi à une vérification de l'inventaire que j'ai dressé des règles de gestion...
    (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.

  15. #75
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    merci beaucoup fsmrel , la je vois vraiment le dilemme de la chose:
    je dois vraiment revoir mes cours de merise pour mieux comprendre l'histoire des dépendances fonctionnelles , les clés candidates, BCNF ect ....


    avant de revenir sur cette partie que je compte revoir , est ce que le faite de séparer les Salle du cycle primaire et les autres cycles c'est une bonne modélisation au moment ou les salles du cycle primaire sont fixes et ne seront pas prêtées??
    merci d'avance

  16. #76
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Dieng,


    Citation Envoyé par diengkals Voir le message
    est ce que le faite de séparer les Salle du cycle primaire et les autres cycles c'est une bonne modélisation au moment ou les salles du cycle primaire sont fixes et ne seront pas prêtées??
    Vous pouvez (sinon devez !) effectivement énoncer de nouvelles règles de gestion des données donnant lieu à contraintes d’unicité, d’autant plus qu’aujourd’hui rien n’empêche que des élèves du primaire et du secondaire se retrouvent en même temps dans la même salle...

    Vous pourriez par exemple spécialiser l’entité-type SALLE en SALLE_CP (salle dédiée au cycle primaire) et SALLE_CS (salle dédiée au cycle secondaire) : chacun chez soi ! Mais attention, si une salle dédiée au cycle primaire en 2010 est dédiée au cycle secondaire en 2012 (voire à partir d’une date), les choses se compliquent au niveau du MCD. Au niveau tabulaire, a priori il n’y a pas de problème dans la mesure où la paire {SALLE_CS, ANNEE} est représentée par la paire {C, S} de la table ENSEIGNER.

    Je vous laisse réfléchir et enrichir le corpus des règles de gestion des données...


    Citation Envoyé par diengkals Voir le message
    je dois vraiment revoir mes cours de merise pour mieux comprendre l'histoire des dépendances fonctionnelles , les clés candidates, BCNF etc.
    Revoyez vos cours Merise pour ce pourquoi il a été fait, mais surtout pas pour ce pourquoi il n’a pas été fait ! Les concepts de dépendance fonctionnelle, clé candidate, normalisation, BCNF sont traités de façon formelle dans le cadre de la théorie relationnelle qui est à considérer comme une branche des mathématiques appliquées.

    Pour illustrer, je fais une incidente.

    Par exemple, l’ouvrage de Michel Diviné Parlez-vous Merise ? est excellent pour la partie MCD, mais dès qu’il traite du modèle relationnel de données — qu’il ravale au niveau physique ! celui de la de la tuyauterie (voir le chapitre 4 de l’ouvrage) —, c’est la cata, l'erreur fleurit pratiquement à chaque ligne. Clairement Diviné n’a pas lu Codd, Fagin, Date et Cie. Il se révèle naïf en énonçant sans broncher :
    « Quand le passage s'effectue du MCD MOD (MLD) au MPD, les tables sont obligatoirement normalisées. Merise évite d’avoir à normaliser les tables ».
    Gloups ! Prenons le cas de la dernière version de la table ENSEIGNER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE ENSEIGNER
        (
            A     INT        NOT NULL,
            C     INT        NOT NULL,
            M     INT        NOT NULL,
            S     INT        NOT NULL,
            H     INT        NOT NULL,
            P     INT        NOT NULL,
        PRIMARY KEY (A, C, H),
        UNIQUE (A, P, H),
        UNIQUE (A, S, H)
        ) ;
    On sait qu’elle viole la BCNF parce qu’elle engendre la dépendance fonctionnelle {A, C, M} -> {P}, qui sera contrôlée par la mise en œuvre d’une assertion (ou d’un ou deux triggers si le SGBD ne propose pas l’instruction CREATE ASSERTION). On sait aussi que grâce au théorème de Heath, on peut casser la table en d’autres tables qui respectent la BCNF mais au prix de la perte de règles de gestion, ce que l'on doit rattraper à coup d'assertions hélas ! assez compliquées. Bref, entre un vœu pieux, une affirmation gratuite à la Diviné et la réalité il y a tout un monde. Comme dit Ludwig Wittgenstein dans l’avant-propos de son Tractatus logico-philosophicus :
    Sur ce dont on ne peut parler, il faut garder le silence.
    Pour une connaissance pertinente du modèle relationnel de données, voyez l'ouvrage de l'excellent et particulièrement compétent Hugh Darwen : An Introduction to Relational Database Theory (au format PDF, téléchargeable et gratuit).
    (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.

Discussions similaires

  1. précisions sur glutPostRedisplay()
    Par khayyam90 dans le forum GLUT
    Réponses: 4
    Dernier message: 29/07/2004, 10h03
  2. Precision sur l'encodage de caractere
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/05/2004, 13h52
  3. besoin de precision sur gluLookAt!
    Par bakonu dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/04/2004, 19h05
  4. precision sur le pilotage du port parallele
    Par fransouik dans le forum C++Builder
    Réponses: 18
    Dernier message: 26/02/2004, 13h28
  5. [VBA-E]Demande de précision sur les menus
    Par geffdenimes dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2003, 10h46

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