Partage
  • Partager sur Facebook
  • Partager sur Twitter

Structure table 1,N et N,N

    1 juillet 2021 à 10:52:57

    Bonjour, 

    J'ai une question a propos de la structure d'une table. 

    Pour l'instant j'ai ça : 

    Le problème c'est que suite à une évolution du besoin j'ai ma relation 1N,11 entre Ilot et Alerte qui se transforme à 1N,1N Mais seulement pour 1 Secteur particulier de TypeAlerte

    Je voulais savoir si il y a moyen de changer la relation uniquement pour le TypeAlerte en question ?

    Sinon je part sur ça : 

    Je vous remercie pour vos réponses.  

    EDIT : Pour résumer :

    Pour idTypeAlerte = 1 ma relation 1N,11 entre Ilot et Alerte est juste 

    et

    Pour idTypeAlerte = 2 ma relation 1N,11 entre Ilot et Alerte est fausse 

    -
    Edité par DeveloSt 1 juillet 2021 à 11:20:45

    • Partager sur Facebook
    • Partager sur Twitter

    Site Internet : https://devst.go.yj.fr

      1 juillet 2021 à 13:39:40

      Bonjour,

      DeveloSt a écrit:

      Je voulais savoir si il y a moyen de changer la relation uniquement pour le TypeAlerte en question ?

      A mon sens, la seule solution pour mettre en oeuvre cette contrainte côté base de données (et non côté application), c'est avec un TRIGGER BEFORE INSERT.

      Tu pars sur ton nouveau modèle, avec relation n,n, et tu mets en place un TRIGGER BEFORE INSERT ON alerte qui teste l'idTypeAlerte, et en fonction qui contrôle que idAlerte n'existe pas déjà dans la table de relation ...

      DELIMITER &&
      
      CREATE TRIGGER check_type_alerte
      BEFORE INSERT ON Ilot_Alerte -- relation contient dans ton exemple
      FOR EACH ROW
      BEGIN
      	SELECT idTypeAlerte INTO @typealerte
      	FROM Alerte
      	WHERE idAlerte = NEW.idAlerte;
      	
      	IF @typealerte = 1 AND EXISTS (
      		SELECT *
      		FROM Ilot_Alerte
      		WHERE NEW.idAlerte
      	) THEN
      		SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = 'Impossible de lier cette alerte de type 1 à deux îlots';
      	END IF;
      END&&
      
      DELIMITER ;

      Cela ne t'affranchit pas de faire le contrôle côté applicatif pour empêcher de proposer à l'utilisateur de lier une alerte à plusieurs îlots si elle est du type 1 ...

      -
      Edité par Benzouye 1 juillet 2021 à 13:40:49

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

      Structure table 1,N et N,N

      × 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