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 :

Professeurs, cours, étudiants


Sujet :

Schéma

  1. #21
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Beegees
    Bonjour Fsmrel,

    Désolé pour le retard de ma réponse, j'avais un examen de passage jeudi dernier.

    L’association-type Encoder a disparu...
    Dans le schéma présenté oui mais pas dans le schéma original.

    Quand vous écrivez "Un professeur enseigne un à plusieurs cours", vous signifiez qu’un professeur enseigne au moins un cours, ce qui est correct. La cardinalité minimale 1 est conforme à ce que vous avez écrit.
    OK

    Quand vous écrivez "Un cours peut être enseigné par un à plusieurs professeurs", vous signifiez qu’un cours n’est pas forcément enseigné. De deux choses l’une :
    _ De fait, un cours peut ne pas être enseigné, mais alors la cardinalité 1,N (côté Cours) devient 0,N.

    _ Ou bien, un cours est enseigné par au moins un professeur, conformément à la cardinalité 1,N que vous avez représentée mais alors la règle de gestion s'énonce : "Un cours est enseigné par au moins un professeur", le "peut être" doit disparaître.

    OK fait, merci d'aller si loin dans les détails.

    Voici la nouvelle règle de gestion :

    RG2 : 1 cours est enseigné par 1 ou plusieurs Professeurs (Cours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Quand vous écrivez "Un Professeur encode 1 à Plusieurs cours", cela veut dire que chaque professeur encode au moins un cours. Si ce n’est pas le cas de tous les professeurs, écrivez "Un professeur peut encoder des cours" et remplacez la cardinalité 1,N par 0,N.
    OK, en effet il peut y avoir un Professeur qui n'encode rien. Le changement de 1,n par 0,n ne change rien à la base de données finale ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Je n’ai pas tout saisi. Qu'entendez-vous par "désigné" ? 
    Peu importe. Sachant que les professeurs King, Gismow et Spielberg enseignent le cours Tran-J-202 et que c’est le professeur King qui a encodé ce cours, je pose la question :
    En sa qualité d’encodeur du cours, seul le professeur King est-il habilité à attribuer une note à l’étudiant Tintin pour le cours Tran-J-202 ? Ou bien n'importe lequel des trois est-il habilité à le faire ?
    Ils se décident sur une cote pour tel et tel étudiant MAIS un seul aura la possibilité d'encoder les cotes dans la page web, mais la décision est prise par les deux ou trois Professeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Que signifient chacune des valeurs "ABS", "OUI", "NON", autrement dit dans quelles conditions ces valeurs se substituent-elles à une cote comprise entre 0 et 20 ?
    ABS, si un étudiant ne se présente pas à un examen, il est noté ABS (absent). Même si il est malade avec justificatif, ce n'est pas aux Professeur d'en juger mais au Jury lors de la délibération.

    Pour ce qui est de "OUI" et "NON" cela ne s'applique qu'aux stages.

    Un étudiant à soit terminé sont stage (OUI) soit ne l'a pas encore terminé (NON).

    On verra cela quand ce qui précède sera d’équerre et que vous aurez reformulé en conséquence chaque règle de gestion. On ne construit que sur des bases saines.
    OK vous avez raison.

    Il y'a juste une chose pour moi qui me parait très importante, voir capitale, il FAUT savoir dans quelle année (BA1,BA2...) un étudiant est je vous explique mon idée :

    L'idée est de créer un script qui va remplir une base de données par rapport à un listing d'un datawarehouse.

    En 2007-2008 l'étudiant Charles Dupont était en BA2.

    Il double, en 2008-2009 Charles Dupont s'inscrit à nouveau en BA2.

    Il faut que je garde toutes les cotes supérieures à 12 de Charles Dupont.

    Pour cela, je sais qu'il était ajourné, je sais qu'il s'est réinscrit, je peux donc lancer le script pour les cotes supérieures ou égales à 12.

    Le fait donc de savoir dans quelle année est un étudiant est capital.

    J'ai modifié mon MCD pour ce point là (RG10 et RG11 en bleu) sauriez-vous y jeter un coup d'oeil svp ?

    En passant : Félicitations à Tia Hellebaut.
    Merci pour elle, c'est vrai qu'elle sauve un peu notre honneur car deux médailles ce n'est pas beaucoup.

    Tiens en passant, je n'ai pas vu RelationLand aux JO, que c'est-il passé ?

    Bonne journée et bon WE à vous et un tout grand

    beegees

  2. #22
    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 Beegees,


    Citation Envoyé par beegees
    Citation Envoyé par fsmrel
    Quand vous écrivez "Un Professeur encode 1 à Plusieurs cours", cela veut dire que chaque professeur encode au moins un cours. Si ce n’est pas le cas de tous les professeurs, écrivez "Un professeur peut encoder des cours" et remplacez la cardinalité 1,N par 0,N.
    OK, en effet il peut y avoir un Professeur qui n'encode rien. Le changement de 1,n par 0,n ne change rien à la base de données finale ?
    Si vous prévoyez 1,N, votre base de données devra d’une façon ou d’une autre comporter une contrainte pour garantir que chaque professeur encode au moins un cours (toute règle de gestion des données doit être vérifiée au niveau de la base de données, même si nombreux sont ceux qui oublient cela). Comme il y a des professeurs qui n’encodent pas de cours, vous devez nécessairement remplacer 1,N par 0,N.

    Citation Envoyé par beegees Voir le message
    Citation Envoyé par fsmrel
    Concernant la règle de gestion RG9 :
    "Si le cours est enseigné par plusieurs Professeurs, seul l'un d'entre eux pourra encoder les cotes du cours (boolean)"
    a) Le type des données n’a pas à figurer dans les règles de gestion : le mot "boolean" doit disparaître.
    b) La patte liant L’entité-type COURS et l’association-type ENCODER_COTE est porteuse d’une cardinalité maximale 1. Comme je vous l’ai déjà expliqué — avec au niveau du MLD, le contenu des tables et les requêtes SQL à la clé — on sait qui a encodé un cours, en conséquence de quoi l’attribut Cloturer figurant dans l’association-type ENCODER_COTE ne fera que répéter ce que l’on sait déjà : c’est une redondance et cet attribut doit disparaître.
    OK j'ai fais ce que vous m'avez conseillé, c'est un très bon conseil, merci.
    Pourquoi l’attribut Cloturer refait-il surface ? Relisez vos MCD avant de les proposer, nous perdons du temps.



    Citation Envoyé par beegees
    Citation Envoyé par fsmrel
    Je n’ai pas tout saisi. Qu'entendez-vous par "désigné" ?
    Peu importe. Sachant que les professeurs King, Gismow et Spielberg enseignent le cours Tran-J-202 et que c’est le professeur King qui a encodé ce cours, je pose la question :
    En sa qualité d’encodeur du cours, seul le professeur King est-il habilité à attribuer une note à l’étudiant Tintin pour le cours Tran-J-202 ? Ou bien n'importe lequel des trois est-il habilité à le faire ?
    Ils se décident sur une cote pour tel et tel étudiant MAIS un seul aura la possibilité d'encoder les cotes dans la page web, mais la décision est prise par les deux ou trois Professeurs.
    Vous confirmez donc qu’il n’y a aucun lien à établir entre les professeurs concernés et l'étudiant Tintin (en l’occurrence via l’association-type OBTIENT_NOTE).



    Citation Envoyé par beegees
    Il y'a juste une chose pour moi qui me parait très importante, voir capitale, il FAUT savoir dans quelle année (BA1,BA2...) un étudiant est je vous explique mon idée :
    En 2007-2008 l'étudiant Charles Dupont était en BA2.
    Il double, en 2008-2009. Charles Dupont s'inscrit à nouveau en BA2.
    Il faut que je garde toutes les cotes supérieures à 12 de Charles Dupont.
    Pour cela, je sais qu'il était ajourné, je sais qu'il s'est réinscrit, je peux donc lancer le script pour les cotes supérieures ou égales à 12.
    Le fait donc de savoir dans quelle année est un étudiant est capital.
    Qu’entendez-vous exactement par "garder toutes les cotes supérieures à 12 de Charles Dupont" ?
    D’après votre MCD, pour un étudiant, un cours et une catégorie, il y a exactement une note. Pour le moment, j'acte donc que par "toutes" vous voulez parler de la note obtenue pour chaque cours auquel est inscrit Charles.

    Dans ces conditions et selon le MCD actuel, vous savez que l’étudiant Dupont (le jumeau de Dupond, bien sûr) a suivi le cours c1, dans la catégorie cat1 et obtenu par exemple la note 15. Cela dit, le cours c1 détermine (règle RG6) l’année, disons BA2. L’association-type INSCRIT_EN n’apporte donc rien qu’on ne sache déjà et représente une redondance que j’ai déjà signalée (http://www.developpez.net/forums/d58...r/#post3553312), elle doit sauter. Par contre, rien ne permet de savoir que Dupont s’est inscrit à ce cours en 2008 puis rebelote en 2009. Il serait donc peut-être utile d’ajouter un attribut Date_Inscription dans l’association-type OBTIENT_NOTE.


    Citation Envoyé par beegees
    je n'ai pas vu RelationLand aux JO, que c'est-il passé ?
    Je n’avais pas réussi les minima. Chut...
    (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. #23
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Fsmrel,

    Désolé pour le retard de ma réponse, j'ai repris le travail (après mes congés) et je n'ai plus eu le temps de m'occuper de mon TFE.

    Si vous prévoyez 1,N, votre base de données devra d’une façon ou d’une autre comporter une contrainte pour garantir que chaque professeur encode au moins un cours (toute règle de gestion des données doit être vérifiée au niveau de la base de données, même si nombreux sont ceux qui oublient cela). Comme il y a des professeurs qui n’encodent pas de cours, vous devez nécessairement remplacer 1,N par 0,N.
    OK ça c'est en ordre, merci.


    Pourquoi l’attribut Cloturer refait-il surface ? Relisez vos MCD avant de les proposer, nous perdons du temps.
    Il est à nouveau présent car j'aimerais juste que ce champ devienne une case à cocher, quand le Professeur a terminé, il peut clôturer définitivement et ne pourra donc plus toucher aux cotes du cours.

    Vous confirmez donc qu’il n’y a aucun lien à établir entre les professeurs concernés et l'étudiant Tintin (en l’occurrence via l’association-type OBTIENT_NOTE).
    Exactement.

    Dans ces conditions et selon le MCD actuel, vous savez que l’étudiant Dupont (le jumeau de Dupond, bien sûr) a suivi le cours c1, dans la catégorie cat1 et obtenu par exemple la note 15.
    c'est une bonne chose que l'on peut dire par rapport à un étudiant, un cours et une catégorie (ainsi que le type (th ou TP)) on peut connaître une cote qui lui appartient. Cette cote n'est pas unique car un 15 peut être attribué à plusieurs étudiants.

    Cela dit, le cours c1 détermine (règle RG6) l’année, disons BA2. L’association-type INSCRIT_EN n’apporte donc rien qu’on ne sache déjà et représente une redondance que j’ai déjà signalée (http://www.developpez.net/forums/d58...r/#post3553312), elle doit sauter.
    Entièrement d'accord avec vous, le fait de connaître un cours, on connaît son année vue qu'un cours se trouve dans une et une seule année.

    Par contre, rien ne permet de savoir que Dupont s’est inscrit à ce cours en 2008 puis rebelote en 2009. Il serait donc peut-être utile d’ajouter un attribut Date_Inscription dans l’association-type OBTIENT_NOTE.
    Cela est un point important à lequel j'ai réfléchi dernièrement. La date ou l'année est vraiment très importante car grâce à cela, avec PHP, je vais pouvoir dire Charles Dupont à obtenu une cote de 15 pour le cours BIOL-J-201 en 2006, il est de retour en BA2 en 2008, il a donc un report de deux années (2008 - 2006) ou ABS(2006-2008).

    EDIT :

    Je viens de tester la base de données Access et je me rends compte qu'il y'a certaines choses qui ne vont pas :

    1. Dans la table "OBTIENT_NOTE" J'ai une clé primaire composée de :

    - MATRICULE_ET (le matricule de l'étudiant)
    - ID_CATEGORIE (REUS, NORMAL, CI...)
    - MNEMONIC (BIOL-J-202)
    Cette clé composée permet donc d'identifier une cote pour un certain étudiant, un certain cours et une certaine catégorie MAIS pas pour un certain type.

    Si je souhaite mettre la cote pour l'étudiant 123456 pour le cours de BIOL-J-201 avec la catégoire 02 (NORMAL) pour la théorie et qu'ensuite je veux ajouter une cote pour le même cours en Travaux pratique, il me le refuse car il y'a doublon.

    Je suggère donc d'ajouter à la clé composée le type de cours (TH ou TP) afin d'avoir un cours unique, est-ce correcte ?

    Merci encore pour tout et très bon Week-End.

    beegees

  4. #24
    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
    Citation Envoyé par beegees
    Citation Envoyé par fsmrel
    Dans ces conditions et selon le MCD actuel, vous savez que l’étudiant Dupont (le jumeau de Dupond, bien sûr) a suivi le cours c1, dans la catégorie cat1 et obtenu par exemple la note 15.
    c'est une bonne chose que l'on peut dire par rapport à un étudiant, un cours et une catégorie (ainsi que le type (th ou TP)) on peut connaître une cote qui lui appartient.
    Attention, d’après le MCD dont nous étions convenus, le type de cours est une propriété de l’association-type Obtient_Note :





    Citation Envoyé par beegees
    Dans la table "OBTIENT_NOTE" J'ai une clé primaire composée de :
    -MATRICULE_ET (le matricule de l'étudiant)
    - ID_CATEGORIE (REUS, NORMAL, CI...)
    - MNEMONIC (BIOL-J-202)
    Cette clé composée permet donc d'identifier une cote pour un certain étudiant, un certain cours et une certaine catégorie MAIS pas pour un certain type.
    Si je souhaite mettre la cote pour l'étudiant 123456 pour le cours de BIOL-J-201 avec la catégoire 02 (NORMAL) pour la théorie et qu'ensuite je veux ajouter une cote pour le même cours en Travaux pratique, il me le refuse car il y'a doublon.
    Je suggère donc d'ajouter à la clé composée le type de cours (TH ou TP) afin d'avoir un cours unique, est-ce correct ?
    La clé primaire créée par votre SGBD est en phase avec le MCD ci-dessus.

    Le MCD doit maintenant évoluer pour que le SGBD puisse en faire autant :





    (Sans oublier d’ajouter la date).

    Le prédicat de Obtient_Note devient le suivant :

    l’étudiant e1 a suivi le cours c1, dans la catégorie cat1, selon le type de cours tc1 et obtenu la note n1 à la date d1.
    (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. #25
    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
    J'avais oublié :


    Citation Envoyé par beegees
    Citation Envoyé par fsmrel
    Pourquoi l’attribut Cloturer refait-il surface ? Relisez vos MCD avant de les proposer, nous perdons du temps.
    Il est à nouveau présent car j'aimerais juste que ce champ devienne une case à cocher, quand le Professeur a terminé, il peut clôturer définitivement et ne pourra donc plus toucher aux cotes du cours.
    Dans ces conditions, il s’agit donc d’un attribut Cloture de l’entité-type Cours.
    (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. #26
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut La dernière version de mon MCD est maintenat online
    Citation Envoyé par fsmrel Voir le message
    Attention, d’après le MCD dont nous étions convenus, le type de cours est une propriété de l’association-type Obtient_Note :






    La clé primaire créée par votre SGBD est en phase avec le MCD ci-dessus.

    Le MCD doit maintenant évoluer pour que le SGBD puisse en faire autant :





    (Sans oublier d’ajouter la date).

    Le prédicat de Obtient_Note devient le suivant :

    l’étudiant e1 a suivi le cours c1, dans la catégorie cat1, selon le type de cours tc1 et obtenu la note n1 à la date d1.
    Bonjour Fsmrel,

    Un tout GRAND merci pour votre message qui confirme un peu ce que je pensais.

    Voici mon nouveau MCD (voir attaché).

    Il y'a une chose importante.

    Toutes les cotes réunies vont données avec les pondérations une moyenne.

    Je vais donc avoir une moyenne théorique, une moyenne pratique et une moyenne générale.

    Celles-ci sont des données calculables, elles ne doit donc pas apparaitrent dans le MCD ????

    Il faut pourtant prévoir une place dans une table pour ce genre de données ?

    Ce qui me chagrine aussi
    , c'est qu'un étudiant (et1 par exemple) à un cursus à l'Université de ce genre :

    - 2004-2005 | CHIMIE1 | SESSION 1 : SATISFACTION
    - 2005-2006 | CHIMIE2 | SESSION 1 : AJOURNE | Session 2 : DISTINCTION
    - 2006-2007 | CHIMIE3 | SESSION 1 : SATISFACTION
    - 2007-2008 | CHIMIE4 | SESSION 1 : DISTINCTION
    - 2008-2009 | CHIMIE5 | SESSION 1 : INSCRIT
    Je me demande comment je vais pouvoir lier cette information à une table ?

    Á quelle table ? quelle cardinalité utiliser ?

    EDIT :

    Mon Professeur m'a conseillé hier soir de créer une table cursus avec les données suivantes :

    Ref_Matricule (qui ferait référence aux matricules de la table "Etudiants")
    Ref_annee (qui ferait référence aux années existantes comme BA1, BA2...)
    Année académique
    Session (1 ou 2)
    Ref_Decision (qui ferait référence à une table nommée "Décision")

    Ceci est la fin de mon MCD, dès que j'aurai terminé ceci, mon MCD devrait être terminé.

    Mon tout dernier MCD est online, le problème se trouve au niveau de la table cursus, je ne sais pas quelles cardinalités je peux mettre.

    Vous verrez que la pondération pour chaque cours et chaque type (théorie et travaux pratiques) ont maintenant leur place dans la table "cours"

    Merci encore pour l'aide.

    beegees

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2013, 01h01
  2. [Upload] Gestion des cours de plusieurs professeurs
    Par j2eejsp dans le forum Langage
    Réponses: 11
    Dernier message: 31/01/2009, 01h55
  3. je cherche des cours pl/sql pa professeur sur paris
    Par sternan dans le forum Autres
    Réponses: 0
    Dernier message: 08/12/2007, 01h30
  4. Outils, cours et NOUVEAUX tutoriels pour Borland C++Builder
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 10
    Dernier message: 12/03/2006, 22h33

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