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

Comment puis-je stocker un tableau de valeurs booléennes dans une base de données MySql ?

Si vous cherchez un moyen de le faire d'une manière qui soit consultable, alors non.

Quelques méthodes de recherche (impliquant plus d'une colonne et/ou table) :

  • Utilisez un tas de SET Colonnes. Vous êtes limité à 64 éléments (activés/désactivés) dans un ensemble, mais vous ne pouvez probablement pas trouver un moyen de les regrouper.
  • Utilisez 3 tableaux :Items (id, ...), FlagNames(id, name) et un tableau croisé dynamique ItemFlags(item_id, flag_id). Vous pouvez ensuite rechercher des éléments avec joins .

Si vous n'avez pas besoin qu'il soit consultable, tout ce dont vous avez besoin est une méthode pour sérialiser vos données avant de les mettre dans la base de données, et les désérialiser lorsque vous les extrayez, puis utilisez une colonne char ou varchar.

  • Utilisez les fonctionnalités intégrées à votre langage (sérialisation/désérialisation de PHP).
  • Concaténer une série de caractères "y" et "n".
  • Compressez vos valeurs dans une chaîne (8 bits par caractère) dans le client avant d'appeler la base de données MySQL, et décompressez-les lors de la récupération des données hors de la base de données. Il s'agit du mécanisme de stockage le plus efficace (si toutes les lignes sont identiques, utilisez char[x], et non varchar[x]) au détriment des données non consultables et d'un code légèrement plus compliqué.