Partage
  • Partager sur Facebook
  • Partager sur Twitter

Clé primaire inutile ?

    12 septembre 2017 à 18:27:19

    Bonjour, je suis en train de créer un mini-game pour minecraft et je suis confronté a un problème de conception de base de donnée, je cherche a modéliser le concept suivant :

    Les joueurs ont complétés des quêtes et j'ai besoin de stocker cela en BD,  j'ai donc créer les tables suivantes :

    CREATE TABLE Player (
        Username Varchar(30) PRIMARY KEY,
        GamePlayed INTEGER DEFAULT '0',
        Kills INTEGER DEFAULT '0',
        Death INTEGER DEFAULT '0',
        Win INTEGER DEFAULT '0',
        Lose INTEGER DEFAULT '0',
        Experience INTEGER DEFAULT '0',
        MysticGold INTEGER DEFAULT '0',
        DamageDealt INTEGER DEFAULT '0',
        ArrowHitted INTEGER DEFAULT '0'
    );
    
    CREATE TABLE Quest_Completed (
        ID_QuestCompleted INTEGER AUTO_INCREMENT PRIMARY KEY,
        Username VARCHAR(30) NOT NULL REFERENCES Player(Username),
        Name VARCHAR(50) NOT NULL
    );



    Je travaille sur MySQL et j'ai remarqué que je peux bel et bien créer ma table Quest_Completed sans la clé primaire "ID_QuestCompleted" et ma question est la suivante : Est-ce que ma clé primaire dans ce cas, est vraiment utile ? Ou est-ce que j'ai simplement mal modélisé le concept de "quêtes complétés" dans ma BD ?

    Car même sans ma PK, je peux par exemple faire une sélection afin d'afficher les joueurs avec ses attributs ainsi que le nom des quêtes qu'il a accomplit.

    Le fait de me dire que ma clé primaire était inutile m'a remis en question immédiatement, merci d'avance pour vos éclaircissements.

    -
    Edité par TheNivixX 12 septembre 2017 à 18:38:03

    • Partager sur Facebook
    • Partager sur Twitter
      13 septembre 2017 à 8:31:53

      Bonjour,

      Si tu as des joueurs et des quêtes cela fait deux tables. Après si un joueur peut compléter plusieurs quêtes et qu'une quête peut être complété par plusieurs joueurs, c'est une relation n,n, donc une table de relation. Ton modèle devrait être :

      • player ( id [pk], Username [unique], etc. )
      • quest ( id [pk], name [unique], etc. )
      • quest_completed ( id_player [pk][fk], id_quest [pk][fk] )

      Pour revoir un peu les bonnes pratiques je te conseille la lecture du document "Conception BDD" (cf. ma signature).

      -
      Edité par Benzouye 13 septembre 2017 à 8:32:10

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      Clé primaire inutile ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown