Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso armazenar uma matriz de valores booleanos em um banco de dados MySql?


Se você está procurando uma maneira de fazer isso de uma maneira que seja pesquisável, não.

Alguns métodos pesquisáveis ​​(envolvendo mais de 1 coluna e/ou tabela):
  • Use um monte de SET colunas. Você está limitado a 64 itens (ligados/desligados) em um conjunto, mas provavelmente consegue descobrir uma maneira de agrupá-los.
  • Use 3 tabelas:Items (id, ...), FlagNames(id, name) e uma tabela dinâmica ItemFlags(item_id, flag_id). Você pode então consultar itens com joins .

Se você não precisar que ele seja pesquisável, tudo o que você precisa é de um método para serializar seus dados antes de colocá-los no banco de dados e deserializá-los quando você os retirar e, em seguida, usar uma coluna char ou varchar.
  • Use recursos integrados ao seu idioma (serialize/unserialize do PHP).
  • Concatenar uma série de caracteres "y" e "n" juntos.
  • Empacote seus valores em uma string (8 bits por caractere) no cliente antes de fazer uma chamada para o banco de dados MySQL e descompacte-os ao recuperar dados do banco de dados. Este é o mecanismo de armazenamento mais eficiente (se todas as linhas forem iguais, use char[x], não varchar[x]) às custas dos dados não serem pesquisáveis ​​e um código um pouco mais complicado.