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 :

Table d'association et cle etrangere [Entité-Association]


Sujet :

Schéma

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 74
    Points : 58
    Points
    58
    Par défaut Table d'association et cle etrangere
    Bonjour a tous,

    J'ai besoins de créer des relations entre 2 tables : voiture et essuie glace,
    une voiture peut avoir plusieurs essuie glace compatible et un essuie glace peu aller sur plusieurs voitures.

    Donc j'ai creer une table :
    ---------------------
    |essuieglace_voiture|
    ---------------------
    | int id |
    | int id_voiture |
    | int id_essuieglace|
    --------------------

    id_voiture est une cle étrangère qui pointe vers `voiture`.`id`
    et
    id_essuieglaceest une cle étrangère qui pointe vers `essuieglace`.`id`
    chacune des clé n'a aucune action en update et delete.

    Le probleme est que je ne peut pas supprimer de voiture ou d'essui glace car une cle etrangere pointe dessus. Comment résoudre ce probleme ?

    Merci à tous

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    D'abord, ta table associative ne devrait pas avoir d'identifiant propre (colonne "id") ; sa clé primaire devrait être composée des deux clés étrangères "id_voiture" et "id_essuieglace".

    Le probleme est que je ne peut pas supprimer de voiture ou d'essui glace car une cle etrangere pointe dessus. Comment résoudre ce probleme ?
    La réponse est dans la phrase que tu as écrite juste avant !
    chacune des clé n'a aucune action en update et delete.
    Tu changes ça en DELETE CASCADE et la suppression d'une voiture entraînera la suppression automatique de toutes les lignes de la table associative faisant référence à cette voiture ; pareil pour les essuie-glaces.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 74
    Points : 58
    Points
    58
    Par défaut
    En effet tous fonctionne très bien maintenant.

    Merci de ton aide !

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Shakly et CinePhil,

    Citation Envoyé par CinePhil
    D'abord, ta table associative ne devrait pas avoir d'identifiant propre (colonne "id") ; sa clé primaire devrait être composée des deux clés étrangères .../...
    ==> c'est vrai, c'est plus propre.
    Personnellement, j'aime bien ce principe de créer un champ unique pour clé primaire, cela facilite parfois l'utilisation d'assistant qui ne gère les liaisons que d'une seul champ vers un autre.
    Mais, c'est vrai, c'est adapter la modélisation au processus... alors que c'est l'inverse qu'il faut faire.
    Bien entendu, la création un champ unique pour clé primaire doit, obligatoirement, s'accompagner de la création d'un index unique des "vrais" champs de clé primaire.

    Juste pour information, cela constitue-t-il une faute de conception ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Richard_35 Voir le message
    Bien entendu, la création un champ unique pour clé primaire doit, obligatoirement, s'accompagner de la création d'un index unique des "vrais" champs de clé primaire.
    C'est alors une "clé alternative".

    Juste pour information, cela constitue-t-il une faute de conception ?
    C'est effectivement une faute de conception puisque lors de la conception on ne se préoccupe en principe pas encore des outils logiciels que l'on va utiliser pour le développement.

    Je considère aussi qu'un outil qui impose de faire une telle faute est un mauvais outil !
    Quand je commençais à m'intéresser aux framework PHP, je me souviens avoir lu que c'était le cas de CakePHP et j'avais d'emblée refusé d'essayer ce framework !
    Zend Framework m'offre toute la liberté nécessaire.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [1.x] Table d'association et cle etrangere
    Par shakly dans le forum Symfony
    Réponses: 2
    Dernier message: 16/09/2011, 10h38
  2. [MySQL] Table d'association et cle etrangere
    Par shakly dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 16/09/2011, 01h12
  3. [MCD] table association ou cle etrangere
    Par horkets dans le forum Schéma
    Réponses: 5
    Dernier message: 12/02/2009, 13h04
  4. Réponses: 6
    Dernier message: 13/12/2007, 10h14
  5. tables et jointures : cles etrangeres ?
    Par herve42 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/03/2007, 07h34

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