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

 MySQL Discussion :

Clé étrangères


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut Clé étrangères
    Bonjour,

    Je sais que MySQL supporte la notion de clé étrangère. Mais quand un table est, au niveau conceptuel une rzelation père - père (comprenez 0,n - 1,n ou 0,n - 0,n), la clé primaire est la concatenation de deux clé étrangères des deux tables réliées.
    Dans mon cas j'ai
    -------- 1,n _______ 1,n --------
    | user | ---------- | realiser |---------------| action |
    --------- -------- --------

    user : table
    action :table
    realiser : CIM (association père - père) avec 1,n de chaque côté

    donc realiser est une table qui prend comme clé primaire la concaténation des clé étrangères de action et user
    ainsi
    user a comme PRIMARY KEY user_id
    action a comme PRIMARY KEY action_id

    ma question : la primarey key ne doit pas aussi être une foreign key
    quel est la primary key de realiser (normallement la concaténation de user_id et action_id) mais j'ai un problème au niveau de la syntaxe ?

    est ce que je dois avoir des foreign key (si oui c'est sur realiser ??) là dedans ou pas ??

    moi j'avais pour id de mettre user_id et action_id en foreign key et faire des references puis des on delete et on update mais je coince au niveau de la syntaxe, donc si vous pouvez m'aider ?
    merci de vos réponses

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Bah, tu es sur la bonne voie...

    1/ les 3 tables en ENGINE=INNODB
    2/ Quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table Realiser (
    r_user_id .......,
    r_action_id.....,
    PRIMARY KEY (r_user_id,r_action_id),
    FOREIGN KEY (r_user_id) REFERENCES user(user_id),
    FOREIGN KEY (r_action_id) REFERENCES action(action_id) ) TYPE=INNODB;
    Plus le ON DELETE à ta sauce
    Les colonnes correspondantes de la contrainte dans la table et la table de référence doivent avoir le même type
    Pour en savoir + : http://dev.mysql.com/doc/refman/5.0/...nstraints.html

    Enfin, attention aux mots réservés SQL comme ACTION dont l'emploi pour nommer table ou colonne est à proscrire....http://dev.mysql.com/doc/refman/5.0/...ved-words.html

  3. #3
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    quelle est la différence entre INNODB et MYISAM

    parce que par défaut le serveur SQL (mysql) me créer des tables MYISAM quand je créer les tables par pma (phpmyadmin)

  4. #4
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Innodb permet la mise en oeuvre des contraintes d'intégrité liées aux FK (et les transactions, entre autres choses).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    mais MYISAM aussi depuis MySQL 5.0, non ?

  6. #6
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Citation Envoyé par sliderman Voir le message
    mais MYISAM aussi depuis MySQL 5.0, non ?
    Ah ?
    http://dev.mysql.com/doc/refman/5.0/...ge-engine.html

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/11/2003, 15h57
  2. [EJB2.1 Entity] [BES] Mapping automatique et clés étrangères
    Par Bobby McGee dans le forum Java EE
    Réponses: 3
    Dernier message: 15/10/2003, 10h33
  3. [clé primaire et étrangère]
    Par viny dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/08/2003, 18h23
  4. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  5. [Script]prob de clés étrangères
    Par Seb7 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/07/2003, 17h37

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