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

Requêtes et SQL. Discussion :

Requête suppression en cascade


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Points : 57
    Points
    57
    Par défaut Requête suppression en cascade
    Bonjour
    J'ai une base existante qui est structurée en étoile, à savoir
    tblPrincipale
    IDtbl1
    IDtbl2
    Idtbl3

    tbl1
    IDtbl1
    Nom

    tbl2
    IDtbl2
    Ville

    tbl3
    IDtbl3
    Pays

    je veux supprimer tous les enregistrement pour une valeur de Pays.
    Une requête suppression fait le job et efface les enregistrements concernés dans TblPrincipale mais la suppression en cascade ne s’effectue pas sur les autres tables et je me retrouve avec plein d'orphelins.

    J'aurai préférer une structure du type
    tblPrincipale
    ID1

    tbl1
    ID1
    ID2

    tbl2
    ID2
    ID3

    tbl3
    ID3

    mais je n'ai pas le choix.
    Est-ce que la structure en étoile empêche la suppression en étoile ou ai-je manqué qqch?
    Merci

    Bernard

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Le résultat que tu obtiens est pour moi normal.
    Maintenant, qu'est-ce que tu entends pas "plein d'orphelins".
    La structure d'une base de données (applications) dépend plutôt de ses règles de gestion et des contraintes. (J'ai pas compris ce que tu veux dire par structure en étoiles).

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonjour
    Je vais être plus précis.
    C'est une base de données de Toponymes (villes) avec les tables suivantes
    tblSite
    IDVille
    IDDepartement
    IDRégion
    IDPays

    tblVille
    IDVille
    NomVille

    tblDepartement
    IDDepartement
    NomDepartement

    tblRegion
    IDREgion
    NomRegion

    tblPays
    IDPays
    NomPays
    C'est ce que j’appelle une structure en étoile.

    Toutes les villes sont référencées dans la tblSite à laquelle il faut faire appel pour connaitre son pays sa région son département.
    Quand je fais une requête en supprimant un Pays avec toutes ses occurrences dans la tblSite, la suppression ne se propage pas dans les autres tables et je me retrouve avec plein d'orphelins qui n'ont plus de relation avec tblSite.

    Pour ma part j'aurai créé la base de cette façon

    tblPays
    IDPays
    NomPays
    IDRegion

    tblREgion
    IDREgion
    NomREgion
    IDDepartement

    tblDEpartement
    IDDepartement
    NomDepartement
    IDVille

    tblVille
    IDVille
    NomVille

    Merci pour ton aide

    Bernard

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Tu as a priori un problème de compréhension de la suppression en cascade.
    Normalement la suppression en cascade supprime les données d'une table fille quand on supprime la donnée correspondante de la table mère. La deuxième structure que tu proposes devrait être adéquate si tu as les bonnes relations entre les tables.
    Exemple simple entre 2 tables :
    1- Une table T_Mère avec les champs : IdMere - NomMere
    2- Une deuxième table T_Fille avec les champs : IdFille - IdMere_FK - DescrFille ; liée à la table T_Mère par les champs IdMere et IdMere_FK par une relation 1 à plusieurs et l'option suppression en cascade cochée.
    Pour supprimer toutes les données correspondants à une valeur de NomMere dans la table T_Fille, il te suffirait de faire ta requête suppression dans la table T_Mère et l'option "Suppression en cascades" va supprimer directement toutes les valeurs correspondantes dans la table T_Fille.

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    À priori la structure des relations n'a pas de conséquence sur la suppression en cascade.
    Si tu as une dépendance, l'enregistrement et supprimée.

    Peux-tu poster une copie d'écran de tes relations ?

    Et indiquer dans quelle table tu as fait la suppression.

    Quelqu'un sait-il ce que Access fait si un enregistrement est l'enfant de 2 parents et qu'on supprime seulement un des 2 parents ?
    Le problème vient peut-être de là.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme toutes base de données Access dispose du processus de contrôle d'intégrité référentielle!

    Mais comme toutes base de données encore faut il la définir.
    Je ne suis pas dns Access et je ne me rappel plus le nom de l'onglet mais c'est de ce côté là que ça ce passe!

    Bien évidemment si il n'a pas été créé, il y aura plein d'orphelin comme tu le dis.

    Il faudra faire le ménage avant car sinon ce ne sera pas possible!

    Normalement si le travail à été fait, il suffirait de créer un nouvelle requête, d'ajout deux tables disposant d'une relation pour qu'Assess le comprennent pour effectuer la relation entre les identifiants commun aux 2 tables!
    Images attachées Images attachées  
    Dernière modification par Invité ; 02/09/2016 à 11h39.

Discussions similaires

  1. Suppression en cascade
    Par music03 dans le forum Installation
    Réponses: 1
    Dernier message: 29/07/2005, 20h47
  2. suppression en cascade dans formulaire et sous-formulaire
    Par tooneygirl dans le forum Access
    Réponses: 7
    Dernier message: 20/06/2005, 14h17
  3. Requetes de suppression en cascade
    Par log2n dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 20/05/2005, 10h07
  4. Suppression en cascade
    Par log2n dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/05/2005, 20h33
  5. [debutant]suppression en cascade
    Par christophebmx dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 03/05/2005, 09h51

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