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

Best Practices für Bit-Flags in PHP

In Ihrem Modell , hat das Objekt 8 boolesche Eigenschaften. Das impliziert 8 boolesche (TINYINT für MySQL) Spalten in Ihrer Datenbanktabelle und 8 Getter/Setter-Methoden in Ihrem Objekt. Einfach und konventionell.

Überdenken Sie Ihre aktuelle Vorgehensweise. Stellen Sie sich vor, was der nächste Typ, der dieses Ding warten muss, sagen wird.

CREATE TABLE mytable (myfield BIT(8));

OK, sieht so aus, als würden hier einige Binärdaten passieren.

INSERT INTO mytable VALUES (b'00101000');

Moment, jemand sagt mir nochmal, wofür diese Einsen und Nullen stehen.

SELECT * FROM mytable;
+------------+
| mybitfield |
+------------+
| (          | 
+------------+

Was?

SELECT * FROM mytable WHERE myfield & b'00101000' = b'00100000';

WTF!? WTF!?

sticht sich selbst ins Gesicht

-- währenddessen in einem alternativen Universum, wo Feen mit Einhörnern spielen und Programmierer DBAs nicht hassen... --

SELECT * FROM mytable WHERE field3 = 1 AND field5 = 0;

Glück und Sonnenschein!