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

Modélisation Discussion :

relation 1 à pls, quand suppression clé prim table1, suppression données table 2 associée [AC-2000]


Sujet :

Modélisation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 56
    Points
    56
    Par défaut relation 1 à pls, quand suppression clé prim table1, suppression données table 2 associée
    Bonjour à tous,

    Que faut-il que je change dans mon schéma relationnel pour que lorsque je supprime une famille, cela ne me supprime pas les avions associés ?
    Je souhaite conserver dans le meilleur des cas l'intégrité référentielle.

    En regardant l'image vous verrez ma relation 1 à plusieurs, où les avions sont caractérisés par leur famille. Ils n'ont qu'une famille d'appartenance. C'est pourquoi je n'ai pas fait de table d'association. Cependant lorsque je supprime une famille donc NomFamilleA (clé primaire de Familles Avion et clé étrangère il me semble de Avions), cela me supprime tous les avions associés à cette famille.

    En attendant vous verrez avec mon formulaire, lorsque je clique sur supprimer une famille, je MAJ Avions.FamA=null pour tous les avions associés, avant de supprimer la famille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Supprimer_btn_Click()
    On Error GoTo Err_Supprimer_btn_Click
    Dim Reponse As Integer, i As Variant
    Reponse = Msgbox("Etes-vous sûr de vouloir supprimer la famille " & Me.FamilleA_txt & "? Si des avions apparaissent dans la liste de droite, ils ne seront plus associés à aucune famille.", vbQuestion + vbYesNo, "Confirmation")
    If Reponse = vbNo Then
        Exit Sub
    Else
        For i = 0 To list_avions.ListCount - 1
            DoCmd.RunSQL "UPDATE Avions SET FamA=null Where Avions.Type='" & Me.list_avions.ItemData(i) & "'" 'si on supprime juste la famille dans la table famille avions, cela supprimera également toute les lignes d'avions relatives a cette famille, donc on change d'abord leur nom de famille afin que ces avions ne soient pas supprimés de la base
            Debug.Print
        Next i
        DoCmd.RunSQL "Delete * From [Familles Avion] Where [Familles Avion].NomFamilleA= '" & Me.FamilleA_txt & "'"
        Debug.Print
        Annuler_nom_btn_Click
        DoCmd.Close
        DoCmd.OpenForm "F_Avions_Famille"
        Forms.F_Avions_Famille.list_avions.SetFocus
        Forms.F_Avions_Famille.FamilleA_txt.Requery
        Forms.F_Avions_Famille.FamilleA_txt.SetFocus
    End If
    Exit_Supprimer_btn_Click:
        Exit Sub
    Err_Supprimer_btn_Click:
        Msgbox err.Description
        Resume Exit_Supprimer_btn_Click
    End Sub
    Have a nice day !
    Images attachées Images attachées  

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 632
    Points : 56 952
    Points
    56 952
    Billets dans le blog
    40
    Par défaut
    bonjour,

    normalement le problème est réglé en décochant l'option: Effacer en cascade les enregistrements correspondants

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 56
    Points
    56
    Par défaut
    Retour de vacances...

    J'avais déjà essayé, en tentant les 3 types d'options de jointures et ça ne marche pas. Et en mettant chaine vide autorisée pour FamA de la table Avions.
    Mais ca me vire les avions associés. Bizarre quand même

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 56
    Points
    56
    Par défaut PJ base exmple
    Si vous jetez un coup d'oeil à ma base exmple (table produit et table famille), et que vous trouvez une solution, qui conserverait l'intégrité réferentielle si possible, sans virer les produits associés

    C'est quand même un problème simple, mais quelque chose doit m'échapper

    Je pense avoir tout essayer. Si on a coché uniquement intégrité réferentielle et mettre a jour les champs, quand je supprime une famille, je reçois le message "Impossible de supprimer ou de modifier l'enregistrement car la table "produit" comprend des enregistrements connexes"
    Fichiers attachés Fichiers attachés

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 632
    Points : 56 952
    Points
    56 952
    Billets dans le blog
    40
    Par défaut
    re,

    Avec l’intégrité référentielle, si tu veux supprimer une famille (sic !) en conservant tous les avions, il faut qu’aucun avion ne référence cette famille (sinon un avion pourrait référencer une famille qui n’existe plus ce qui n’est pas possible avec l’IR), …
    donc au besoin en mettant la clé étrangère à NULL (l’avion n’a plus de famille référencée).

    C’est quand même bizarre de vouloir faire ça ! Même si la famille Airbus disparaissait un jour, un A380 restera quand même un Airbus jusqu’à la fin de sa vie, non ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 56
    Points
    56
    Par défaut Ok
    Bonjour,
    Merci d'avoir suivi la discussion f-leb, c'est sympa de ta part
    Donc au final je garde ma solution d'origine en VBA. Cela ne peut donc fonctionner qu'en mode "formulaire" pour l'utilisateur.

    Mais je voulais savoir s'il y a avait une solution qui m'échappait car, par exemple, si un utilisateur supprimait la famille Airbus LC, dans la table famille sans trop réfléchir, cela ne supprime pas en même temps l'A380 et ses + de 50 champs, et en conséquence que l'utilisateur doivent re-créer l'avion avec ses données (et toutes ses données associés comme une bibliographie etc...) et qu'il pète un plomb .
    Donc apparemment c'est impossible en IR. Cela peut relancer le débat d'un autre sujet anti/pour schéma E-R respecté avec IR.

    Merci encore f-leb , je suis sûr maintenant.

    PS : Je suis contre l'éradication des familles Mais y'en a un qui était pour ces derniers jours...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Suppression avec contrôle de lien inter-tables
    Par lodan dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/07/2006, 17h35
  2. Relation entre pls tables
    Par karidrou dans le forum Access
    Réponses: 11
    Dernier message: 08/04/2006, 11h20
  3. Réponses: 3
    Dernier message: 19/09/2005, 13h20
  4. suppression des caratères spéciaux dans une table
    Par syl221 dans le forum Access
    Réponses: 6
    Dernier message: 31/08/2005, 09h20
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

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