Partage
  • Partager sur Facebook
  • Partager sur Twitter

Heritage et couverture

contrainte de couverture

    10 novembre 2019 à 14:42:07

    Bonjour à tous,

    Je viens vers vous car j'ai un petit problème sur un TP de Base de Données.

    Voici la question :

    Modifiez le type personne type doit être modifie pour permettre l’héritage. On désire également pouvoir respecter la contrainte de couverture (aucune personne ne peut être ni étudiant, ni professeur).

    On a donc un type personne dont doit découler les types étudiants et professeurs sans que le type personne ne soit instanciable (du moins c'est que je crois comprendre être la contrainte de couverture) mais comment mettre cela en ligne de commande SQLPLUS s'il vous plaît ?

    merci d'avance pour votre aide et bonne journée !

    Édit : même une petite explication sur le principe de la couverture je prends 

    -
    Edité par tdd 10 novembre 2019 à 23:12:35

    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2019 à 9:28:26

      Bonjour,

      Pour assurer la contrainte de couverture, une insertion dans la table mère (personne) doit forcément impliquer une insertion dans une des deux tables filles (étudiant ou professeur).

      Côté MCD on représentera l'héritage avec "XT" dans le triangle :

      • eXclusion : une personne peut être professeur ou étudiant, mais pas les deux.
      • Totalité : une personne est obligatoirement un étudiant ou un professeur

      Côté MLD, la contrainte d'exclusion est gérée par un système de TRIGGER BEFORE INSERT ON sur chaque table fille, qui vérifie que la personne n'est référencée dans une autre table fille avant de l'insérer dans une table fille.

      Par contre, à ma connaissance, il n'y a aucun mécanisme SQL (côté MLD) qui permette de garantir la contrainte de totalité, vu qu'il faut d'abord insérer dans la table mère avant de pouvoir insérer dans la table fille. Tu peux juste mettre en place une requête de contrôle exécutée ponctuellement qui vérifie que tous les enregistrements dans la table mère ont une correspondance dans une des tables filles.

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      Heritage et couverture

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown