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 :

Assurer cohérence de mes tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut Assurer cohérence de mes tables
    Bonjour,

    Je sais que le titre n'est pas très explicite mais sa devrait être assez compréhensible avec ce qui va suivre.

    J'ai 3 tables que j'utilise afin d'assigner des Tags à mes articles. : tag, post, post_tag

    Seulement 2 sont directements concernées par ce qui suit.
    Lorsque je crée un Tag, il va enregistrer l'id et son nom dans la table tag.
    Lorsque j'assigne un tag à un article, rentre en compte la table post_tag qui sert d'intermédiaire.

    Cette dernière comprend 3 champs : post_tag_id | post_tag_post_id | post_tag_tag_id

    Je pense que c'est assez clair avec les noms.
    Maintenant mon souci et de savoir si il y a moyen de pouvoir empêcher que le tag avec l'id n°2 aille 2x ou plus dans le même article.

    Car avec le système imaginé, pour le moment, il est possible de faire ceci :

    post_tag_id | post_tag_post_id | post_tag_tag_id : 1 - 1 - 1
    post_tag_id | post_tag_post_id | post_tag_tag_id : 2 - 1 - 1

    Et lorsque je liste, par exemple, le nombre de fois que mes tags sont utilisés dans tous mes articles, je me retrouverai avec un doublon.

    MySql permet-il de régler ce problème ou il faut passer par PHP ? Encore que dans les 2 cas, je suis un peu paumé

    J'espère avoir été assez compréhensible, n'étant pas un expert PHP, MySql, on peut pas tout savoir faire , je viens ici demander un petit coup de pouce, à première vue, je pense pas que c'est ultra-complexe.

    Merci à ceux qui prendront le temps de m'apporter des explications.

    Mikaweb

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    tu peut avoir seulement 2 champs dans ta table post_tag, qui seront
    post_tag_post_id et post_tag_tag_id, les 2 composant la clé primaire de la table, un doublon sera refusé.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    J'avoue ne pas trop comprendre...

    post_tag_post_id | post_tag_tag_id
    1 | 1
    1 | 1

    Ca reste possible ?!
    On ne peut mettre qu'une seule clé primaire non ?

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    non, en créant ta table comme indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     CREATE TABLE `post_tag` (
    `post_tag_post_id` INT NOT NULL ,
    `post_tag_tag_id` INT NOT NULL ,
    PRIMARY KEY ( `post_tag_post_id` , `post_tag_tag_id` )
    ) ENGINE = MYISAM
    un doublon sera refusé automatiquement.
    une seule clé primaire, oui, mais possible sur plusieurs champs.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Je te remercie de ton explication/exemple.
    J'ai appris quelque chose sur ce coup.

    Merci beaucoup.

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

Discussions similaires

  1. [10 - XP] Faire un "start" pour créer mes tables
    Par noixennoc dans le forum Oracle
    Réponses: 8
    Dernier message: 31/01/2006, 00h56
  2. Probleme : je ne peut pas acceder a mes tables
    Par luciemacherie dans le forum Oracle
    Réponses: 3
    Dernier message: 16/01/2006, 11h21
  3. Réponses: 15
    Dernier message: 30/06/2005, 17h35
  4. comment vider mes tables a la fin
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 14/05/2005, 12h33
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 16h16

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