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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    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 chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    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 actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    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 chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    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 actif
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    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: 30/01/2006, 23h56
  2. Probleme : je ne peut pas acceder a mes tables
    Par luciemacherie dans le forum Oracle
    Réponses: 3
    Dernier message: 16/01/2006, 10h21
  3. Réponses: 15
    Dernier message: 30/06/2005, 16h35
  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, 11h33
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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