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

PHP & Base de données Discussion :

gérer les cles etrangere avec mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par défaut gérer les cles etrangere avec mysql
    Bonjour,

    Voilà j'ai un diagramme de classe qui contient plusieurs table et il y a des tables qui héritent de certaines autres tables et je sais qu'il n'y a pas de notion d'héritage avec mysql et que la solution est les clés étrangères mais ma question est:

    1/j'ai une table client liée à produit par l'association achete produit et 5 autres tables produit1,..., produit5 qui hérite de la table produit et ces produits ne sont pas pareils ils changent d'un produit à un autre d'où la notion d'héritage et ces produit1...produit5 chacun d'entre eux concerne une et une seule société bien définie, alors à un moment donné j'aurais une table produit avec l'identifiant du client et les autre table prod1 prod2 et les sociétés bien sur alors l'identifiant de chaque produit sera une clé étrangère c'est bien cela?...

    quand je veux ajouter un produit1 est ce que idprod1 sera auto_incrémental ou non? si c'est oui cmt gérer (automatiquement) cette auto_incrémentation et l'ajout de id par rapport à l'id de la classe mère qui est produit produit????

    si ce n'est pas le cas comment faire ???

    merci bcp de m'aider....

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Un peu confus comme description !
    Lis ma signature et applique le principe qui y est énoncé.

    je sais qu'il n'y a pas de notion d'héritage avec mysql et que la solution est les clés étrangères
    Principe de l'héritage en BDD :
    Table_mere (tm_id, proprietes_communes)
    Table_fille (tf_id_table_mere, proprietes_specifiques)

    L'identifiant (clé primaire) de la table fille est également clé étrangère faisant référence à l'identifiant de la table mère.

    j'ai une table client liée à produit par l'association achete produit
    Je suis plus habitué au MCD Merise mais tu dois donc avoir ce diagramme de classes :
    Client -*----Acheter----*- Produit

    Ce qui devrait si je ne m'abuse donner une classe associative 'Acheter' et donc ce DC :
    Client -1..1----*- Acheter -*----1..1- Produit

    5 autres tables produit1,..., produit5 qui hérite de la table produit
    Là j'ai du mal à comprendre pourquoi il y a 5 classes ProduitN qui héritent de la classe Produit !

    ils changent d'un produit à un autre
    Ce sont simplement des produits différents ayant les mêmes propriétés ou ils ont des propriétés spécifiques ?

    chacun d'entre eux concerne une et une seule société bien définie
    S'ils diffèrent seulement par la société qui les fournit, tu devrais plutôt faire une association Fournir entre Société et Produit !

    alors à un moment donné j'aurais une table produit avec l'identifiant du client et les autre table prod1 prod2 et les sociétés bien sur alors l'identifiant de chaque produit sera une clé étrangère c'est bien cela?
    Euh... pas compris ce morceau de phrase !

    quand je veux ajouter un produit1 est ce que idprod1 sera auto_incrémental ou non?
    Ce qui peut être auto-incrémenté, c'est l'identifiant produit de la table mère. Par contre, l'identifiant des tables filles ne sera pas auto-incrémenté puisque c'est une clé étrangère !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 éclairé Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par défaut gerer les Clés etrangeres
    Bonsoir,

    en premier lieu je vous remercie de m'avoir répondu car j'avais vraiment besoin d'aide...

    1/ Les 5 produits on des propriétés spécifiques c'est pour cela qu'il y a 5 produits...

    2/ Pour la question de l'auto inctémentation j'ai très bien compris ce que vous voulez dire mais seulement le problème que j'ai rencontré est:

    Quand je rajoute un produit dans la table mère (la table mère est on peut dire abstraite) donc automatiquement j'ai un produit des 5 a rajouter, comment faire pour ajouter le produit alors que j'ai pas la clé que mysql à générer pour la table produit (La je parle question programmation page php et tout ça).... Merci beaucoup de m'aider....

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par zemzoum89 Voir le message
    Quand je rajoute un produit dans la table mère (la table mère est on peut dire abstraite) donc automatiquement j'ai un produit des 5 a rajouter, comment faire pour ajouter le produit alors que j'ai pas la clé que mysql à générer pour la table produit (La je parle question programmation page php et tout ça).... Merci beaucoup de m'aider....
    Il faut utiliser la fonction mysql_insert_id.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  5. #5
    Membre éclairé Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par défaut trouver le dernier Id ajouter dans une table
    Merci beaucoup pour votre aide,

    une autre et dernière question (j'espère )...
    Il y a la fonction mysql_insert_id et la fonction LAST_INSERT_ID() ou est la différence entre elles ??

    et est ce que ça marche vraiment car il se peut qu'en meme temps deux id (auto_increment) soient ajouté a la bd...

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Ces fonctions récupèrent le dernier identifiant inséré par la session MySQL en cours.

    Si deux utilisateurs ajoutent des données quasi simultanément, ils auront en principe chacun leur session et récupéreront chacun leur last_insert_id.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  7. #7
    Membre éclairé Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par défaut Différence entremysql_insert_id() et last_insert_id()
    Merci beaucoup beaucoup beaucoup pour votre aide mais vous n'avez pas répondu à la question de la différence entre les deux fonctions... Merci beaucoup de m'avoir aidé... maintenant j'ai les idées très claires...

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Tirée de la doc MySQL :
    mysql_insert_id() est mis à jour après l'exécution de requêtes INSERT et UPDATE qui génèrent une valeur AUTO_INCREMENT ou qui définissent la valeur d'une colonne à LAST_INSERT_ID(expr). See Section 12.8.4, « Fonctions diverses ».
    Notez aussi que la valeur de retour de la fonction SQL LAST_INSERT_ID() contient toujours la valeur d'AUTO_INCREMENT la plus à jour. Cette valeur n'est pas remise à zéro lors de l'exécution d'autre requêtes car elle est maintenue pour le serveur.
    Résultat obtenu en moins d'une minute après un coup de
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  9. #9
    Membre éclairé Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par défaut merci beaucoup
    Merci beaucoup pour votre aide, c'est très gentil de votre part...

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

Discussions similaires

  1. liste de cles etrangeres avec mysql
    Par loenia dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/06/2009, 10h46
  2. Gérer les string vides avec CXF
    Par PNL dans le forum Services Web
    Réponses: 0
    Dernier message: 24/03/2009, 12h18
  3. Réponses: 8
    Dernier message: 27/02/2009, 01h37
  4. Réponses: 21
    Dernier message: 01/09/2008, 11h16
  5. gérer les erreurs intebase avec delphi
    Par mondanikoffi dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/12/2004, 15h46

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