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 MySQL Discussion :

foreign key dans phpmyadmin


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut foreign key dans phpmyadmin
    bonjour, dans une base de donnée pour un projet ou on est obliger d'utiliser les foreign keys , j'ai le schema relationel suivant.

    oppose (Pays, idMatch, butPour, butContre)
    Pays reference equipe.Nationale.pays
    idMatch references Match.idMatch.

    donc pays et idmatch sont des cle etrangeres comme le montre bien l'image suivante



    il y a bien ecrit au dessus id REFER, bla bla....

    c'est pour remplir la base que j'ai un probleme

    mais donc ma question est que dois je mettre dans la colonne valeur pour pays et idMatch????

    je croyais que les foreign keys s'etait un lien vers une colonne d'une autre table.. je ne comprend pas tout dois je mettre le nom d'un pays?? ou bien dois je rein mettre??

    merci

    PS, je savais pas trop ou mettre ce msg, etant donné qu'on utilise phpmyadmin, je savais pas si il fallait le mettre dans mysql, php, ou SQL que l'on me pardonne si il y a erreur.


    a+++

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Je crois que tu as un problème de conception, lié à une mauvaise compréhension:

    Citation Envoyé par elekis
    je croyais que les foreign keys s'etait un lien vers une colonne d'une autre table.. je ne comprend pas tout dois je mettre le nom d'un pays?? ou bien dois je rein mettre??
    Dans une table "pays", tu mets l'identifiant du pays et le nom du pays. Après, tu fais référence à ce pays dans une autre table uniquement par l'identifiant, comme ça ça prend moins de place en BDD (un INT est plus petit qu'une chaîne).

    Après, je ne comprends pas très bien l'organisation de tes tables (ça n'est pas très logique à mon avis), surtout à quoi sert la table "oppose". Mais en gros, si tu as un match entre deux équipes, celles-ci seront référencées par leurs identifiants (clefs étrangères dans la table "match").

    Tu piges?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut
    zn fait les tables sont imposser par le relationnel que voici (on nous demande de gerer la coupe du monde 2006 en allemagne)

    http://cs.ulb.ac.be/cours/info364/projetrelationnel.pdf

    qui est lui meme basser sur un schema relationell.

    merci

    a++

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut
    je vais prendre un autre exemple.

    Jugetouche(numFIFA)
    numFIFA reference membreFIFA.numFIFA

    dois je remplir la table jugeFIFA??en fait, ce que je comprend pas, c'est que numFIFA dans MembreFIFA contient tout les numeros de tout les joueurs et de tout les arbitres et de tout les juges de touches.

    donc dans cette table, je met quoi le numFIFA de du juge de touche.
    insert jugetouche numfifa(123456)

    et alors de l'exterieur, que vois t'on ?? je veux dire, est ce que les foreign keys sont juste un moyen interne de faire un lien ?? et de l'exterieur je suis quand meme obliuger de faire select blabla, blibli from jugetouch membrefifa where jugetouche.numFIFA = membreFIFA.numFIFA.??
    devrais je faire ca, ou bien les foreign keys sont un moyen plus court ??

    autre question, en quoi les foreign keys sont un moyen de gagner de la place en memoire??

    merci

    a++

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Avertissement: Le foot est un sport dont je me désintéresse complètement. Aussi , par ignorance, il se peut que je dise pas mal de conneries sur ce sujet (notamment au niveau des cardinalités). Veuillez ne pas en tenir rigueur.

    En effet, pour moi le foot se résume à quelques chiffres:
    - 1 ballon
    - 22 milliardaires pour courir après
    - 80.000 couillons pour remplir le stade
    - un marché de plusieurs centaines de milliards d'euros
    - tous les 4 ans on nous pète les ***** avec la Coupe du Monde
    - en Juin, je m'exhile dans un pays où y'a pas la télé...

    Voilà, après cette petite parenthèse, revenons au sujet original:


    Citation Envoyé par elekis
    je vais prendre un autre exemple.

    Jugetouche(numFIFA)
    numFIFA reference membreFIFA.numFIFA

    dois je remplir la table jugeFIFA??en fait, ce que je comprend pas, c'est que numFIFA dans MembreFIFA contient tout les numeros de tout les joueurs et de tout les arbitres et de tout les juges de touches.
    En fait, dans ta table MembreFIFA, tu as tous les membres de la FIFA (joueurs, arbitres, juges de touches, etc.). Imaginons qu'on en ait 1000. Sur ces 1000 personnes, seule une petite dizaine sont juges de touche, donc plutot que de mettre un booléen "estJugeDeTouche", on créé une table "JugeTouche" pour référencer les juges de touche.

    D'un point de vue mathématique, cela revient à dire: "l'ensemble 'JugeTouche' est inclus dans l'ensemble 'MembreFIFA'.". Pour des raisons de place évidentes (10 enregistrements concernés sur 1000), on l'implémente ainsi.

    Transposé à de la Programmation Orientée Objets, on aurait une classe abstraite "MembreFIFA" avec comme sous-classes: "JugeTouche", "Joueur", "Arbitre"... Comme on n'est pas en POO, on représente le même concept, mais avec des ensembles.

    De fait, d'un point de vue "preuve formelle", tu as des propriétés d'invariant telles que: "les ensembles 'JugeTouche', 'Joueur' et 'Arbitre' sont disjoints" (exprimé autrement: "pour tout x appartient à 'Joueur', x n'appartient ni à 'Arbitre', ni à 'JugeTouche'"). De telles propriétés d'invariant, bien qu'implicites (car exprimées nul part dans ton document) doivent cependant être respectées durant toute la durée de vie de ton Système d'Information.

    Citation Envoyé par elekis
    je suis quand meme obliuger de faire select blabla, blibli from jugetouch membrefifa where jugetouche.numFIFA = membreFIFA.numFIFA.??
    Oui, mais avec des INNER JOIN à la place.

    Pour comprendre la différence entre jointure simples (avec un WHERE) et le INNER JOIN, ainsi que la justification de l'usage des INNER JOIN par rapport aux jointures simples, voir le sujet suivant: http://www.developpez.net/forums/viewtopic.php?t=425891


    Citation Envoyé par elekis
    autre question, en quoi les foreign keys sont un moyen de gagner de la place en memoire??
    Je ne connais pas ton niveau en BDD, mais certains débutants ne sont pas à ça près de recopier les noms de joueurs dans toutes les table où un joueur apparaît. Bien sûr, c'est complètement absurde ! (et c'est pour cela qu'on a le couple clef primaire/clef étrangère)


    Voilà, je n'ai toujours pas compris à quoi sert exactement la relation oppose. Pour cela, il faudrait que je fasse un schéma complet de ta base, chose que je n'ai ni le temps, ni l'envie de faire pour le moment.

    Sinon, j'espère que mes explications t'auront aidé à comprendre le sujet. Si tu as d'autres questions, n'hésite pas à les poser. (par contre, je m'absente une partie de l'après-midi)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut

    En effet, pour moi le foot se résume à quelques chiffres:
    - 1 ballon
    - 22 milliardaires pour courir après
    - 80.000 couillons pour remplir le stade
    - un marché de plusieurs centaines de milliards d'euros
    - tous les 4 ans on nous pète les ***** avec la Coupe du Monde
    - en Juin, je m'exhile dans un pays où y'a pas la télé...

    enfin qqn qui est d'accord avec moi , ca fait plaisir de pas etre seule.


    merci pour les explications, j'ai compris,

    pour la table oppose, dans mon schema relationnele il y en a pas, et on avait rajouter une cle equipe gagnante.

    selon les assistants, c'est juste aussi, mais c'est plus simple par sql comme ca (je crois que c'est un bete point de vue) pour repondre a des question etc..etc..

    gtrand merci

    a+++

  7. #7
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par elekis
    enfin qqn qui est d'accord avec moi , ca fait plaisir de pas etre seule.
    Oh oh ! Tu es une fille, tu étudies l'informatique et tu n'aimes pas le foot: la femme idéale en gros ! Dis c'est qu'on ton numéro de téléphone? (non, je rigole: je parie que tu as déjà un copain...)

    Citation Envoyé par elekis
    selon les assistants, c'est juste aussi, mais c'est plus simple par sql comme ca (je crois que c'est un bete point de vue) pour repondre a des question etc..etc..
    Là, j'ai rien compris... Tu pourrais reformuler, stp?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 421
    Points : 189
    Points
    189
    Par défaut
    heu ,heu non, je suis un mec, c'est une erreur de frappe,


    en fait il faut assi repondre a des questions, quelle lister les tout les matchs gagnats de l'equipe JPN par exemple.

    enfin bon. voila

    a++

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

Discussions similaires

  1. Inclure foreign key dans une primary key?
    Par Timo31 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2011, 16h02
  2. [1.x] Hyperlien vers les foreign key dans les tables
    Par Maze45 dans le forum Symfony
    Réponses: 2
    Dernier message: 08/07/2011, 08h59
  3. Réponses: 4
    Dernier message: 11/03/2011, 17h04
  4. Réponses: 1
    Dernier message: 08/07/2008, 10h46
  5. foreign key dans mysql
    Par guillevin dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 08/04/2004, 15h07

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