sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo almacenar una matriz de valores booleanos en una base de datos MySql?

Si está buscando una manera de hacer esto de una manera que se pueda buscar, entonces no.

Un par de métodos de búsqueda (que involucran más de 1 columna y/o tabla):

  • Utilice un montón de SET columnas Está limitado a 64 elementos (activados/desactivados) en un conjunto, pero probablemente no encontrará una manera de agruparlos.
  • Use 3 tablas:elementos (id, ...), FlagNames (id, nombre) y una tabla dinámica ItemFlags (item_id, flag_id). A continuación, puede consultar elementos con joins .

Si no necesita que se pueda buscar, entonces todo lo que necesita es un método para serializar sus datos antes de colocarlos en la base de datos, y deserializarlos cuando los extraiga, luego use una columna char o varchar.

  • Use las funciones integradas en su idioma (PHP serialize/unserialize).
  • Concatenar una serie de caracteres "y" y "n".
  • Comprima sus valores en una cadena (8 bits por carácter) en el cliente antes de realizar una llamada a la base de datos MySQL y descomprímalos cuando recupere datos de la base de datos. Este es el mecanismo de almacenamiento más eficiente (si todas las filas son iguales, use char[x], no varchar[x]) a expensas de que los datos no se pueden buscar y el código es un poco más complicado.