Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich ein Array von booleschen Werten in einer MySql-Datenbank speichern?

Wenn Sie nach einer Möglichkeit suchen, dies durchsuchbar zu machen, dann nein.

Einige durchsuchbare Methoden (mit mehr als einer Spalte und/oder Tabelle):

  • Verwenden Sie einen Haufen SET Säulen. Sie sind auf 64 Elemente (an/aus) in einem Set beschränkt, aber Sie werden wahrscheinlich keine Möglichkeit finden, sie zu gruppieren.
  • Verwenden Sie 3 Tabellen:Items (id, ...), FlagNames(id, name) und eine Pivot-Tabelle ItemFlags(item_id, flag_id). Sie können dann mit Joins nach Elementen suchen .

Wenn Sie es nicht brauchen, um durchsuchbar zu sein, brauchen Sie nur eine Methode, um Ihre Daten zu serialisieren, bevor Sie sie in die Datenbank einfügen, und sie deserialisieren, wenn Sie sie herausziehen, und dann eine char- oder varchar-Spalte verwenden.

  • Verwenden Sie die in Ihre Sprache integrierten Funktionen (PHPs serialisieren/deserialisieren).
  • Verketten Sie eine Reihe von "y"- und "n"-Zeichen miteinander.
  • Bitpacken Sie Ihre Werte im Client in eine Zeichenfolge (8 Bit pro Zeichen), bevor Sie die MySQL-Datenbank aufrufen, und entpacken Sie sie, wenn Sie Daten aus der Datenbank abrufen. Dies ist der effizienteste Speichermechanismus (wenn alle Zeilen gleich sind, verwenden Sie char[x], nicht varchar[x]) auf Kosten der nicht durchsuchbaren Daten und etwas komplizierterem Code.