Mysql
 sql >> Base de données >  >> RDS >> Mysql

Meilleur moyen de stocker un nom de catégorie à partir de php dans une table mysql

Cela dépend,

Combien de catégories aurez-vous, à quelle fréquence devrez-vous les mettre à jour ?

J'ai déjà adopté l'approche où j'ai ajouté Enum, mais j'ai également écrit une méthode statique dans une classe et y ai stocké les noms valides

class Item{


    public static function get_categories()
    {

        // only works in php >=5.4 otherwise use return array('Category1'...);
        return [
          'Category1' => 'Category1',
          'Category2' => 'Category2',
          'Category3' => 'Category3'
        ];
    }

}

En faisant ce qui précède, vous pouvez facilement accéder au tableau par Item::get_categories(), qui doit correspondre aux valeurs du champ ENUM de la base de données. Si vous avez besoin d'ajouter plus de catégories, ajoutez-les à la base de données puis à cette fonction. Vous pouvez l'utiliser pour valider le choix des utilisateurs et générer les options javascript.

Cependant !!!!

Vous mentionnez un amorçage qui remplit votre table, cela ne pourrait pas facilement mettre à jour votre ENUM pour vous.

J'utiliserais un ENUM, car

1). Il est facile à configurer2). C'est légèrement plus facile que de joindre les deux tables (mais les JOINS sont des atouts quand vous les apprenez)3). Si vous avez utilisé une table secondaire, vous devez (comme vous l'avez souligné) rechercher d'abord la valeur de cette table, puis l'insérer, ou si la catégorie a été utilisée dans une liste déroulante, utilisez l'identifiant de la catégorie et son nom pour remplir la liste déroulante (je ferais comme ça)

Réflexion finale

Les performances des deux manières (table de recherche et ENUM) vous remarquerez même la différence à moins que votre site ne soit très très occupé. Vous devrez toujours mettre à jour la table des catégories avec chaque version dans les deux sens, mais il serait légèrement plus facile d'utiliser une instruction INSERT au lieu d'une ALTER TABLE

Quelle que soit la méthode choisie, si vous ne l'aimez pas, il serait assez facile de mettre à jour votre code.

J'espère que cela vous aidera et bonne chance

Rappelez-vous Keep It Simple Stupid K.I.S.S